未列出服务帐户密码。如何解决?
Service account secret is not listed. How to fix it?
我已经使用 kubectl create serviceaccount sa1
创建了服务帐户。然后我使用 kubectl get serviceaccount sa1 -oyaml
命令获取服务帐户信息。但它 return 如下所示。
apiVersion: v1
kind: ServiceAccount
metadata:
creationTimestamp: "2022-05-16T08:03:50Z"
name: sa1
namespace: default
resourceVersion: "19651"
uid: fdddacba-be9d-4e77-a849-95ca243781cc
我需要得到,
secrets:
- name: <secret>
部分。但这不是 return 秘密。如何解决?
在 Kubernetes 1.24 中,不再自动生成 ServiceAccount 令牌密码。见 "Urgent Upgrade Notes" in the 1.24 changelog file:
The LegacyServiceAccountTokenNoAutoGeneration
feature gate is beta, and enabled by default. When enabled, Secret API objects containing service account tokens are no longer auto-generated for every ServiceAccount. Use the TokenRequest API to acquire service account tokens, or if a non-expiring token is required, create a Secret API object for the token controller to populate with a service account token by following this guide. (#108309, @zshihang)
这意味着,在 Kubernetes 1.24 中,您需要 manually create the Secret; data
字段中的 token
键将自动为您设置。
apiVersion: v1
kind: Secret
metadata:
name: sa1-token
annotations:
kubernetes.io/service-account.name: sa1
type: kubernetes.io/service-account-token
由于您是手动创建机密,因此您知道它的 name:
并且不需要在 ServiceAccount 对象中查找它。
这种方法在早期版本的 Kubernetes 中应该也能正常工作。
我已经使用 kubectl create serviceaccount sa1
创建了服务帐户。然后我使用 kubectl get serviceaccount sa1 -oyaml
命令获取服务帐户信息。但它 return 如下所示。
apiVersion: v1
kind: ServiceAccount
metadata:
creationTimestamp: "2022-05-16T08:03:50Z"
name: sa1
namespace: default
resourceVersion: "19651"
uid: fdddacba-be9d-4e77-a849-95ca243781cc
我需要得到,
secrets:
- name: <secret>
部分。但这不是 return 秘密。如何解决?
在 Kubernetes 1.24 中,不再自动生成 ServiceAccount 令牌密码。见 "Urgent Upgrade Notes" in the 1.24 changelog file:
The
LegacyServiceAccountTokenNoAutoGeneration
feature gate is beta, and enabled by default. When enabled, Secret API objects containing service account tokens are no longer auto-generated for every ServiceAccount. Use the TokenRequest API to acquire service account tokens, or if a non-expiring token is required, create a Secret API object for the token controller to populate with a service account token by following this guide. (#108309, @zshihang)
这意味着,在 Kubernetes 1.24 中,您需要 manually create the Secret; data
字段中的 token
键将自动为您设置。
apiVersion: v1
kind: Secret
metadata:
name: sa1-token
annotations:
kubernetes.io/service-account.name: sa1
type: kubernetes.io/service-account-token
由于您是手动创建机密,因此您知道它的 name:
并且不需要在 ServiceAccount 对象中查找它。
这种方法在早期版本的 Kubernetes 中应该也能正常工作。