跳至主要内容

備份配置

Backup: Create 頁面讓你配置排程、啟用加密並指定備份的儲存位置。

你必須先安裝 rancher-backup operator。完成後,你可以存取 Backup: Create 頁面:

排程​

選擇第一個選項以執行一次性備份,或選擇第二個選項以排程定期備份。選擇 Recurring Backups 可讓你配置以下兩個欄位:

  • Schedule:此欄位接受
    • 標準 cron 表達式,例如 "0 * * * *"
    • 描述符,例如 "@midnight" 或 "@every 1h30m"
  • Retention Count:此值指定必須保留多少個備份檔案。如果檔案超過給定的 retentionCount,最舊的檔案將被刪除。預設值為 10。
YAML 指令名稱說明
schedule提供用於排程定期備份的 cron 字串。
retentionCount提供要保留的備份檔案數量。

ResourceSet​

雖然你可以建立自己的 ResourceSets 來備份自訂應用程式,但有兩個專門用於備份 Rancher 的 ResourceSets 由 rancher-backup operator 正式維護並預設建立。我們將它們稱為 rancher-resource-set-basic 和 rancher-resource-set-full。它們之間的區別在於是否在備份中包含 secrets。

rancher-resource-set-basic 不在備份檔案中包含任何 secrets,以保護機密資訊。你負責記錄任何 secrets 並安全地重新部署它們。

rancher-resource-set-full 在備份檔案中包含所有必要的 secrets,以確保 Rancher 在還原或遷移後繼續順利執行。為了避免以純文字儲存敏感資訊,我們強烈建議你使用強金鑰啟用加密。

YAML 指令名稱說明
resourceSetName提供 ResourceSet 的名稱以定義此備份中將包含哪些資源。

加密​

rancher-backup 透過呼叫 kube-apiserver 來收集資源。apiserver 返回的物件是解密的,所以即使啟用了靜態加密,備份收集的加密物件也會是純文字。

為了避免以純文字儲存它們,你可以使用與靜態加密相同的 EncryptionConfiguration 檔案來加密備份中的某些資源。

重要:

在備份中加密物件時,你必須儲存 EncryptionConfiguration 檔案以供將來使用,因為 rancher-backup operator 不會儲存它。

例如,當將 Rancher 遷移到新叢集時,該檔案用於在新叢集中重新建立 secret。

operator 將 EncryptionConfiguration 作為 cattle-resources-system 命名空間中的 Kubernetes Secret 使用,在 secret data 中名為 encryption-provider-config.yaml 的金鑰下。

對於 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

這將確保 secret 包含名為 encryption-provider-config.yaml 的金鑰,operator 將使用此金鑰來獲取加密配置。

Encryption Config Secret 下拉選單將過濾並僅列出具有此確切金鑰的 Secrets。

在上面的範例命令中,名稱 encryptionconfig 可以更改為任何內容。

YAML 指令名稱說明
encryptionConfigSecretName提供來自 cattle-resources-system 命名空間的 Secret 名稱,該 Secret 包含加密配置檔案。

儲存位置​

如果在 Backup 中指定了 StorageLocation,operator 將從該特定 S3 儲存桶中檢索備份位置。如果未指定,operator 將嘗試在預設的 operator 級別 S3 儲存和 operator 級別 PVC 儲存中找到此檔案。預設儲存位置在部署 rancher-backup operator 期間配置。

選擇第一個選項將此備份儲存在安裝 rancher-backup chart 時配置的儲存位置。第二個選項讓你配置不同的 S3 相容儲存提供者來儲存備份。

S3​

警告

如果你使用 S3 備份目標,請確保每個叢集都有自己的儲存桶或資料夾。Rancher 從為該叢集配置的 S3 儲存桶或資料夾中列出的任何可用快照中填充快照資訊。

S3 儲存位置包含以下配置欄位:

  1. Credential Secret(可選):如果你需要 AWS 存取金鑰或秘密金鑰來存取 S3 儲存桶,請使用你的憑證建立一個 secret,金鑰和指令命名為 accessKey 和 secretKey。secret 可以在任何命名空間中。範例 secret 在這裡。如果執行 operator 的節點在 EC2 中並被分配了存取 S3 的 IAM 權限,則此指令是不必要的。Credential Secret 下拉選單列出所有命名空間中的 secrets。
  2. Bucket Name:將儲存備份檔案的 S3 儲存桶名稱。
  3. Region(可選):S3 儲存桶所在的 AWS 區域。配置 MinIO 時不需要此欄位。
  4. Folder(可選):S3 儲存桶中將儲存備份檔案的資料夾名稱。不支援巢狀資料夾(例如 rancher/cluster1)。如果此欄位留空,預設行為是將備份檔案儲存在 S3 儲存桶的根資料夾中。
  5. Endpoint:用於在儲存桶區域中存取 S3 的端點。
  6. Endpoint CA(可選):這應該是 Base64 編碼的 CA 憑證。有關範例,請參閱範例 S3 相容配置。
  7. Skip TLS Verifications(可選):如果你不使用 TLS,則設定為 true。

YAML 指令欄位​

YAML 指令名稱說明必填
credentialSecretName如果你需要 AWS 存取金鑰或秘密金鑰來存取 S3 儲存桶,請使用你的憑證建立一個 secret,金鑰和指令命名為 accessKey 和 secretKey。secret 可以在任何命名空間中。範例 secret 在這裡。如果執行 operator 的節點在 EC2 中並被分配了存取 S3 的 IAM 權限,則此指令是不必要的。
credentialSecretNamespace包含存取 S3 憑證的 secret 的命名空間。如果執行 operator 的節點在 EC2 中並設定了允許它們存取 S3 的 IAM 權限,則此指令是不必要的,如本節所述。
bucketName將儲存備份檔案的 S3 儲存桶名稱。✓
folderS3 儲存桶中將儲存備份檔案的資料夾名稱。不支援巢狀資料夾(例如 rancher/cluster1)。如果此欄位留空,預設行為是將備份檔案儲存在 S3 儲存桶的根資料夾中。
regionS3 儲存桶所在的 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。

要允許節點存取 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 自訂資源,請參閱此頁面。