我有以下Jenkinsfile:
node {
stage('Apply Kubernetes files') {
withKubeConfig([credentialsId: 'jenkins-deployer', serverUrl: 'https://192.168.64.2:8443']) {
sh 'kubectl apply -f '
}
}
}
运行它时,出现“ kubectl:未找到”。我将Kubernetes-cli插件安装到Jenkins,并通过kubectl create sa jenkins-deployer
生成了密钥。怎么了?
答案 0 :(得分:1)
我知道这是一个相当古老的问题,但我决定描述一个可能有用的简单解决方法。
要使用 Kubernetes CLI 插件,我们需要安装一个安装了 kubectl
的执行程序。
获得 kubectl
的一种可能方法是将其安装在 Jenkins 管道中,如下面的截图所示:
注意:我使用 ./kubectl get pods
列出默认命名空间中的所有 Pod。此外,您可能需要更改 kubectl
版本 (v1.20.5
)。
node {
stage('List pods') {
withKubeConfig([credentialsId: 'kubernetes-config']) {
sh 'curl -LO "https://storage.googleapis.com/kubernetes-release/release/v1.20.5/bin/linux/amd64/kubectl"'
sh 'chmod u+x ./kubectl'
sh './kubectl get pods'
}
}
}
因此,在控制台输出中,我们可以看到它按预期工作:
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.20.5/bin/linux/amd64/kubectl
...
[Pipeline] sh
+ chmod u+x ./kubectl
[Pipeline] sh
+ ./kubectl get pods
NAME READY STATUS RESTARTS AGE
default-zhxwb 1/1 Running 0 34s
my-jenkins-0 2/2 Running 0 134m
答案 1 :(得分:0)
您从shellscript步骤调用kubectl
。为了做到这一点,执行构建的代理(节点)需要将kubectl作为可执行文件使用。