备份配置

通过 Backup Create 页面,您可以配置计划、启用加密和指定备份的存储位置。

How it works

定时调度

选择第一个选项可执行一次性备份,或选择第二个选项可安排定期备份。选择定期备份可让您配置以下两个字段:

  • 定时调度: 该字段接受
    • 标准 cron 表达式, 如 "0 * * * *"
    • 描述符,如 "@midnight""@every 1h30m"
  • 备份保留数量: 指定必须保留多少个备份文件。如果文件超过给定的 retentionCount,最旧的文件将被删除。默认值为 10。

备份配置 - 图2

YAML 指令名称说明
schedule提供用于调度定期备份的 cron 字符串。
retentionCount提供要保留的备份文件数量。

加密

rancher-backup 通过调用 kube-apiserver 来收集资源。apiserver 返回的对象会被解密,所以即使启用了加密静止状态,备份收集的加密对象也会是明文。

为避免以明文形式存储它们,您可以使用静态加密的相同 encryptionConfig 文件,对备份中的某些资源进行加密。

重要

你必须保存 encryptionConfig 文件,因为它不会被 rancher-backup operator 保存。执行还原时需要使用相同的加密文件。

Operator 将这个 encryptionConfig 用作 Kubernetes Secret,Secret 必须在 operator 的命名空间中。Rancher 在 cattle-resources-system 命名空间中安装了 rancher-backup operator,所以在该命名空间中创建这个 encryptionConfig secret。

对于 EncryptionConfiguration,你可以使用Kubernetes 文档中提供的示例文件

要创建 Secret,加密配置文件必须命名为encryption-provider-config.yaml,并且必须使用--from-file标志来创建这个 secret。

EncryptionConfiguration 保存在名为 encryption-provider-config.yaml 的文件中,并运行此命令:

  1. kubectl create secret generic encryptionconfig \
  2. --from-file=./encryption-provider-config.yaml \
  3. -n cattle-resources-system

Copy

这将确保 secret 中包含一个名为encryption-provider-config.yaml的密钥,operator 将使用这个密钥来获取加密配置。

加密配置秘钥 下拉菜单将过滤出并仅列出那些拥有此确切密钥的 secrets。

备份配置 - 图3

在上面的示例命令中,encryptionconfig 这个名字可以改成任何东西。

YAML 指令名称说明
encryptionConfigSecretName提供 cattle-resources-system 命名空间中包含加密配置文件的 secret 名称。

存储位置

storageLocation

如果在备份中指定了存储位置,operator 将从特定的 S3 桶中检索备份位置。如果没有指定,operator 将尝试在默认的 operator 级别的 S3 存储和 operator 级别的 PVC 存储中找到这个文件。默认的存储位置是在部署rancher-backup operator 时配置的。

选择第一个选项可以将备份存储在安装 rancher-backup chart 时配置的存储位置。第二个选项可以让您配置不同的兼容 s3 的对象存储作为存储位置。

S3

S3 存储位置包含以下配置字段:

  1. 秘钥凭证 (可选):如果你需要使用 AWS Access keys 和 Secret keys 访问 s3 桶,请使用带有密钥以及指令accessKeysecretKey的凭证创建密钥,它可以是在任何命名空间。这里有一个示例 secret。如果运行 operator 的节点在 EC2 中,并且设置了 IAM 权限,允许它们访问 S3,则此指令是不必要的,如本节所述。秘钥凭证下拉菜单列出了所有命名空间的秘钥。
  2. 桶名称: 存储备份文件的 S3 桶的名称。
  3. 区域 (可选):S3 桶所在的 AWS region。配置 MinIO 时不需要该字段。
  4. 文件夹 (可选):S3 桶中存储备份文件的文件夹名称。不支持嵌套文件夹(例如,rancher/cluster1)。
  5. 端点: 用于访问存储桶区域中的 S3 的端点
  6. 端点 CA (可选):这应该是 Base64 编码的 CA 证书。有关示例,请参阅示例 S3 兼容配置
  7. 跳过 TLS 验证 (可选):如果你不使用 TLS,则设置为 “true”。
YAML 指令名称说明是否必填
credentialSecretName如果你需要使用 AWS Access keys Secret keys 来访问 s3 桶,用你的凭证与 keys 和指令accessKeysecretKey创建一个 secret。它可以在任何命名空间中,只要你在credentialSecretNamespace中提供该命名空间。一个 secret 的例子是这里.如果运行你的 operator 的节点在 EC2 中,并且设置了 IAM 权限,允许他们访问 S3,这个指令是不必要的,如本节所述.
credentialSecretNamespace包含访问 S3 的凭证的 secret 的命名空间。如果运行 operator 的节点在 EC2 中,并且设置了 IAM 权限,允许它们访问 S3,则不需要此指令,如本节所述。
bucketName存储备份文件的 S3 桶的名称。
folderS3 桶中存储备份文件的文件夹名称,不支持嵌套文件夹(例如,rancher/cluster1)。
regionS3 桶所在的 AWS区域
endpoint用于访问存储桶区域中的 S3 的端点
endpointCA这应该是 Base64 编码的 CA 证书。有关示例,请参阅示例 S3 兼容配置。
insecureTLSSkipVerify如果你不使用 TLS,则设置为 true。

S3 存储配置示例

  1. s3:
  2. credentialSecretName: s3-creds
  3. credentialSecretNamespace: default
  4. bucketName: rancher-backups
  5. folder: rancher
  6. region: us-west-2
  7. endpoint: s3.us-west-2.amazonaws.com

