Я пытаюсь создать базовый конвейер CICD gitlab, который будет развертывать мой бэкэнд на основе node.js в кластере k8s на основе AWS kops. Для этого я создал файл gitlab-ci.yml
, который будет использовать для развертывания всего конвейера CICD, однако я не понимаю, как получить IP-адрес кластера kubernetes, чтобы я мог использовать его в gitlab-ci.yml, чтобы установить как - kubectl config set-cluster k8s --server = "$CLUSTER_ADDRESS"
где я хочу CLUSTER_ADDRESS
настроить с помощью gitlab в 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
Привет @mdaniel, спасибо за ссылку и информацию, однако я уже установил имя переменной среды CLUSTER_ADDRESS в этом проекте, однако здесь я не понимаю, как получить CLUSTER_ADDRESS, поскольку я работаю на AWS. Я пытался получить адрес кластера, используя «kops get -o yaml» поэтому я получил главный адрес, поэтому я использовал его, однако я все еще не подтверждаю, будет ли это хорошо или нет.
Если ваш текущий контекст kubeconfig настроен на рассматриваемый кластер, вы можете запустить следующее, чтобы получить нужный адрес кластера:
kubectl config view --minify --raw \
--output 'jsonpath = {.clusters[0].cluster.server}'
Вы можете добавить --context <cluster name>
, если нет.
В большинстве случаев это будет https://api.<cluster name>
.
В целом вы будете намного счастливее, используя их встроенную интеграцию с kubernetes, но конкретный ответ на ваш вопрос — установить
CLUSTER_ADDRESS
в качестве уровня проекта или группы Переменная CI/CD