AWS CodePipeline并部署到EKS

问题描述 投票:1回答:1

我正在使用AWS CodePipeline来构建和部署容器到EKS集群。

看起来AWS CodePipeline不支持对EKS“仅ECS”的部署操作。我试着探索其他选项,比如使用lambda函数,我发现下面的例子用于在lambda中运行kubectl命令

https://github.com/tmuskal/lambda-kubectl

尽管如此,EKS使用aws-iam-authenticator来为kubeconfig生成令牌。不知道如何适应lambda上下文。

任何关于主题的建议都将受到高度赞赏。

aws-codepipeline aws-codebuild aws-eks
1个回答
0
投票

我正在使用Jenkins POD进行部署。

管道脚本:

pipeline {
  agent {
    kubernetes {
      label 'helm-pod'
      serviceAccount 'jenkins-helm'
      containerTemplate {
        name 'helm'
        image 'wardviaene/helm-s3'
        ttyEnabled true
        command 'cat'
      }
    }
  }
  stages {
    stage('Run helm') {
      steps {
        container('helm') {
            dir('my-app'){
                git url: '[email protected]:myrepo/my-app.git', branch: 'master', credentialsId: 'CREDENTIAL_ID'
            }
        sh '''
          HELM_BUCKET=helm-repo-dev.my-app.k8s.local
          PACKAGE=myservichart
          NAME_OVERRIDE=my-app
          ENV_OVERRIDE_FILE_PATH=my-project/helm-service-override/app-app.prod.values.yaml
          export AWS_REGION=eu-west-2

          cp -r /home/helm/.helm ~
          helm repo add metaservichart s3://${HELM_BUCKET}/charts
          IS_DEPLOYED=$(helm list |grep -E "^${NAME_OVERRIDE}" |grep DEPLOYED |wc -l| tr -s " ")
          if [ ${IS_DEPLOYED} == 0 ] ; then
            helm install --name ${NAME_OVERRIDE} -f ${VALUE_OVERRIDE_FILE_PATH} metaservichart/${PACKAGE}
          else
            helm upgrade ${NAME_OVERRIDE} -f ${VALUE_OVERRIDE_FILE_PATH} metaservichart/${PACKAGE}
          fi
          echo "deployed!"
        '''
        }
      }
    }
  }
}

CREDENTIAL ID:在Jenkins中添加github凭据并复制生成的id。

ENV_OVERRIDE_FILE_PATH:特定于环境的属性文件。

HELM_BUCKET:掌舵s3水桶

NAME_OVERRIDE:要传递给helm的名称

© www.soinside.com 2019 - 2024. All rights reserved.