Skip to main content
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

使用Trident Protect AppVault 物件來管理儲存桶。

貢獻者 netapp-aruldeepa

Trident Protect 的儲存桶自訂資源 (CR) 稱為 AppVault。AppVault 物件是儲存桶的聲明性 Kubernetes 工作流程表示。AppVault CR 包含儲存桶在保護作業(例如備份、快照、復原作業和SnapMirror複製)中所使用的必要配置。只有管​​理員才能建立應用保險庫。

在應用程式上執行資料保護操作時,您需要手動或從命令列建立 AppVault CR。 AppVaultCR 特定於您的環境,您可以使用本頁上的範例作為建立 AppVault CR 的指南。

註 確保 AppVault CR 位於安裝了Trident Protect 的叢集上。如果 AppVault CR 不存在或您無法訪問,命令列將顯示錯誤。

配置 AppVault 身份驗證和密碼

在建立 AppVault CR 之前,請確保您選擇的 AppVault 和資料移動器可以向提供者和任何相關資源進行驗證。

資料遷移儲存庫密碼

使用 CR 或Trident Protect CLI 外掛程式建立 AppVault 物件時,您可以指定 Kubernetes 金鑰,並使用自訂密碼進行 Restic 和 Kopia 加密。如果您未指定金鑰, Trident Protect 將使用預設密碼。

  • 手動建立 AppVault CR 時,請使用 spec.dataMoverPasswordSecretRef 欄位指定金鑰。

  • 使用Trident Protect CLI 建立 AppVault 物件時,請使用 `--data-mover-password-secret-ref`用於指定密鑰的參數。

建立資料遷移儲存庫密碼金鑰

請參考以下範例建立密碼密鑰。建立 AppVault 物件時,您可以指示Trident Protect 使用此金鑰向資料移動器儲存庫進行驗證。

註
  • 根據您使用的資料傳輸工具,您只需輸入該資料傳輸工具對應的密碼即可。例如,如果您正在使用 Restic 並且將來不打算使用 Kopia,則在建立金鑰時,您可以只包含 Restic 密碼。

  • 請將密碼保存在安全的地方。您將需要它來還原同一叢集或其他叢集上的資料。如果集群或 `trident-protect`命名空間已被刪除,沒有密碼您將無法還原備份或快照。

使用 CR
---
apiVersion: v1
data:
  KOPIA_PASSWORD: <base64-encoded-password>
  RESTIC_PASSWORD: <base64-encoded-password>
kind: Secret
metadata:
  name: my-optional-data-mover-secret
  namespace: trident-protect
type: Opaque
使用 CLI
kubectl create secret generic my-optional-data-mover-secret \
--from-literal=KOPIA_PASSWORD=<plain-text-password> \
--from-literal=RESTIC_PASSWORD=<plain-text-password> \
-n trident-protect

S3 相容於儲存 IAM 權限

當您存取與 S3 相容的儲存空間(例如 Amazon S3、通用 S3)時, "StorageGrid S3" , 或者 "ONTAP S3"使用Trident Protect 時,您需要確保提供的使用者憑證具有存取儲存桶的必要權限。以下是授予使用Trident Protect 進行存取所需的最低權限的政策範例。您可以將此策略套用至管理 S3 相容儲存桶策略的使用者。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:ListBucket",
        "s3:DeleteObject"
      ],
      "Resource": "*"
    }
  ]
}

有關 Amazon S3 策略的更多信息,請參閱以下範例: "Amazon S3 文檔"

用於 Amazon S3(AWS)驗證的 EKS Pod Identity

Trident Protect 支援 EKS Pod Identity 進行 Kopia 資料移動器操作。此功能可實現對 S3 儲存桶的安全訪問,而無需將 AWS 憑證儲存在 Kubernetes 機密中。

帶有Trident保護的 EKS Pod Identity 的要求

在使用具有Trident保護的 EKS Pod Identity 之前,請確保以下事項:

  • 您的 EKS 叢集已啟用 Pod Identity。

  • 您已建立具有必要的 S3 儲存桶權限的 IAM 角色。欲了解更多信息,請參閱 "S3 相容於儲存 IAM 權限"

  • IAM 角色與下列Trident保護服務帳戶相關聯:

    • <trident-protect>-controller-manager

    • <trident-protect>-resource-backup

    • <trident-protect>-resource-restore

    • <trident-protect>-resource-delete

