我正在使用AWS CodePipeline来构建和部署容器到EKS集群。
看起来AWS CodePipeline不支持对EKS“仅ECS”的部署操作。我试着探索其他选项,比如使用lambda函数,我发现下面的例子用于在lambda中运行kubectl命令
https://github.com/tmuskal/lambda-kubectl
尽管如此,EKS使用aws-iam-authenticator来为kubeconfig生成令牌。不知道如何适应lambda上下文。
任何关于主题的建议都将受到高度赞赏。
我正在使用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的名称