Интеграция Дженкинса и Кубернетеса с Хелмом - PullRequest
1 голос
/ 15 января 2020

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

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

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

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

 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 Ответ

2 голосов
/ 16 января 2020

вам нужно будет создать секреты 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}"
          """
        }
      }
    }
  }
}
...