将 VPC Block Storage 从 HPCS 迁移到 Key Protect

将为 VPC Block Storage 卷加密的 Hyper Protect Crypto Services (HPCS) 迁移到使用 IBM Key Protect ( Key Protect ) 代替。

准备工作

如果尚未迁移,请查看迁移 概述 中的信息,以确定是否需要将 VPC 块存储卷迁移到 Key Protect,而不是 HPCS。

迁移的先决条件

在开始迁移之前,请完成这些步骤。

  1. 创建新的 或使用现有的 IBM Key Protect 专用实例。

  2. 从 Key Protect 实例,注意目的地客户根密钥 (CRK) CRN。

    ibmcloud kp keys -i KP-INSTANCE-ID
    
  3. 确保 VPC Block Storage 对 Key Protect 实例具有读取访问权限。 您可能需要 使用 IAM 分配访问权限。 这种访问可以是跨账户的,在继续之前必须正确配置。

  4. 如果您还没有这样做,下载迁移工具

迁移步骤

请按照以下步骤将 VPC Block Storage 卷从 HPCS 迁移到 Key Protect。

  1. 创建 CSV 文件,将源 HPCS CRK 映射到目标 Key Protect CRK。

    1. 获取 HPCS 根密钥的 CRN。
        ibmcloud resource service-instance <hpcs-instance-name>
        ```
    2. 获取 Key Protect 根密钥的 CRN。
    
    ```sh {: pre}
        ibmcloud resource service-instance <kp-instance-name>
        ```
    3. 创建 CSV 文件(例如 `hpcs-kms-migration.csv` ),格式如下:
    
    ```csv {: codeblock}
        <source-hpcs-crk-crn>,<destination-kp-crk-crn>
        ```
        示例:
        ```csv {: codeblock}
        crn:v1:staging:public:hs-crypto:us-south:a/1152aa1c1ec54274ac42b807c90c:0ce92f39-69fd-4200-ba53-5ed555689:key:43eb6a-5451-4ea1-8080-0ca2d6cc7,crn:v1:staging:public:kms:us-south:a/1152aa1c1ec54274ac4ad8507c90c:b2ee9d-b658-4939-bb63-ffb6e7442:key:8cf424f4-bd6a-4de9-8ad5-5c60332de
        ```
    
  2. 设置迁移工具所需的环境变量。

    如果您有多个 KMS 实例,请确保此步骤中使用的端点与您要迁移的实例相对应。

    1. 导出所需的环境变量。 用实际端点和 API 密钥替换占位值。
        export HPCS_API_ENDPOINT=https://<hpcs-instance-id>.api.<region>.hs-crypto.appdomain.cloud
        export KP_ST_ENDPOINT=https://<kp-instance-id>.api.<region>.kms.appdomain.cloud
        export IBMCLOUD_API_KEY=<api-key-with-access-to-kms-and-hpcs>
        export IBMCLOUD_API_KEY_KP_ST=$IBMCLOUD_API_KEY
        ```
        对于暂存环境,也可设置:
        ```sh {: pre}
        export IBMCLOUD_STAGE=true
        export DEBUG_MODE=true
        ```
    
  3. 验证 CSV 文件并检查当前迁移状态。 请注意,如果使用了多个密钥,CSV 文件中可能会包含多个条目。

    1. 运行 status 命令以验证您的配置。
        ./crk-migration-tool-darwin-arm64-1.1.0 status hpcs-kms-migration.csv
        ```
    2. 检查输出,确保正确识别源和目标 CRK。
    
    
  4. 使用 CSV 文件创建 CRK 迁移意图。

    1. 运行创建命令建立迁移意图。
        ./crk-migration-tool-darwin-arm64-1.1.0 create hpcs-kms-migration.csv
        ```
    2. 检查命令输出,确认意图已成功创建。
    
    
  5. 通过同步意图来执行实际的 CRK 迁移。 请注意,如果在多个集群中使用了相同的密钥,这也会将这些集群中使用该密钥的所有卷一并迁移。

    1. 运行同步命令执行迁移。
        ./crk-migration-tool-darwin-arm64-1.1.0 sync hpcs-kms-migration.csv
        ```
    2. 请等待同步操作完成。 此过程会迁移加密卷的密钥。
    
    
  6. 验证您的卷现在是否引用了 Key Protect CRK。

    您只需检查已迁移的卷即可。 如果您已使用检测脚本列出了哪些卷使用了 HPCS 密钥,请检查输出中列出的卷。

    1. 列出持久卷并记下卷 ID。
        kubectl get pv
        ```
    2. 描述持久卷以获取卷 ID。
    
    ```sh {: pre}
        kubectl describe pv <pv-name>
        ```
    3. 使用 IBM Cloud CLI 查看卷的详细信息。
    
    ```sh {: pre}
        ibmcloud is volume <volume-id>
        ```
    4. 在输出中,验证 `Encryption Key` 字段现在引用的是 Key Protect 实例的 CRK CRN,而不是 HPCS 实例。
    
    
  7. 更新存储类,确保今后所有 PVC 都使用 Key Protect CRK。

    您只需对已迁移的存储类完成此步骤。 如果您已使用检测脚本列出了哪些存储类使用了 HPCS 密钥,请针对输出中列出的这些存储类完成此步骤。

    1. 列出您现有的存储类别。
        kubectl get storageclass
        ```
    2. 识别在参数中引用 HPCS CRK 的存储类。
    
    3. 删除 HPCS 支持的存储类。
    
    ```sh {: pre}
        kubectl delete storageclass <storageclass-name>
        ```
    4. 使用 Key Protect CRK CRN 创建新的存储类。 请将以下示例作为模板:
    
    ```yaml {: codeblock}
        apiVersion: storage.k8s.io/v1
        kind: StorageClass
        metadata:
          name: ibmc-vpc-block-kms
        provisioner: vpc.block.csi.ibm.io
        parameters:
          profile: "general-purpose"
          encrypted: "true"
          encryptionKey: "<key-protect-crk-crn>"
          csi.storage.k8s.io/fstype: "ext4"
        reclaimPolicy: Delete
        allowVolumeExpansion: true
        volumeBindingMode: WaitForFirstConsumer
        ```
    5. 应用新的存储类。
    
    ```sh {: pre}
        kubectl apply -f <storageclass-file>
        ```
    

后续步骤

  • 验证迁移后的卷是否能使应用程序继续正常运行。
  • 监控 Key Protect 实例是否存在任何访问或加密问题。
  • 更新文档和运行手册,以反映新的 Key Protect 配置。
  • 考虑为 Key Protect 根密钥设置 密钥轮换策略