首页 > 解决方案 > 通过 Jenkins 作业将工作节点添加到集群

问题描述

https://github.com/spicysomtam/jenkins-deploy-eks-via-terraform

Jenkins 文件用于创建 EKS。如何在同一个 Jenkins 作业中自动将工作节点添加到集群

stage('Terraform init and Plan eks') {
         if (params.action  == 'create') {


            dir("infra/terraform/eks") {

                script {
                    withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', 
                    credentialsId: awsCredentialsId,
                    accessKeyVariable: 'AWS_ACCESS_KEY_ID',  
                    secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) {

                    sh """
                        export TF_CLI_ARGS_init='-backend-config="bucket=${awsS3}"'
                        terraform init -reconfigure
                        terraform workspace new ${plan} || true
                        terraform workspace select ${plan}
                        terraform plan   -out=${plan}   -var-file=${WORKSPACE}/environments/tf.tfvars
                        terraform apply ${plan}

                        terraform output config_map_aws_auth > ./config_map_aws_auth.yaml

                    """
                   }
                }
            }

            }
        }


 stage('add worker nodes'){
    def k8sImage = docker.image('pahud/eks-kubectl-docker')
    k8sImage.inside('-u 0:0') {
        withCredentials([[$class: 'AmazonWebServicesCredentialsBinding',
                          credentialsId: eksCredentialsId,
                          accessKeyVariable: 'AWS_ACCESS_KEY_ID',
                          secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) {
            sh 'AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} AWS_DEFAULT_REGION=us-west-2  CLUSTER_NAME=my-eksctl'
            sh 'aws eks --region us-west-2 update-kubeconfig --name my-eksctl'
            sh 'kubectl apply -f config_map_aws_auth.yaml'
        }
    }

}

如何存储 terraform 输出 config_map_aws_auth > ./config_map_aws_auth.yaml

这样在下一阶段我可以像这样运行 kubectl 命令 sh 'kubectl apply -f config_map_aws_auth.yaml'

标签: jenkins-pipelinekubectlterraform-provider-aws

解决方案


推荐阅读