【发布时间】:2021-03-25 19:31:26
【问题描述】:
我正在尝试创建基本的 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 进行配置。
任何帮助将不胜感激。
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
【问题讨论】:
-
一般来说,使用他们内置的 kubernetes 集成会更开心,但您的问题的具体答案是将
CLUSTER_ADDRESS设置为项目或组级别CI/CD Variable -
嗨@mdaniel 感谢您提供链接和信息,但是我已经在该项目中设置了环境变量名称 CLUSTER_ADDRESS 但是在这里我很困惑如何获取 CLUSTER_ADDRESS,因为我在 AWS 上运行我试图获取集群地址使用“kops get -o yaml”,所以我得到了主地址,所以我使用了它,但是我仍然不能确认这是否可以。
标签: amazon-web-services kubernetes gitlab gitlab-ci