如何避免将默认密钥附加到ServiceAccount?

时间:2017-05-30 12:30:05

标签: kubernetes

我正在尝试创建一个服务帐户,无论是秘密还是我指定的秘密,无论如何,kubelet似乎总是附加默认密码。

服务帐户定义

apiVersion: v1
automountServiceAccountToken: false
kind: ServiceAccount
metadata:
  name: test
secrets:
  - name: default-token-4pbsm

提交

$ kubectl create -f service-account.yaml
serviceaccount "test" created

获取

$ kubectl get -o=yaml serviceaccount test
apiVersion: v1
automountServiceAccountToken: false
kind: ServiceAccount
metadata:
  creationTimestamp: 2017-05-30T12:25:30Z
  name: test
  namespace: default
  resourceVersion: "31414"
  selfLink: /api/v1/namespaces/default/serviceaccounts/test
  uid: 122b0643-4533-11e7-81c6-42010a8a005b
secrets:
- name: default-token-4pbsm
- name: test-token-5g3wb

如您所见,test-token-5g3wb已自动创建&在没有我指定的情况下附加到服务帐户。

据我了解,automountServiceAccountToken仅影响将这些机密安装到通过该服务帐户启动的pod中。 (?)

有什么方法可以避免创建和附加默认秘密?

版本

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.4", GitCommit:"d6f433224538d4f9ca2f7ae19b252e6fcb66a3ae", GitTreeState:"clean", BuildDate:"2017-05-19T20:41:24Z", GoVersion:"go1.8.1", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.4", GitCommit:"d6f433224538d4f9ca2f7ae19b252e6fcb66a3ae", GitTreeState:"clean", BuildDate:"2017-05-19T18:33:17Z", GoVersion:"go1.7.5", Compiler:"gc", Platform:"linux/amd64"}

1 个答案:

答案 0 :(得分:0)

您对automountServiceAccountToken的理解是正确的,它将适用于将要启动的广告连播。

自动令牌添加由令牌控制器完成。即使您编辑配置以删除令牌,它也会再次添加。

  

您必须使用 --service-account-private-key-file 选项将服务帐户私钥文件传递到控制器管理器中的令牌控制器。私钥将用于签署生成的服务帐户令牌。同样,您必须使用 --service-account-key-file 选项将相应的公钥传递给kube-apiserver。公钥将用于在身份验证期间验证令牌。

以上摘自k8s docs。所以尽量不要传递那些旗帜,但不知道该怎么做。但我不建议那样做。

this doc您也可以提供帮助。