如何获取基于AWS kops的kubernetes群集IP地址以与gitlab CICD管道连接
我正在尝试创建基本的gitlab CICD管道,该管道会将基于node.js的后端部署到基于AWS kops的k8s集群中.为此,我创建了 gitlab-ci.yml
文件,该文件将用于部署整个CICD管道,但是我对如何获取kubernetes群集IP地址感到困惑,因此我可以在gitlab-ci.yml中使用它来设置为-kubectl config set-cluster k8s --server ="$ CLUSTER_ADDRESS";
我希望 CLUSTER_ADDRESS
在gitlab-ci.yml中使用gitlab进行配置.
I am trying to create basic gitlab CICD pipeline which will deploy my node.js based backend to AWS kops based k8s cluster.For that I have created gitlab-ci.yml
file which will use for deploy whole CICD pipeline, however I am getting confused with how to get kubernetes cluster IP address so I can use it in gitlab-ci.yml to set as - kubectl config set-cluster k8s --server="$CLUSTER_ADDRESS"
where I want CLUSTER_ADDRESS
to configure with gitlab in gitlab-ci.yml.
任何帮助将不胜感激.
variables:
DOCKER_DRIVER: overlay2
REGISTRY: $CI_REGISTRY
IMAGE_TAG: $CI_REGISTRY_IMAGE
K8S_DEPLOYMENT_NAME: deployment/$CI_PROJECT_NAME
CONTAINER_NAME: $CI_PROJECT_NAME
stages:
- build
- build-docker
- deploy
build-docker:
image: docker:latest
stage: build-docker
services:
- docker:dind
tags:
- privileged
only:
- Test
script:
script:
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $REGISTRY
- docker build --network host -t $IMAGE_NAME:$IMAGE_TAG -t $IMAGE_NAME:latest .
- docker push $IMAGE_NAME:$IMAGE_TAG
- docker push $IMAGE_NAME:latest
deploy-k8s-(stage):
image:
name: kubectl:latest
entrypoint: [""]
stage: deploy
tags:
- privileged
# Optional: Manual gate
when: manual
dependencies:
- build-docker
script:
- kubectl config set-cluster k8s --server="$CLUSTER_ADDRESS"
- kubectl config set clusters.k8s.certificate-authority-data $CA_AUTH_DATA
- kubectl config set-credentials gitlab-service-account --token=$K8S_TOKEN
- kubectl config set-context default --cluster=k8s --user=gitlab-service-account --namespace=default
- kubectl config use-context default
- kubectl set image $K8S_DEPLOYMENT_NAME $CI_PROJECT_NAME=$IMAGE_TAG
- kubectl rollout restart $K8S_DEPLOYMENT_NAME
如果当前的kubeconfig上下文设置为有问题的群集,则可以运行以下命令获取所需的群集地址:
If your current kubeconfig context is set to the cluster in question, you can run the following to get the cluster address you want:
kubectl config view --minify --raw \
--output 'jsonpath={.clusters[0].cluster.server}'
如果没有,您可以添加-上下文<集群名称>
.
You can add --context <cluster name>
if not.
在大多数情况下,这将是 https://api.<集群名称>
.
In most cases this will be https://api.<cluster name>
.