Copy

MinIO 配置示例

  1. s3:
  2. credentialSecretName: minio-creds
  3. bucketName: rancherbackups
  4. endpoint: minio.35.202.130.254.sslip.io
  5. endpointCA: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURHakNDQWdLZ0F3SUJBZ0lKQUtpWFZpNEpBb0J5TUEwR0NTcUdTSWIzRFFFQkN3VUFNQkl4RURBT0JnTlYKQkFNTUIzUmxjM1F0WTJFd0hoY05NakF3T0RNd01UZ3lOVFE1V2hjTk1qQXhNREk1TVRneU5UUTVXakFTTVJBdwpEZ1lEVlFRRERBZDBaWE4wTFdOaE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBCjA4dnV3Q2Y0SEhtR2Q2azVNTmozRW5NOG00T2RpS3czSGszd1NlOUlXQkwyVzY5WDZxenBhN2I2M3U2L05mMnkKSnZWNDVqeXplRFB6bFJycjlpbEpWaVZ1NFNqWlFjdG9jWmFCaVNsL0xDbEFDdkFaUlYvKzN0TFVTZSs1ZDY0QQpWcUhDQlZObU5xM3E3aVY0TE1aSVpRc3N6K0FxaU1Sd0pOMVVKQTZ6V0tUc2Yzc3ByQ0J2dWxJWmZsVXVETVAyCnRCTCt6cXZEc0pDdWlhNEEvU2JNT29tVmM2WnNtTGkwMjdub3dGRld3MnRpSkM5d0xMRE14NnJoVHQ4a3VvVHYKQXJpUjB4WktiRU45L1Uzb011eUVKbHZyck9YS2ZuUDUwbk8ycGNaQnZCb3pUTStYZnRvQ1d5UnhKUmI5cFNTRApKQjlmUEFtLzNZcFpMMGRKY2sxR1h3SURBUUFCbzNNd2NUQWRCZ05WSFE0RUZnUVU5NHU4WXlMdmE2MTJnT1pyCm44QnlFQ2NucVFjd1FnWURWUjBqQkRzd09ZQVU5NHU4WXlMdmE2MTJnT1pybjhCeUVDY25xUWVoRnFRVU1CSXgKRURBT0JnTlZCQU1NQjNSbGMzUXRZMkdDQ1FDb2wxWXVDUUtBY2pBTUJnTlZIUk1FQlRBREFRSC9NQTBHQ1NxRwpTSWIzRFFFQkN3VUFBNElCQVFER1JRZ1RtdzdVNXRQRHA5Q2psOXlLRW9Vd2pYWWM2UlAwdm1GSHpubXJ3dUVLCjFrTkVJNzhBTUw1MEpuS29CY0ljVDNEeGQ3TGdIbTNCRE5mVVh2anArNnZqaXhJYXR2UWhsSFNVaWIyZjJsSTkKVEMxNzVyNCtROFkzelc1RlFXSDdLK08vY3pJTGh5ei93aHRDUlFkQ29lS1dXZkFiby8wd0VSejZzNkhkVFJzNwpHcWlGNWZtWGp6S0lOcTBjMHRyZ0xtalNKd1hwSnU0ZnNGOEcyZUh4b2pOKzdJQ1FuSkg5cGRIRVpUQUtOL2ppCnIvem04RlZtd1kvdTBndEZneWVQY1ZWbXBqRm03Y0ZOSkc4Y2ZYd0QzcEFwVjhVOGNocTZGeFBHTkVvWFZnclMKY1VRMklaU0RJd1FFY3FvSzFKSGdCUWw2RXBaUVpWMW1DRklrdFBwSQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t

Copy

CredentialSecret 示例

  1. apiVersion: v1
  2. kind: Secret
  3. metadata:
  4. name: creds
  5. type: Opaque
  6. data:
  7. accessKey: <Enter your base64-encoded access key>
  8. secretKey: <Enter your base64-encoded secret key>

Copy

请运行以下代码,使用 base64 在 YAML 文件中对密钥进行加密:

  1. echo -n "your_key" |base64

Copy

EC2 节点访问 S3 的 IAM 权限设置

有两种方法可以设置rancher-backup operator 使用 S3 作为备份的存储位置。

一种方法是在 Backup 自定义资源中配置credentialSecretName,它指的是可以访问 S3 的 AWS 凭证。

如果集群节点在 Amazon EC2 中,也可以通过给 EC2 节点分配 IAM 权限来设置 S3 访问,使其可以访问 S3。

要允许节点访问 S3,请按照AWS 文档中的说明为 EC2 创建一个 IAM 角色。当您向角色添加自定义策略时,添加以下权限,并将 Resource 替换为您的桶名:

  1. {
  2. "Version": "2012-10-17",
  3. "Statement": [
  4. {
  5. "Effect": "Allow",
  6. "Action": ["s3:ListBucket"],
  7. "Resource": ["arn:aws:s3:::rancher-backups"]
  8. },
  9. {
  10. "Effect": "Allow",
  11. "Action": [
  12. "s3:PutObject",
  13. "s3:GetObject",
  14. "s3:DeleteObject",
  15. "s3:PutObjectAcl"
  16. ],
  17. "Resource": ["arn:aws:s3:::rancher-backups/*"]
  18. }
  19. ]
  20. }

Copy

在创建角色并将相应的实例配置文件附加 EC2 实例后,Backup 自定义资源中的credentialSecretName指令可以留空。

示例

Backup 自定义资源,请参考本页面