有關啟用 Pod 身分並將 IAM 角色與服務帳戶關聯的詳細說明,請參閱 "AWS EKS Pod Identity 文檔"

AppVault 設定 使用 EKS Pod Identity 時,請設定您的 AppVault CR。 `useIAM: true`使用標誌而不是顯式憑證:

apiVersion: protect.trident.netapp.io/v1
kind: AppVault
metadata:
  name: eks-protect-vault
  namespace: trident-protect
spec:
  providerType: AWS
  providerConfig:
    s3:
      bucketName: trident-protect-aws
      endpoint: s3.example.com
      useIAM: true

適用於雲端提供者的 AppVault 金鑰產生範例

定義 AppVault CR 時,您需要包含憑證以存取提供者託管的資源,除非您使用 IAM 驗證。如何產生憑證金鑰將根據提供者的不同而有所不同。以下是幾個提供者的命令列金鑰產生範例。您可以使用下列範例為每個雲端提供者的憑證建立金鑰。

Google雲
kubectl create secret generic <secret-name> \
--from-file=credentials=<mycreds-file.json> \
-n trident-protect
亞馬遜 S3 (AWS)
kubectl create secret generic <secret-name> \
--from-literal=accessKeyID=<objectstorage-accesskey> \
--from-literal=secretAccessKey=<amazon-s3-trident-protect-src-bucket-secret> \
-n trident-protect
微軟 Azure
kubectl create secret generic <secret-name> \
--from-literal=accountKey=<secret-name> \
-n trident-protect
通用S3
kubectl create secret generic <secret-name> \
--from-literal=accessKeyID=<objectstorage-accesskey> \
--from-literal=secretAccessKey=<generic-s3-trident-protect-src-bucket-secret> \
-n trident-protect
ONTAP S3
kubectl create secret generic <secret-name> \
--from-literal=accessKeyID=<objectstorage-accesskey> \
--from-literal=secretAccessKey=<ontap-s3-trident-protect-src-bucket-secret> \
-n trident-protect
StorageGrid S3
kubectl create secret generic <secret-name> \
--from-literal=accessKeyID=<objectstorage-accesskey> \
--from-literal=secretAccessKey=<storagegrid-s3-trident-protect-src-bucket-secret> \
-n trident-protect

AppVault 建立範例

以下是每個提供者的 AppVault 定義範例。

AppVault CR 範例

您可以使用下列 CR 範例為每個雲端提供者建立 AppVault 物件。

註
  • 您可以選擇指定一個 Kubernetes secret,其中包含 Restic 和 Kopia 儲存庫加密的自訂密碼。請參閱資料遷移儲存庫密碼了解更多。

  • 對於 Amazon S3 (AWS) AppVault 對象,您可以選擇性地指定 sessionToken,如果您使用單一登入 (SSO) 進行驗證,這將非常有用。當您為提供者產生金鑰時,將建立此令牌。適用於雲端提供者的 AppVault 金鑰產生範例

  • 對於 S3 AppVault 對象,您可以選擇性地使用下列方式指定出站 S3 流量的出口代理 URL: `spec.providerConfig.S3.proxyURL`鑰匙。

Google雲
apiVersion: protect.trident.netapp.io/v1
kind: AppVault
metadata:
  name: gcp-trident-protect-src-bucket
  namespace: trident-protect
spec:
  dataMoverPasswordSecretRef: my-optional-data-mover-secret
  providerType: GCP
  providerConfig:
    gcp:
      bucketName: trident-protect-src-bucket
      projectID: project-id
  providerCredentials:
    credentials:
      valueFromSecret:
        key: credentials
        name: gcp-trident-protect-src-bucket-secret
亞馬遜 S3 (AWS)
---
apiVersion: protect.trident.netapp.io/v1
kind: AppVault
metadata:
  name: amazon-s3-trident-protect-src-bucket
  namespace: trident-protect
