如何从Azure Devops管道连接AWS EKS群集-在KubeConfig内容中找不到群集的用户凭据

时间:2020-04-06 23:33:42

标签: amazon-web-services azure-devops amazon-eks eks azure-devops-server-2019

我必须在Microsoft Azure Devops中设置CI,才能部署和管理AWS EKS群集资源。第一步,发现很少的kubernetes任务与kubernetes集群建立连接(在我的情况下是AWS EKS),但是在Azure devops中的任务“ kubectlapply”任务中,我只能将kube配置文件或Azure订阅传递给到达集群。

就我而言,我具有kube配置文件,但我还需要传递经授权可访问AWS EKS集群的AWS用户凭证。但是,在添加新的“ k8s端点”以提供可用于访问EKS集群的AWS凭证时,任务中没有此类选项。因此,在验证与EKS群集的连接时看到以下错误。

在运行时,我可以通过管道中的envrionment变量传递AWS凭证,但不能在任务中添加kubeconfig文件并保存它。

Azure和AWS在云中扮演着重要角色,应该有多种方法可以连接任何CI平台上的AWS资源。是否有人遇到过此类问题?在Azure Devops CI中进行部署时,首先连接到AWS和EKS群集的最佳方法是什么?

在KubeConfig内容中找不到群集的用户凭据。确保凭据存在,然后重试。

enter image description here

2 个答案:

答案 0 :(得分:0)

Amazon EKS使用IAM通过适用于Kubernetes的AWS IAM Authenticator为您的Kubernetes集群提供身份验证。您可以参考以下格式更新配置文件:

apiVersion: v1
clusters:
- cluster:
    server: ${server}
    certificate-authority-data: ${cert}
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: aws
  name: aws
current-context: aws
kind: Config
preferences: {}
users:
- name: aws
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      command: aws-iam-authenticator
      env:
      - name: "AWS_PROFILE"
        value: "dev"
      args:
        - "token"
        - "-i"
        - "mycluster"

有用的链接:

答案 1 :(得分:0)

此帖子后,我使用 ServiceAccount 获得了解决方案:How to deploy to AWS Kubernetes from Azure DevOps