繁体   English   中英

Jenkins 和 Kubernetes 与 Helm 的集成

[英]Jenkins and Kubernetes Integration using with Helm

我想集成我们的 Jenkins 和 Kubernetes 集群,它们在不同的服务器上工作。我每个stageproduction有 2 个集群。 我已经在 stage 集群上创建了 2 个命名空间来划分developmentstage 我将我的 values.yaml 划分为如下所示。

  • valeus.dev.yaml
  • values.stage.yaml
  • values.prod.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}"
        }

您需要创建 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}"
          """
        }
      }
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM