[英]aws eks command not recognized using Jenkins pipeline
我创建了一个 EC2 实例,其中 Jenkins 正在运行,连接到我的 GitHub 帐户。 以下是我的 Jenkins 管道的两个步骤:
pipeline {
agent any
stages {
stage('Kubernetes cluster') {
steps {
withAWS(region:'us-west-2', credentials:'aws-kubernetes') {
sh '''
if [ ! aws cloudformation describe-stacks --region us-west-2 --stack-name eksctl-EmaJarK8sCluster-cluster ] ; then
if [ ! aws cloudformation describe-stacks --region us-west-2 --stack-name eksctl-EmaJarK8sCluster-nodegroup-standard-workers ] ; then
eksctl create cluster \
--name EmaJarK8sCluster \
--version 1.13 \
--nodegroup-name standard-workers \
--node-type t2.small \
--nodes 2 \
--nodes-min 1 \
--nodes-max 3 \
--node-ami auto \
--region us-west-2 \
--zones us-west-2a \
--zones us-west-2b \
--zones us-west-2c \
fi
fi
'''
}
}
}
stage('Configuration file cluster') {
steps {
withAWS(region:'us-west-2', credentials:'aws-kubernetes') {
sh '''
aws eks --region us-west-2 update-kubeconfig --name EmaJarK8sCluster
'''
}
}
}
}
}
第一步创建一个 Kubernetes 集群,如果它不存在,第二步为该集群创建一个配置文件。 此步骤运行良好,并创建了两个 cloudformation 堆栈和一台运行 Kubernetes 集群的 EC2 机器。
第二阶段失败并出现以下错误:
Invalid choice: 'eks', maybe you meant:
* es
在阅读了一些教程后,我发现我需要将awscli
更新到版本1.18.57
才能使用eks
命令。 所以我已经登录到我的 Jenkins 机器(不是专用于 k8s 集群的机器)并更新了awscli
。 不幸的是,这还不够。 我仍然得到同样的错误。 我可以手动将命令运行到机器 Jenkins 中,但由于某种原因,我无法通过 Jenkins 管道运行它。
有人可以帮我解决这个问题吗?
提前致谢。
您能否提供aws
命令的完整路径? 还将which aws
和aws --version
添加到第二阶段脚本,并确认 output。
上面应该突出显示命令的实际路径和当前版本。 根据需要更正您的配置。
您是否更新jenkins
代理?
如果不:
- 升级 Jenkins 到提供该模块的版本
- Jenkins 有望自动升级
jenkins-slave.exe
可执行文件- 如果发生升级,您应该能够在 Jenkins Web UI 的
Agent log
中看到消息- 升级完成后,更改将应用于下一次 Windows 服务重启
不幸的是,提供的解决方案对我不起作用。 我的目标是设置一台可以运行 Kubernetes 环境的机器,以实现蓝/绿部署。 必须使用 Jenkins 处理部署,因此我必须为 Jenkins 本身创建一个专用机器。
我按照本指南设置了所有依赖项: https://medium.com/faun/learning-kubernetes-by-doing-part-1-setting-up-eks-in-aws-50dcf7a76247
我之前犯的错误是使用brew
安装所有这些依赖项。 这导致了很多问题并污染了我的 PATH 环境变量。 我解决了它终止机器并创建一个新实例。 在这种情况下,我手动或使用 apt-get 安装了依赖项。
我必须安装的资源:
几点注意事项:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.