如何将头盔图表从gitlab部署到eks?

时间:2020-04-07 20:49:50

标签: amazon-web-services gitlab-ci amazon-eks

我创建了一个kubernetes集群并将其与eks链接。

我还创建了一个舵图和.gitla-ci.yml。 我想添加一个新步骤,以使用Helm将我的应用程序部署到群集中,但是我没有找到最新的教程。所有教程都使用gitlab-auto devops。

图片托管在gitlab上。

我该怎么做才能完成这项任务?

image: docker:latest
services:
    - docker:dind

variables:
    DOCKER_DRIVER: overlay
    SPRING_PROFILES_ACTIVE: test
    USER_GITLAB: kosted
    APP_NAME: mebooks
    REPO: gara-mebooks
    MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
    MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"


stages:
    - deploy



k8s-deploy:
  stage: deploy
  image: dtzar/helm-kubectl:3.1.2
  only:
    - develop
  script:
    # Read certificate stored in $KUBE_CA_PEM variable and save it in a new file
    - echo $KUBE_URL
    - kubectl config set-cluster gara-eks-cluster --server="$KUBE_URL" --certificate-authority="$KUBE_CA_PEM"
    - kubectl get pods

在gitlab控制台中,我得到了

与服务器localhost:8080的连接被拒绝-您是否已 指定正确的主机或端口?运行after_script 00:01上传 作业失败的工件00:02错误:作业失败:退出代码1

2 个答案:

答案 0 :(得分:1)

这里我添加了我的方法,它是通用的,可以在没有 AWS CLI 的任何 K8S 环境中使用。

首先,您需要将您的 Kube Config 转换为 base64 字符串:

cat ~/.kube/config | base64

将结果字符串作为变量添加到项目/组的 CI/CD 管道设置中。在我的示例中,我使用了 kube_configRead more on how to add variables here.

这是我的 CI YAML 文件:

stages:
  # - build
  # - test
  - deploy

variables:
  KUBEFOLDER: /root/.kube
  KUBECONFIG: $KUBEFOLDER/config


k8s-deploy-job: 
  stage: deploy
  image: dtzar/helm-kubectl:3.5.0
  before_script:
    - mkdir ${KUBEFOLDER}
    - echo ${kube_config} | base64 -d > ${KUBECONFIG}
    - helm version
    - helm repo update
  script:
    - echo "Deploying application..."
    - kubectl get pods
    #- helm upgrade --install my-chart ./my-chart-folder
    - echo "Application successfully deployed."

灵感来自: https://about.gitlab.com/blog/2017/09/21/how-to-create-ci-cd-pipeline-with-autodeploy-to-kubernetes-using-gitlab-and-helm/

答案 1 :(得分:0)

1-从AWS控制台在IAM上创建arn角色或用户 2-连接到堡垒,并在ConfigMap aws-auth中添加arn角色/用户 您可以按照以下说明了解其工作原理(您不是群集段落的创建者):https://aws.amazon.com/fr/premiumsupport/knowledge-center/eks-api-server-unauthorized-error/ 3-如果您是创建的用户,则只需在gitlab ci中添加它:

k8s-deploy:
  stage: deploy
  image: you need an image with aws + kubectl + helm
  only:
    - develop
  script:
    - aws --version
    - aws --profile default configure set aws_access_key_id "your access id"
    - aws --profile default configure set aws_secret_access_key "your secret"
    - helm version
    - aws eks update-kubeconfig --name NAME-OF-YOUR-CLUSTER --region eu-west-3
    - helm upgrade init
    - helm upgrade --install my-chart ./my-chart-folder

如果您创建了一个用户角色说明,则只需执行以下操作:

   k8s-deploy:
      stage: deploy
      image: you need an image with aws + kubectl + helm
      only:
        - develop
      script:
        - aws --version
        - helm version
        - aws eks update-kubeconfig --name NAME-OF-YOUR-CLUSTER --region eu-west-3 -arn
        - helm upgrade init
        - helm upgrade --install my-chart ./my-chart-folder