【发布时间】:2020-01-16 21:49:12
【问题描述】:
我想集成我们的 Jenkins 和 Kubernetes 集群,它们可以在不同的服务器上工作。我每个 stage 和 production 有 2 个集群。我已经在舞台集群上创建了 2 个名称空间来划分 development 和 stage。我划分我的 values.yaml,如下所示。
- valeus.dev.yaml
- values.stage.yaml
- values.prod.yaml
所以根据 GIT_BRANCH 的值;我想设置命名空间变量并通过helm install 命令进行部署。在这种情况下,
我的问题是,在 Jenkinsfile 中连接两个集群的最佳方式是什么
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}"
}
【问题讨论】:
-
更改helm k8s连接上下文有点痛苦,helm只是使用与kubectl相同的上下文。你可以在github.com/helm/helm/issues/4195找到一些讨论。
-
我也在努力集成 Jenkins 和 k8s。在更改上下文之前,我还需要在 Jenkins 和 Kubernetes 之间进行集成。做这个 Jenkinsfile 的最佳方法是什么?
-
您使用的是 Helm 版本 2 还是 3? Helm 3 在这方面有一些改进(--kube-context)
-
Helm 3.. 你有什么我参考的例子我找不到任何
标签: jenkins kubernetes jenkins-pipeline kubernetes-helm