将 VPC Block Storage 从 HPCS 迁移到 Key Protect
将为 VPC Block Storage 卷加密的 Hyper Protect Crypto Services (HPCS) 迁移到使用 IBM Key Protect ( Key Protect ) 代替。
准备工作
如果尚未迁移,请查看迁移 概述 中的信息,以确定是否需要将 VPC 块存储卷迁移到 Key Protect,而不是 HPCS。
迁移的先决条件
在开始迁移之前,请完成这些步骤。
-
创建新的 或使用现有的 IBM Key Protect 专用实例。
-
从 Key Protect 实例,注意目的地客户根密钥 (CRK) CRN。
ibmcloud kp keys -i KP-INSTANCE-ID -
确保 VPC Block Storage 对 Key Protect 实例具有读取访问权限。 您可能需要 使用 IAM 分配访问权限。 这种访问可以是跨账户的,在继续之前必须正确配置。
-
如果您还没有这样做,下载迁移工具。
迁移步骤
请按照以下步骤将 VPC Block Storage 卷从 HPCS 迁移到 Key Protect。
-
创建 CSV 文件,将源 HPCS CRK 映射到目标 Key Protect CRK。
- 获取 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 ``` -
设置迁移工具所需的环境变量。
如果您有多个 KMS 实例,请确保此步骤中使用的端点与您要迁移的实例相对应。
- 导出所需的环境变量。 用实际端点和 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 ``` -
验证 CSV 文件并检查当前迁移状态。 请注意,如果使用了多个密钥,CSV 文件中可能会包含多个条目。
- 运行 status 命令以验证您的配置。
./crk-migration-tool-darwin-arm64-1.1.0 status hpcs-kms-migration.csv ``` 2. 检查输出,确保正确识别源和目标 CRK。 -
使用 CSV 文件创建 CRK 迁移意图。
- 运行创建命令建立迁移意图。
./crk-migration-tool-darwin-arm64-1.1.0 create hpcs-kms-migration.csv ``` 2. 检查命令输出,确认意图已成功创建。 -
通过同步意图来执行实际的 CRK 迁移。 请注意,如果在多个集群中使用了相同的密钥,这也会将这些集群中使用该密钥的所有卷一并迁移。
- 运行同步命令执行迁移。
./crk-migration-tool-darwin-arm64-1.1.0 sync hpcs-kms-migration.csv ``` 2. 请等待同步操作完成。 此过程会迁移加密卷的密钥。 -
验证您的卷现在是否引用了 Key Protect CRK。
您只需检查已迁移的卷即可。 如果您已使用检测脚本列出了哪些卷使用了 HPCS 密钥,请检查输出中列出的卷。
- 列出持久卷并记下卷 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 实例。 -
更新存储类,确保今后所有 PVC 都使用 Key Protect CRK。
您只需对已迁移的存储类完成此步骤。 如果您已使用检测脚本列出了哪些存储类使用了 HPCS 密钥,请针对输出中列出的这些存储类完成此步骤。
- 列出您现有的存储类别。
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 根密钥设置 密钥轮换策略。