我创建了一个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
添加到第二阶段脚本中,并确认该输出。
上面应该突出显示命令的实际路径以及当前版本。根据需要更正您的配置。
关于amazon-web-services - 使用Jenkins管道无法识别aws eks命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61750512/