我在尝试使用切换上下文时遇到了一些非常奇怪的行为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: {}
我的同事似乎没有遇到这个问题。
想法?