尝试使用kubectl
切换上下文时,我遇到了一些非常奇怪的行为。
我的配置文件声明了两个上下文;一个指向内部群集,而另一个指向Amazon EKS群集。
apiVersion: v1
kind: Config
clusters:
- cluster:
certificate-authority-data: <..>
server: <..>
name: in-house
- cluster:
certificate-authority-data: <..>
server: <..>
name: eks
contexts:
- context:
cluster: in-house
user: divesh-in-house
name: in-house-context
- context:
cluster: eks
user: divesh-eks
name: eks-context
current-context: in-house-context
preferences: {}
users:
- name: divesh-eks
user:
exec:
apiVersion: client.authentication.k8s.io/v1alpha1
command: aws-iam-authenticator
args:
- "token"
- "-i"
- "eks"
env: null
- name: divesh-in-house
user:
client-certificate-data: <..>
client-key-data: <..>
我也使用aws-iam-authenticator
对EKS集群进行身份验证。
我的问题是这个 - 只要我使用内部集群,一切正常。但是,当我执行kubectl config use-context eks-context
时,我会观察到以下行为。
kubectl get pods -n production
)向我显示了Please enter Username:
提示。我认为aws-iam-authenticator
应该为我管理身份验证。我可以确认手动运行验证器(aws-iam-authenticator token -i eks
)对我来说很好。kubectl config view
省略了divesh-eks
用户,因此输出看起来像
users:
- name: divesh-eks
user: {}
kubectl config use-context in-house-context
切换回内部集群会修改我的配置文件并删除divesh-eks-user
,因此配置文件现在包含
users:
- name: divesh-eks
user: {}
我的同事似乎没有遇到这个问题。
思考?