报错信息如下
stage('deploy to dev') {
steps {
input(id: 'deploy-to-dev', message: 'deploy to dev?')
sh '''
kubectl apply -f deploy/cicd-demo-dev.yaml
'''
}
}
使用这个jenkinsfile,在jenkins运行job时,执行到deploy to dev时,报错了,报错内容为/var/jenkins_home/workspace/k8s-cicd-demo@tmp/durable-c9f7af87/script.sh.copy: 6: kubectl: Permission denied
报错原因
kubectl 二进制文件根本不存在于你的 maven agent pod 中。Shell 找不到可执行文件时也会报这个错(Linux 的 exec 返回 EACCES/ENOENT 时 shell 显示为 "Permission denied")。
解决办法
在 deploy 阶段里动态安装 kubectl。
动态下载 kubectl(curl)
stage('deploy to dev') {
steps {
input(id: 'deploy-to-dev', message: 'deploy to dev?')
sh '''
curl -sLO "https://dl.k8s.io/release/v1.28.9/bin/linux/amd64/kubectl"
chmod +x kubectl
kubectl apply -f deploy/cicd-demo-dev.yaml
'''
}
}