spec:
  dataMoverPasswordSecretRef: my-optional-data-mover-secret
  providerType: AWS
  providerConfig:
    s3:
      bucketName: trident-protect-src-bucket
      endpoint: s3.example.com
      proxyURL: http://10.1.1.1:3128
  providerCredentials:
    accessKeyID:
      valueFromSecret:
        key: accessKeyID
        name: s3-secret
    secretAccessKey:
      valueFromSecret:
        key: secretAccessKey
        name: s3-secret
    sessionToken:
      valueFromSecret:
        key: sessionToken
        name: s3-secret
註 對於使用 Pod Identity 和 Kopia 資料移動器的 EKS 環境,您可以移除 `providerCredentials`部分並添加 `useIAM: true`在 `s3`改為配置。
微軟 Azure
apiVersion: protect.trident.netapp.io/v1
kind: AppVault
metadata:
  name: azure-trident-protect-src-bucket
  namespace: trident-protect
spec:
  dataMoverPasswordSecretRef: my-optional-data-mover-secret
  providerType: Azure
  providerConfig:
    azure:
      accountName: account-name
      bucketName: trident-protect-src-bucket
  providerCredentials:
    accountKey:
      valueFromSecret:
        key: accountKey
        name: azure-trident-protect-src-bucket-secret
通用S3
apiVersion: protect.trident.netapp.io/v1
kind: AppVault
metadata:
  name: generic-s3-trident-protect-src-bucket
  namespace: trident-protect
spec:
  dataMoverPasswordSecretRef: my-optional-data-mover-secret
  providerType: GenericS3
  providerConfig:
    s3:
      bucketName: trident-protect-src-bucket
      endpoint: s3.example.com
      proxyURL: http://10.1.1.1:3128
  providerCredentials:
    accessKeyID:
      valueFromSecret:
        key: accessKeyID
        name: s3-secret
    secretAccessKey:
      valueFromSecret:
        key: secretAccessKey
        name: s3-secret
ONTAP S3
apiVersion: protect.trident.netapp.io/v1
kind: AppVault
metadata:
  name: ontap-s3-trident-protect-src-bucket
  namespace: trident-protect
spec:
  dataMoverPasswordSecretRef: my-optional-data-mover-secret
  providerType: OntapS3
  providerConfig:
    s3:
      bucketName: trident-protect-src-bucket
      endpoint: s3.example.com
      proxyURL: http://10.1.1.1:3128
  providerCredentials:
    accessKeyID:
      valueFromSecret:
        key: accessKeyID
        name: s3-secret
    secretAccessKey:
      valueFromSecret:
        key: secretAccessKey
        name: s3-secret
StorageGrid S3
apiVersion: protect.trident.netapp.io/v1
kind: AppVault
metadata:
  name: storagegrid-s3-trident-protect-src-bucket
  namespace: trident-protect
spec:
  dataMoverPasswordSecretRef: my-optional-data-mover-secret
  providerType: StorageGridS3
  providerConfig:
    s3:
      bucketName: trident-protect-src-bucket
      endpoint: s3.example.com
      proxyURL: http://10.1.1.1:3128
  providerCredentials:
    accessKeyID:
      valueFromSecret:
        key: accessKeyID
        name: s3-secret
    secretAccessKey:
      valueFromSecret:
        key: secretAccessKey
        name: s3-secret

使用Trident Protect CLI 建立 AppVault 的範例

您可以使用以下 CLI 命令範例為每個提供者建立 AppVault CR。

註
  • 您可以選擇指定一個 Kubernetes secret,其中包含 Restic 和 Kopia 儲存庫加密的自訂密碼。請參閱資料遷移儲存庫密碼了解更多。

  • 對於 S3 AppVault 對象,您可以選擇性地使用下列方式指定出站 S3 流量的出口代理 URL: `--proxy-url <ip_address:port>`爭論。

