Интеграция Дженкинса и Кубернетеса с Хелмом

Я хотел бы интегрировать наши кластеры Jenkins и Kubernetes, которые работают на разных серверах. У меня есть 2 кластера на stage и production . Я уже создал 2 пространства имен на кластере стадии, чтобы разделить development и stage . Я делю свои значения. Ямл, такие как ниже.

  • valeus.dev.yaml
  • values.stage.yaml
  • values.prod.yaml

Так что согласно значению GIT_BRANCH; Я хотел бы установить переменную пространства имен и развернуть с помощью команды helm install . При таких обстоятельствах

Мой вопрос заключается в том, как лучше всего подключить 2 кластера в Jenkinsfile для этого условия, поскольку для dev и test namespace мне нужно один кластер, для производства мне нужно развернуть другой кластер.

 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}"
        }

Всего 1 ответ


вам нужно будет создать секреты Jenkins, чтобы добавить оба файла kubeconfig для ваших кластеров k8s, и в операторе 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}"
          """
        }
      }
    }
  }
}

Есть идеи?

10000