启动引导令牌 Secret

通过将 Secret 的 type 设置为 bootstrap.kubernetes.io/token 可以创建 启动引导令牌类型的 Secret。这种类型的 Secret 被设计用来支持节点的启动引导过程。 其中包含用来为周知的 ConfigMap 签名的令牌。

启动引导令牌 Secret 通常创建于 kube-system 名字空间内,并以 bootstrap-token-<令牌 ID> 的形式命名;其中 <令牌 ID> 是一个由 6 个字符组成 的字符串,用作令牌的标识。

以 Kubernetes 清单文件的形式,某启动引导令牌 Secret 可能看起来像下面这样:

  1. apiVersion: v1
  2. kind: Secret
  3. metadata:
  4. name: bootstrap-token-5emitj
  5. namespace: kube-system
  6. type: bootstrap.kubernetes.io/token
  7. data:
  8. auth-extra-groups: c3lzdGVtOmJvb3RzdHJhcHBlcnM6a3ViZWFkbTpkZWZhdWx0LW5vZGUtdG9rZW4=
  9. expiration: MjAyMC0wOS0xM1QwNDozOToxMFo=
  10. token-id: NWVtaXRq
  11. token-secret: a3E0Z2lodnN6emduMXAwcg==
  12. usage-bootstrap-authentication: dHJ1ZQ==
  13. usage-bootstrap-signing: dHJ1ZQ==

启动引导令牌类型的 Secret 会在 data 字段中包含如下主键:

  • token-id:由 6 个随机字符组成的字符串,作为令牌的标识符。必需。
  • token-secret:由 16 个随机字符组成的字符串,包含实际的令牌机密。必需。
  • description:供用户阅读的字符串,描述令牌的用途。可选。
  • expiration:一个使用 RFC3339 来编码的 UTC 绝对时间,给出令牌要过期的时间。可选。
  • usage-bootstrap-:布尔类型的标志,用来标明启动引导令牌的其他用途。
  • auth-extra-groups:用逗号分隔的组名列表,身份认证时除被认证为 system:bootstrappers 组之外,还会被添加到所列的用户组中。

上面的 YAML 文件可能看起来令人费解,因为其中的数值均为 base64 编码的字符串。 实际上,你完全可以使用下面的 YAML 来创建一个一模一样的 Secret:

  1. apiVersion: v1
  2. kind: Secret
  3. metadata:
  4. # 注意 Secret 的命名方式
  5. name: bootstrap-token-5emitj
  6. # 启动引导令牌 Secret 通常位于 kube-system 名字空间
  7. namespace: kube-system
  8. type: bootstrap.kubernetes.io/token
  9. stringData:
  10. auth-extra-groups: "system:bootstrappers:kubeadm:default-node-token"
  11. expiration: "2020-09-13T04:39:10Z"
  12. # 此令牌 ID 被用于生成 Secret 名称
  13. token-id: "5emitj"
  14. token-secret: "kq4gihvszzgn1p0r"
  15. # 此令牌还可用于 authentication (身份认证)
  16. usage-bootstrap-authentication: "true"
  17. # 且可用于 signing (证书签名)
  18. usage-bootstrap-signing: "true"