问题 我的环境有一些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角色。
有什么想法可以避免这种行为而又不必强制取消环境变量的设置吗?
答案 0 :(得分:0)
根据文档,请“ 使用AWS CLI update-kubeconfig命令创建或更新集群的kubeconfig ”,您可以找到更多信息here和here
创建新的kubeconfig后:
将该文件路径添加到您的KUBECONFIG环境变量中,以便kubectl知道在哪里查找集群配置。。
临时类似于示例export KUBECONFIG=$KUBECONFIG:~/.kube/config-devel
或永久echo 'export KUBECONFIG=$KUBECONFIG:~/.kube/config-devel' >> ~/.bashrc
根据文档here:
在不提供任何凭证参数的情况下初始化新服务客户端时,SDK将使用默认凭证提供程序链来查找AWS凭证。 SDK使用链中的第一个提供程序,该提供程序返回无错误的凭据。默认提供程序链按以下顺序查找凭据:
- 环境变量。
- 共享凭据文件。
- 如果您的应用程序在Amazon EC2实例上运行,则为Amazon EC2的IAM角色。
默认情况下,SDK会检查AWS_PROFILE环境变量以确定要使用的配置文件。如果未设置 AWS_PROFILE 变量,则SDK使用默认配置文件。
另一方面,您可以根据需要创建任意数量的配置文件aws/credentials
。您可以找到更多信息here:
此方法允许隐式使用适当的配置文件。请注意,设置为exec流一部分的任何环境变量将优先于您环境中已设置的环境变量