从Jenkins运行kubectl的问题

sczxawaw  于 2023-03-01  发布在  Jenkins
关注(0)|答案(1)|浏览(358)

我已经使用helmchart在kubernetes集群上部署了jenkins,方法如下:
https://octopus.com/blog/jenkins-helm-install-guide
我的pod和服务正在集群中运行。我尝试创建一个管道来运行一些kubectl命令。它失败了,错误如下:
java.io.IOException:error = 2,未导致此类文件或目录:java.io.IOException:无法运行程序"kubectl":错误= 2,java. base/java. lang.进程构建器. start(进程构建器. java:1128)中没有此类文件或目录
我认为这与Jenkins的Kubernetes CLI插件有关,并在这里提出了一个问题:
https://github.com/jenkinsci/kubernetes-cli-plugin/issues/108
有人建议我把kubectl安装在jenkins pod里面。
我已经运行了jenkins pod(使用helmchart部署),我已经看到了将kubectl图像二进制文件作为dockerfile的一部分的选项,但是,我使用了helmchart,不确定是否需要编辑和部署pod来添加kubectl。
您能帮助解决这个问题吗?是否有任何步骤/文档说明如何在运行的pod上安装kubectl?非常感谢您的意见,因为这个问题停止了我的一个关键项目。提前感谢。
我试着为jenkins服务帐户设置角色绑定,如下所述:
Kubernetes commands are not running inside the Jenkins container
我还没有在吊舱里面安装kubectl,请帮忙。
Jenkins管道:

kubeconfig(credentialsId: 'kube-config', serverUrl: '')
sh 'kubectl get all --all-namespaces'

(附加pod/jenkins的服务详细信息)enter image description here

vlurs2pr

vlurs2pr1#

尽管jenkins代理Pod正在kubernetes群集中运行,但jenkins代理容器本身未安装kubectl实用程序。
您可能需要构建自己的Jenkins Agent Docker映像,安装所有需要的工具,然后使用它来代替默认的Jenkins Agent。
自定义代理的停靠文件可能包含如下行:

FROM jenkins/inbound-agent:4.11-1-jdk11

USER root

RUN apt-get update \
    && apt-get install -y curl \
    && curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" \
    && chmod 755 kubectl \
    && mv kubectl /bin

USER jenkins

并在您的 Helm 值.yaml而不是默认值

agent:
  image: "jenkins/inbound-agent"
  tag: "4.11.2-4"

您可以设置

agent:
  image: "your-dockerhub-repo/custom-jenkins-agent"
  tag: "1.0.0-your-version"

相关问题