У меня есть несколько различных контекстов с пространствами имен, определенных в моем кластере k8s.Используя разные конвейеры для Дженкинса, я бы хотел переключаться между ними.Идея заключается в том, чтобы: на основе ветки git выполнить развертывание в определенной среде.Чтобы сделать это, мне нужно переключиться на существующие производственные / dev / feature контексты и пространства имен.
Я хочу использовать https://wiki.jenkins.io/display/JENKINS/Kubernetes+Cli+Plugin Это пример синтаксиса для сценария Jenkins со сценарием:
Пример:
node {
stage('List pods') {
withKubeConfig([credentialsId: '<credential-id>',
caCertificate: '<ca-certificate>',
serverUrl: '<api-server-address>',
contextName: '<context-name>',
clusterName: '<cluster-name>'
]) {
sh 'kubectl get pods'
}
}
}
И, как вы можете видеть, он ничего не принимает для namespace
Это пример производственного контекста с пространством имен, который я использую:
$ kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* aws-production cluster.example.com cluster.example.com aws-production
И это результат выполнения этого шага: ![enter image description here](https://i.stack.imgur.com/XTj3W.jpg)
Как решить эту проблему?Можно ли вообще использовать пространства имен, используя упомянутый плагин?Если нет, то есть ли альтернативный способ добиться переключения контекста + пространства имен на этапе конвейера Jenkins?
РЕДАКТИРОВАТЬ: кажется, что добавление записи в .kube / config на машине Jenkins не помогает в этой проблеме.Этот плагин kubernetes-cli
для Jenkins создает изолированный контекст и не заботится о .kube / config: (
Ручное принудительное конфигурирование, в этом случае тоже не помогает;
kubectl config use-context aws-production --namespace=aws-production --kubeconfig=/home/jenkins/.kube/config