备份配置
你可以在备份创建页面配置调度,启用加密,并指定备份的存储位置。
调度
选择第一个选项来执行一次性备份,或选择第二个选项来安排定期备份。选择定期备份后,你可以配置以下两个字段:
- 调度:该字段支持
- 标准 cron 表达式,例如
"0 * * * *"
- 描述符,例如
"@midnight"
或"@every 1h30m"
- 标准 cron 表达式,例如
- 保留数量:指定必须保留的备份文件数量。如果文件数量超过
retentionCount
设置的值,最旧的文件将被删除。默认值为 10。
YAML 指令名称 | 描述 |
---|---|
schedule | 提供用于调度定期备份的 cron 字符串。 |
retentionCount | 提供要保留的备份文件数量。 |
加密
rancher-backup 通过调用 kube-apiserver 来收集资源。apiserver 返回的对象会被解密,所以即使启用了静态加密,备份收集的加密对象也会是明文。
为避免以明文形式存储资源,你可以使用与静态加密相同的 EncryptionConfiguration
文件来加密备份中的特定资源。
rancher-backup Operator 不会保存 EncryptionConfiguration
,因此在备份中加密对象时,你必须自行保存该文件。
例如,将 Rancher 迁移到新集群时,该文件可用于在新集群中重新创建 secret。
Operator 将 EncryptionConfiguration
用作 cattle-resources-system
命名空间中的 Kubernetes Secret,在 Secret 数据中,它位于名为 encryption-provider-config.yaml
的 key 下面。
对于 EncryptionConfiguration
,你可以使用 Kubernetes 文档中提供的示例。
为确保在 secret 中使用正确的密钥,加密配置文件必须命名为 encryption-provider-config.yaml
。下面的命令使用 --from-file
标志来创建具有正确密钥名称的 Secret。
将 EncryptionConfiguration
保存到名为 encryption-provider-config.yaml
的文件中,并运行以下命令:
kubectl create secret generic encryptionconfig \
--from-file=./encryption-provider-config.yaml \
-n cattle-resources-system
这将确保密文包含一个名为 encryption-provider-config.yaml
的 key,而且 operator 会使用该 key 来获取加密配置。
Encryption Config Secret
下拉菜单将过滤并仅列出拥有这个 key 的密文。
在上面的示例命令中,encryptionconfig
这个名称可以任意修改。
YAML 指令名称 | 描述 |
---|---|
encryptionConfigSecretName | 提供 cattle-resources-system 命名空间中包含加密配置文件的密文的名称。 |
存储位置
如果在备份中指定了 StorageLocation
,operator 将从该特定的 S3 存储桶中检索备份位置。如果没有指定,operator 将尝试在默认 operator 级别的 S3 存储和 operator 级别的 PVC 存储中查找这个文件。默认存储位置是在部署 rancher-backup
operator 时配置的。
如果你选择第一个选项,备份将存储在安装 rancher-backup Chart 时配置的存储位置中。如果你选择第二个选项,你可以配置不同的兼容 S3 的对象存储作为备份存储位置。
S3
S3 存储位置包含以下配置字段:
- 凭证密文(可选):如果你需要使用 AWS 访问密钥(access key)和密文密钥(secret key)来访问 S3 存储桶,请使用带有密钥和指令
accessKey
和secretKey
的凭证来创建密文。它可以是任意一个命名空间。你可以点击此处查看示例密文。如果运行 operator 的节点在 EC2 中,并且设置了允许它们访问 S3 的 IAM 权限,则此指令是不必要的(如本节所述)。凭证密文下拉菜单列出了所有命名空间的密文。 - 存储桶名称:存储备份文件的 S3 存储桶的名称。
- 区域(可选):S3 存储桶所在的 AWS 区域。配置 MinIO 时不需要该字段。
- 文件夹(可选):S3 存储桶中存储备份文件的文件夹名称。不支持嵌套文件夹(例如,
rancher/cluster1
)。如果此字段留空,则默认将备份文件存储在 S3 存储桶的根文件夹中。 - 端点:用于访问存储桶区域中的 S3 的端点。
- 端点 CA(可选):Base64 编码的 CA 证书。如需获取示例,请参见 S3 兼容配置示例。
- 跳过 TLS 验证(可选):如果你不使用 TLS,则设置为
true
。
YAML 指令名称 | 描述 | 必填 |
---|---|---|
credentialSecretName | 如果你需要使用 AWS 访问密钥(access key)和密文密钥(secret key)来访问 S3 存储桶,请使用带有密钥和指令 accessKey 和 secretKey 的凭证来创建密文。它可以在任何命名空间中,只要你在 credentialSecretNamespace 中提供该命名空间。点击这里查看示例密文。如果运行 operator 的节点在 EC2 中,并且设置了允许它们访问 S3 的 IAM 权限,则此指令是不必要的(如本节所述)。 | |
credentialSecretNamespace | 包含访问 S3 的凭证的密文的命名空间。如果运行 operator 的节点在 EC2 中,并且设置了允许它们访问 S3 的 IAM 权限,则此指令是不必要的(如本节所述)。 | |
bucketName | 存储备份文件的 S3 存储桶的名称。 | ✓ |
folder | S3 存储桶中存储备份文件的文件夹名称。不支持嵌套文件夹(例如, rancher/cluster1 )。如果此字段留空,则默认将备份文件存储在 S3 存储桶的根文件夹中。 | |
region | S3 存储桶所在的 AWS 区域。 | ✓ |
endpoint | 用于访问存储桶区域中的 S3 的端点。 | ✓ |
endpointCA | Base64 编码的 CA 证书。如需获取示例,请参见 S3 兼容配置示例。 | |
insecureTLSSkipVerify | 如果你不使用 TLS,则设置为 true 。 |
S3 存储配置示例
s3:
credentialSecretName: s3-creds
credentialSecretNamespace: default
bucketName: rancher-backups
folder: rancher
region: us-west-2
endpoint: s3.us-west-2.amazonaws.com
MinIO 配置示例
s3:
credentialSecretName: minio-creds
bucketName: rancherbackups
endpoint: minio.35.202.130.254.xip.io
endpointCA: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURHakNDQWdLZ0F3SUJBZ0lKQUtpWFZpNEpBb0J5TUEwR0NTcUdTSWIzRFFFQkN3VUFNQkl4RURBT0JnTlYKQkFNTUIzUmxjM1F0WTJFd0hoY05NakF3T0RNd01UZ3lOVFE1V2hjTk1qQXhNREk1TVRneU5UUTVXakFTTVJBdwpEZ1lEVlFRRERBZDBaWE4wTFdOaE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBCjA4dnV3Q2Y0SEhtR2Q2azVNTmozRW5NOG00T2RpS3czSGszd1NlOUlXQkwyVzY5WDZxenBhN2I2M3U2L05mMnkKSnZWNDVqeXplRFB6bFJycjlpbEpWaVZ1NFNqWlFjdG9jWmFCaVNsL0xDbEFDdkFaUlYvKzN0TFVTZSs1ZDY0QQpWcUhDQlZObU5xM3E3aVY0TE1aSVpRc3N6K0FxaU1Sd0pOMVVKQTZ6V0tUc2Yzc3ByQ0J2dWxJWmZsVXVETVAyCnRCTCt6cXZEc0pDdWlhNEEvU2JNT29tVmM2WnNtTGkwMjdub3dGRld3MnRpSkM5d0xMRE14NnJoVHQ4a3VvVHYKQXJpUjB4WktiRU45L1Uzb011eUVKbHZyck9YS2ZuUDUwbk8ycGNaQnZCb3pUTStYZnRvQ1d5UnhKUmI5cFNTRApKQjlmUEFtLzNZcFpMMGRKY2sxR1h3SURBUUFCbzNNd2NUQWRCZ05WSFE0RUZnUVU5NHU4WXlMdmE2MTJnT1pyCm44QnlFQ2NucVFjd1FnWURWUjBqQkRzd09ZQVU5NHU4WXlMdmE2MTJnT1pybjhCeUVDY25xUWVoRnFRVU1CSXgKRURBT0JnTlZCQU1NQjNSbGMzUXRZMkdDQ1FDb2wxWXVDUUtBY2pBTUJnTlZIUk1FQlRBREFRSC9NQTBHQ1NxRwpTSWIzRFFFQkN3VUFBNElCQVFER1JRZ1RtdzdVNXRQRHA5Q2psOXlLRW9Vd2pYWWM2UlAwdm1GSHpubXJ3dUVLCjFrTkVJNzhBTUw1MEpuS29CY0ljVDNEeGQ3TGdIbTNCRE5mVVh2anArNnZqaXhJYXR2UWhsSFNVaWIyZjJsSTkKVEMxNzVyNCtROFkzelc1RlFXSDdLK08vY3pJTGh5ei93aHRDUlFkQ29lS1dXZkFiby8wd0VSejZzNkhkVFJzNwpHcWlGNWZtWGp6S0lOcTBjMHRyZ0xtalNKd1hwSnU0ZnNGOEcyZUh4b2pOKzdJQ1FuSkg5cGRIRVpUQUtOL2ppCnIvem04RlZtd1kvdTBndEZneWVQY1ZWbXBqRm03Y0ZOSkc4Y2ZYd0QzcEFwVjhVOGNocTZGeFBHTkVvWFZnclMKY1VRMklaU0RJd1FFY3FvSzFKSGdCUWw2RXBaUVpWMW1DRklrdFBwSQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t
credentialSecret 示例
apiVersion: v1
kind: Secret
metadata:
name: creds
type: Opaque
data:
accessKey: <base64-encoded access key>
secretKey: <base64-encoded secret key>
为避免编码问题,你可以使用以下命令创建 credentialSecret
,更新 accessKey
和 secretKey
的值。
kubectl create secret generic s3-creds \
--from-literal=accessKey=<access key> \
--from-literal=secretKey=<secret key>
EC2 节点访问 S3 的 IAM 权限
有两种方法可以设置 rancher-backup
operator 来使用 S3 作为备份存储位置。
一种方法是在 Backup 自定义资源中配置 credentialSecretName
(即可以访问 S3 的 AWS 凭证)。
如果集群节点在 Amazon EC2 中,你也可以给 EC2 节点分配 IAM 权限,使其可以访问 S3。
要允许节点访问 S3,请按照 AWS 文档中的说明,为 EC2 创建一个 IAM 角色。在向角色添加自定义策略时,添加以下权限,并将 Resource
替换为你的存储桶名称:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::rancher-backups"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::rancher-backups/*"
]
}
]
}
在创建角色并将相应的实例配置文件附加 EC2 实例后,Backup 自定义资源中的 credentialSecretName
指令可以留空。
示例
如需获取 Backup 自定义资源的示例,请参见本页。