Как получить IP-адрес кластера kubernetes на основе AWS kops для подключения к конвейеру gitlab CICD

Я пытаюсь создать базовый конвейер 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

В целом вы будете намного счастливее, используя их встроенную интеграцию с kubernetes, но конкретный ответ на ваш вопрос — установить CLUSTER_ADDRESS в качестве уровня проекта или группы Переменная CI/CD

mdaniel 15.12.2020 17:57

Привет @mdaniel, спасибо за ссылку и информацию, однако я уже установил имя переменной среды CLUSTER_ADDRESS в этом проекте, однако здесь я не понимаю, как получить CLUSTER_ADDRESS, поскольку я работаю на AWS. Я пытался получить адрес кластера, используя «kops get -o yaml» поэтому я получил главный адрес, поэтому я использовал его, однако я все еще не подтверждаю, будет ли это хорошо или нет.

Abhirock 17.12.2020 10:04
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
304
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если ваш текущий контекст kubeconfig настроен на рассматриваемый кластер, вы можете запустить следующее, чтобы получить нужный адрес кластера:

kubectl config view --minify --raw \
    --output 'jsonpath = {.clusters[0].cluster.server}'

Вы можете добавить --context <cluster name>, если нет.

В большинстве случаев это будет https://api.<cluster name>.

Другие вопросы по теме