kubectl配置使用上下文删除eks用户

时间:2018-09-17 04:34:49

标签: kubernetes kubectl amazon-eks

尝试使用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: {}
    

我的同事们似乎没有面对这个问题。

有想法吗?

1 个答案:

答案 0 :(得分:0)

该配置的exec部分已在1.10(https://github.com/kubernetes/kubernetes/pull/59495)中添加

如果您使用的kubectl版本早于该版本,它将无法识别exec插件(导致提示输入凭据),并且如果您使用它进行kubeconfig更改,则当该持久化时,将删除exec字段。变化