sem*_*ral 5 jenkins kubernetes jenkins-pipeline kubernetes-helm
我想集成我们的 Jenkins 和 Kubernetes 集群,它们在不同的服务器上工作。我每个stage和2 个集群production。我已经在舞台集群上创建了 2 个命名空间来划分development和stage。我将我的 values.yaml 划分为如下所示。
所以根据 GIT_BRANCH 值;我想设置命名空间变量并通过helm install命令进行部署。在这种情况下,
我的问题是,在这种情况下,在 Jenkinsfile 中连接 2 个集群的最佳方法是什么,因为开发和测试命名空间我需要一个集群,生产我需要部署另一个集群。
stage('deploy') {
steps {
script {
if (env.GIT_BRANCH == "origin/master") {
def namepsace="dev"
sh "helm upgrade --install -f values.dev.yaml --namespace ${namespace}"
} else if (env.GIT_BRANCH =="origin/test"){
def namepsace="stage"
sh "helm upgrade --install -f values.stage.yaml --namespace ${namespace}"
} else {
def namepsace="prod"
sh "helm upgrade --install -f values.prod.yaml --namespace ${namespace}"
}
Run Code Online (Sandbox Code Playgroud)
您需要创建 Jenkins 密钥来为您的 k8s 集群添加两个 kubeconfig 文件,并在 if 语句中加载适合您环境的 kubeconfig
例如使用上面的代码
stage('deploy') {
steps {
script {
if (env.GIT_BRANCH == "origin/master") {
def namepsace="dev"
withCredentials([file(credentialsId: 'kubeconfig-dev', variable: 'config')]) {
sh """
export KUBECONFIG=\${config}
helm upgrade --install -f values.dev.yaml --namespace ${namespace}"
"""
}
} else if (env.GIT_BRANCH =="origin/test"){
def namepsace="stage"
withCredentials([file(credentialsId: 'kubeconfig-stage', variable: 'config')]) {
sh """
export KUBECONFIG=\${config}
helm upgrade --install -f values.dev.yaml --namespace ${namespace}"
"""
}
} else {
def namepsace="prod"
withCredentials([file(credentialsId: 'kubeconfig-prod', variable: 'config')]) {
sh """
export KUBECONFIG=\${config}
helm upgrade --install -f values.dev.yaml --namespace ${namespace}"
"""
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1209 次 |
| 最近记录: |