如何在Jenkins中设置Kubectl

4

我已经在EC2上运行了我的Jenkins并安装了kubectl。我还配置了kubectl与我在AWS中的EKS集群进行通信。

现在,我试图使用Jenkins流水线自动部署我们的应用程序到EKS。但是当Jenkins到达以下代码时:

sh "kubectl apply -f platform_api_deployment.yml"

它显示了这个错误

/var/lib/jenkins/workspace/platform-api-pipeline/kubernetes@tmp    
/durable-2696d974/script.sh: line 1: kubectl: command not found

我已经尝试手动部署,它能正常工作。


看起来在你运行脚本的系统上找不到 kubectl 命令。"我尝试手动部署,它可以正常工作。" - 你是指当你手动运行脚本时它可以工作,而不是通过 Jenkins 运行?你是否尝试提供 kubectl 的完整路径?这有帮助吗? - mario
请查看此链接:https://dev59.com/YLXna4cB1Zd3GeqPSuuU#57648458。它应该会有所帮助。 - Technext
4个回答

3

基本上,您需要一个kubeconfig文件与API服务器通信。因此,您只需要登录到安装了Jenkins的服务器,然后从其中切换到用户“可能是root”的位置,您可以在该位置执行kubectl命令并在shell上手动执行下面的命令。这些命令将把kubeconfig复制到jenkins用户根目录。完成后重新运行jenkins流水线。

sudo cp ~/.kube/config ~jenkins/.kube/
sudo chown -R jenkins: ~jenkins/.kube/

1

1
我已经在 /usr/local/bin 下安装了 kubectl。我所做的是将其安装在 /usr/bin 下,以使其全局可用。 - prix

0

你是否在不同的机器/EC2上运行Jenkins从节点?如果是,我认为您需要在从节点上安装kubectl,以便与主节点区分开来。


0

在构建镜像时,您需要在dockerfile中添加kubectl二进制文件,以便在Jenkins作业期间执行。

COPY kubectl /bin/kubectl 

在获取kubectl二进制文件后,在您的docker文件中添加此值。


1
你假设 kubectl 在当前目录中,但其位置取决于你如何安装它。 - pablochacin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接