Google雲
tridentctl-protect create vault GCP <vault-name> \
--bucket <mybucket> \
--project <my-gcp-project> \
--secret <secret-name>/credentials \
--data-mover-password-secret-ref <my-optional-data-mover-secret> \
-n trident-protect
亞馬遜 S3 (AWS)
tridentctl-protect create vault AWS <vault-name> \
--bucket <bucket-name> \
--secret  <secret-name>  \
--endpoint <s3-endpoint> \
--data-mover-password-secret-ref <my-optional-data-mover-secret> \
-n trident-protect
微軟 Azure
tridentctl-protect create vault Azure <vault-name> \
--account <account-name> \
--bucket <bucket-name> \
--secret <secret-name> \
--data-mover-password-secret-ref <my-optional-data-mover-secret> \
-n trident-protect
通用S3
tridentctl-protect create vault GenericS3 <vault-name> \
--bucket <bucket-name> \
--secret  <secret-name>  \
--endpoint <s3-endpoint> \
--data-mover-password-secret-ref <my-optional-data-mover-secret> \
-n trident-protect
ONTAP S3
tridentctl-protect create vault OntapS3 <vault-name> \
--bucket <bucket-name> \
--secret  <secret-name>  \
--endpoint <s3-endpoint> \
--data-mover-password-secret-ref <my-optional-data-mover-secret> \
-n trident-protect
StorageGrid S3
tridentctl-protect create vault StorageGridS3 <vault-name> \
--bucket <bucket-name> \
--secret  <secret-name>  \
--endpoint <s3-endpoint> \
--data-mover-password-secret-ref <my-optional-data-mover-secret> \
-n trident-protect

查看 AppVault 訊息

您可以使用Trident Protect CLI 外掛程式查看有關您在叢集上建立的 AppVault 物件的資訊。

步驟
  1. 查看 AppVault 物件的內容:

    tridentctl-protect get appvaultcontent gcp-vault \
    --show-resources all \
    -n trident-protect

    範例輸出

    +-------------+-------+----------+-----------------------------+---------------------------+
    |   CLUSTER   |  APP  |   TYPE   |            NAME             |         TIMESTAMP         |
    +-------------+-------+----------+-----------------------------+---------------------------+
    |             | mysql | snapshot | mysnap                      | 2024-08-09 21:02:11 (UTC) |
    | production1 | mysql | snapshot | hourly-e7db6-20240815180300 | 2024-08-15 18:03:06 (UTC) |
    | production1 | mysql | snapshot | hourly-e7db6-20240815190300 | 2024-08-15 19:03:06 (UTC) |
    | production1 | mysql | snapshot | hourly-e7db6-20240815200300 | 2024-08-15 20:03:06 (UTC) |
    | production1 | mysql | backup   | hourly-e7db6-20240815180300 | 2024-08-15 18:04:25 (UTC) |
    | production1 | mysql | backup   | hourly-e7db6-20240815190300 | 2024-08-15 19:03:30 (UTC) |
    | production1 | mysql | backup   | hourly-e7db6-20240815200300 | 2024-08-15 20:04:21 (UTC) |
    | production1 | mysql | backup   | mybackup5                   | 2024-08-09 22:25:13 (UTC) |
    |             | mysql | backup   | mybackup                    | 2024-08-09 21:02:52 (UTC) |
    +-------------+-------+----------+-----------------------------+---------------------------+
  2. (可選)若要查看每個資源的 AppVaultPath,請使用該標誌 --show-paths

    只有在Trident Protect Helm 安裝中指定了叢集名稱時,表格第一列中的叢集名稱才可用。例如: --set clusterName=production1

移除 AppVault

您可以隨時刪除 AppVault 物件。

註 不要移除 `finalizers`在刪除 AppVault 物件之前,請在 AppVault CR 中輸入金鑰。這樣做可能會導致 AppVault 儲存桶中殘留數據,以及叢集中出現孤立資源。
開始之前

請確保您已刪除要刪除的 AppVault 所使用的所有快照和備份 CR。

使用 Kubernetes CLI 刪除 AppVault
  1. 移除 AppVault 對象,並替換 `appvault-name`要刪除的 AppVault 物件的名稱:

    kubectl delete appvault <appvault-name> \
    -n trident-protect
使用Trident Protect CLI 刪除 AppVault
  1. 移除 AppVault 對象,並替換 `appvault-name`要刪除的 AppVault 物件的名稱:

    tridentctl-protect delete appvault <appvault-name> \
    -n trident-protect