Я хотел бы интегрировать наши кластеры Jenkins и Kubernetes, которые работают на разных серверах. У меня есть 2 кластера на stage
и production
. Я уже создал 2 пространства имен на кластере стадии, чтобы разделить development
и stage
. Я делю свои значения. Ямл, такие как ниже.
Так что согласно значению 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}"
"""
}
}
}
}
}