有没有办法阻止aws-iam-authenticator使用环境中的秘密密钥?

时间:2019-05-10 23:30:30

标签: amazon-ec2 amazon-iam kubectl eks

问题 我的环境有一些AWS密钥,但我仍然希望我的kubectl使用aws-iam-authenticator针对EKS进行身份验证,以使用与ec2实例关联的角色。 我尝试在.kube / config中使用下面提到的代码段,但是aws-iam-authenticator仍然对env变量具有更高的优先级。

- name: eks
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      command: aws-iam-authenticator
      args:
      - token
      - -i
      - eks-build-systems
      env:
      - name: AWS_PROFILE
        value: ec2-role

在.aws / config文件中定义了ec2-role,它指向与实例相关联的ec2角色。

有什么想法可以避免这种行为而又不必强制取消环境变量的设置吗?

1 个答案:

答案 0 :(得分:0)

根据文档,请“ 使用AWS CLI update-kubeconfig命令创建或更新集群的kubeconfig ”,您可以找到更多信息herehere

创建新的kubeconfig后:

  

将该文件路径添加到您的KUBECONFIG环境变量中,以便kubectl知道在哪里查找集群配置。

临时类似于示例export KUBECONFIG=$KUBECONFIG:~/.kube/config-devel  或永久echo 'export KUBECONFIG=$KUBECONFIG:~/.kube/config-devel' >> ~/.bashrc

根据文档here

  

在不提供任何凭证参数的情况下初始化新服务客户端时,SDK将使用默认凭证提供程序链来查找AWS凭证。 SDK使用链中的第一个提供程序,该提供程序返回无错误的凭据。默认提供程序链按以下顺序查找凭据:

     
      
  1. 环境变量。
  2.   
  3. 共享凭据文件。
  4.   
  5. 如果您的应用程序在Amazon EC2实例上运行,则为Amazon EC2的IAM角色。
  6.   
     

默认情况下,SDK会检查AWS_PROFILE环境变量以确定要使用的配置文件。如果未设置 AWS_PROFILE 变量,则SDK使用默认配置文件

另一方面,您可以根据需要创建任意数量的配置文件aws/credentials。您可以找到更多信息here

  

此方法允许隐式使用适当的配置文件。请注意,设置为exec流一部分的任何环境变量将优先于您环境中已设置的环境变量