我有一个应用程序打包在一个 Helm 图表中。我有Jenkins CI运行在Kubernetes集群上。我想使用Jenkins声明性管道发布我的应用程序。为此,我安装了Jenkins Kubernetes插件。
Kubernetes插件的配置如下:
pipeline {
agent {
kubernetes {
yaml '''
apiVersion: v1
kind: Pod
metadata:
labels:
app: jenkins-ci
spec:
serviceAccountName: jenkins-admin
containers:
- name: helm
image: alpine/helm:3.10.2
command:
- cat
tty: true
- name: kubectl
image: bitnami/kubectl:latest
command:
- cat
tty: true
'''
retries 2
}
}
...
}
它工作正常:
stage('Pull helm chart') {
steps {
container('helm') {
sh "helm pull ..."
}
}
}
但以下方法行不通:
stage('Create Docker Registry secret') {
steps {
container('kubectl') {
sh 'kubectl create ...'
}
}
}
我做错了什么?我怎么能从Jenkins管道运行“kubectl”命令?
谢谢你的帮助和建议。
1条答案
按热度按时间ljo96ir51#
在yaml中添加安全上下文
根据www.example.com中的Kubernetes插件配置https://plugins.jenkins.io/kubernetes/#plugin-content-pipeline-sh-step-hangs-when-multiple-containers-are-used,“当jnlp容器中的用户UID与其他容器中的用户UID不同时会发生这种情况。您使用的所有容器都应该具有相同的用户UID,也可以通过设置securityContext来实现”。