serviceaccount 中不会自动生成可安装的密钥和令牌

HHJ*_*HHJ 3 service-accounts kubernetes

我下载了 Kubernetes 以便与 Jenkins 集成并创建了一个 Serviceaccount,但密钥并未自动创建。

以前我记得创建Serviceaccount的时候会自动创建一个Secret并挂载Token。

如何像以前一样自动创建 Secret?

Jyo*_*ayi 6

正如 @P 所提到的......在 kubernetes 版本 1.24 中,此行为已更改,在 1.24 中默认启用LegacyServiceAccountTokenNoAutoGeneration功能门。

包含服务帐户令牌的新机密不再自动生成,并且不会自动包含在 1.24+ 中的机密中。包含服务帐户令牌的现有机密仍然可用。

从自动生成的 Secret API 对象中抓取令牌内容的 API 客户端必须开始使用TokenRequest API来获取令牌(首选,在所有支持的版本中均可用),或者如果需要基于秘密的令牌,您可以显式请求基于秘密的令牌/需要。

请参阅手动创建服务帐户 API 令牌以显式请求基于秘密的令牌。


Dan*_*ski 5

您可以将以下两个清单放入 YAML 文件并应用它们,也可以从命令行执行此操作,如下所示:

$ kubectl apply -f - <<EOF
apiVersion: v1
kind: ServiceAccount
metadata:
  name: jenkins-user
EOF


$ kubectl apply -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
  name: jenkins-user-secret
  annotations:
    kubernetes.io/service-account.name: jenkins-user
type: kubernetes.io/service-account-token
EOF
Run Code Online (Sandbox Code Playgroud)

这里我们有一个包含证书和令牌的秘密:

$ kubectl get secret
NAME               TYPE                                  DATA   AGE
jenkins-user-secret   kubernetes.io/service-account-token   3      4s
Run Code Online (Sandbox Code Playgroud)