本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

秘密加密配置

K3s 支持在静态存储时启用机密加密。首次启动服务器时,传递标志 --secrets-encryption 将自动执行以下操作:

  • 生成 AES-CBC 密钥

  • 使用生成的密钥生成加密配置文件

  • 将配置传递给 KubeAPI 作为 encryption-provider-config

无法在不重启现有服务器的情况下启用机密加密。
如果通过脚本安装,请使用 curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s sh -s - server --secrets-encryption,或使用 配置选项 中描述的其他方法。

选择加密提供程序

版本门控

自 2025 年 4 月发布以来可用:v1.30.12+k3s1,v1.31.8+k3s1,v1.32.4+k3s1,v1.33.0+k3s1。

使用 --secrets-encryption-provider 标志,您可以从以下 K3s 支持的加密提供程序中进行选择:

  • aescbc:带有 PKCS#7 填充的 AES-CBC。这是默认的提供程序。

  • secretbox:XSalsa20 和 Poly1305

迁移提供程序

您可以通过以下步骤从 aescbc 提供程序迁移到 secretbox 提供程序:

  1. 确保 secretbox 提供程序受到您的 K3s 版本的支持。

  2. 在您的 K3s 配置文件中更新/添加 secrets-encryption-provider 标志为 secretbox.

  3. 按照下面的 加密密钥轮换 部分旋转加密密钥。

生成的加密配置文件

当您使用 --secrets-encryption 启动服务器时,K3s 将在 /var/lib/rancher/k3s/server/cred/encryption-config.json 生成一个加密配置文件。

以下是使用默认 aescbc 提供程序生成的加密配置文件示例:

{
  "kind": "EncryptionConfiguration",
  "apiVersion": "apiserver.config.k8s.io/v1",
  "resources": [
    {
      "resources": [
        "secrets"
      ],
      "providers": [
        {
          "aescbc": {
            "keys": [
              {
                "name": "aescbckey",
                "secret": "xxxxxxxxxxxxxxxxxxx"
              }
            ]
          }
        },
        {
          "identity": {}
        }
      ]
    }
  ]
}

机密加密工具

K3s 包含一个实用工具 secrets-encrypt,可以自动控制以下内容:

  • 禁用/启用机密加密

  • 添加新的加密密钥

  • 轮换和删除加密密钥

  • 重新加密机密

有关更多信息,请参见 k3s secrets-encrypt 命令文档