【问题标题】:How to get AWS kops based kubernetes cluster IP address to connect with gitlab CICD pipeline如何获取基于 AWS kops 的 kubernetes 集群 IP 地址以连接 gitlab CICD 管道
【发布时间】: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


【解决方案1】:

如果您当前的 kubeconfig 上下文设置为相关集群,您可以运行以下命令来获取您想要的集群地址:

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

如果没有,您可以添加--context <cluster name>

在大多数情况下,这将是https://api.<cluster name>

【讨论】:

    猜你喜欢
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 2021-03-25
    • 2018-10-31
    相关资源
    最近更新 更多