使用REST API无法创建eks集群。

0

【以下的问题经过翻译处理】 我需要使用REST API/ansible创建一个eks cluster,但是ansible community.aws.aws_eks_cluster没有kubernetesNetworkConfig参数,我们无法在创建集群时指定serviceIpv4Cidr。

我使用以下链接创建集群,但无法在POST rest api请求中传递授权凭据, https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html uri: url: "https://eks.us-east-1.amazonaws.com/clusters"

以下为授权参数 aws_access_key: "{{ aws_access_key1 }}" aws_secret_key: "{{ aws_secret_key1 }}" X-Amz-Security-Token: "{{ security_token1 }}"

需要使用URI ansible模块(需要在URL的headers:中使用进行身份验证) 必须传递类似以下的内容: headers: Authorization: Bearer "{{a}}"

出现了无法确定要授权的服务/操作名称的AccessDeniedException错误。

profile picture
EXPERTE
gefragt vor 5 Monaten8 Aufrufe
1 Antwort
0

【以下的回答经过翻译处理】 你好,

当你向AWS发出API请求时,你必须签署请求以便AWS能够识别发送者。你需要使用你的AWS访问密钥(包括访问密钥ID和秘密访问密钥)来签署请求。

Signature Version 4(SigV4)是向通过HTTP(s)发送的AWS API请求添加身份验证信息的过程。请参阅此 文档 了解有关SigV4的更多信息。

请参阅使用签名版本4签署AWS请求文档,了解如何使用SigV4签署AWS请求。

签署过程完成后,在进行POST /clusters请求时,你需要在Authorization header中传递你的签名。

请查看AWS文档提供的示例Python代码,了解如何使用上述sigV4签署向DynamoDB API进行POST请求。

建议使用AWS SDK执行API请求到AWS服务,因为它们会为你处理签名计算过程,你不必手动完成签署过程。

我了解通过Ansible代码实现上述步骤是一项具有挑战性的任务。因此,我以下面的替代方法。

替代方法:

在你的使用情况中,可以利用eksctl(Amazon EKS的官方CLI)来执行集群创建而无需使用REST API方法。

你可以为eksctl的集群配置文件创建一个jinja2模板,并使用Ansible命令模块运行`eksctl create

您可以为 eksctl 集群配置文件创建 jinja2 模板,并使用 Ansible 命令模块运行 eksctl create cluster -f cluster.yaml 命令来创建集群。

我希望这有帮助!

profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen