jenkins-pipeline - 通过 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'
解决方案
推荐阅读
- git - 有没有办法阻止 git 完全删除文件的内容?
- sql - 从双重创建日期表
- python - 如何从多个 2d 阵列和一个 1d 阵列绘制 3d 表面?
- javascript - 如何用新行替换 json 逗号
- html - jQuery datepicker 不会更新 sessionStorage 中的值
- sql - 在 sql 中选择关于时移的列
- jquery - 如何在提交之前在 ASP.NET Core Razor 页面中创建不显眼的 AJAX?
- tensorflow - TFF:ValueError:形状(无,1)和(无,)不兼容
- asp.net - 从 asp.net 核心应用程序读取 azure 活动目录自定义域
- angular - Angular11 忽略指令