设置 IBM Cloud Object Storage 实例
IBM Cloud Object Storage 是可安装到应用程序的持久性高可用性存储器。 这是一种 Kubernetes Flex-Volume 插件,用于将 Cloud Object Storage 存储区连接到集群中的 pod。 IBM Cloud Object Storage 存储的信息在传输和静止时都经过加密,分散在多个地理位置,并可通过 HTTP 使用 REST API 进行访问。
如果要在没有公用网络访问权的专用集群中使用 IBM Cloud Object Storage,那么必须设置 IBM Cloud Object Storage 服务实例进行 HMAC 认证。 如果不想使用 HMAC 认证,那么必须在端口 443 上打开所有出站网络流量,该插件才能在专用集群中正常工作。
创建 IBM Cloud Object Storage 实例
您必须在自己的帐户中供应 IBM Cloud Object Storage 服务实例后,才能开始在集群中使用对象存储器。
IBM Cloud Object Storage 插件用于任何 s3 API 端点。 例如,您可能希望使用本地 Cloud Object Storage 服务器(如 Minio ),或连接到您在不同云提供商处设置的 s3 API 端点,而不是 IBM Cloud Object Storage 服务实例。
要创建 IBM Cloud Object Storage 服务实例,请执行以下步骤。 如果您计划使用本地 Cloud Object Storage 服务器或不同的 s3 API 端点,请参阅提供商文档来设置您的 Cloud Object Storage 实例。
- 打开 IBM Cloud Object Storage 目录页面。
- 输入服务实例的名称(例如,
cos-backup
),然后选择集群所在的资源组。 要查看群集的资源组,请运行ibmcloud oc cluster get --cluster <cluster_name_or_ID>
。 - 查看 计划选项,了解定价信息并选择计划。
- 单击创建。 这将打开服务详细信息页面。
- 要继续设置 Object Storage 以用于集群,请参阅 创建服务凭证。
创建 IBM Cloud Object Storage 服务证书
开始之前,请 创建对象存储服务实例。
- 在 Object Storage 实例的服务详细信息页面上的导航中,单击 服务凭证。
- 单击新建凭证。 这将打开一个对话框。
- 输入凭证的名称。
- 从 角色 下拉列表中,选择 Object Storage 访问角色,以执行您希望集群中的存储用户有权访问的操作。 必须至少选择 写入者 服务访问角色才能使用
auto-create-bucket
动态供应功能。 如果选择Reader
,则无法使用凭据在 IBM Cloud Object Storage 中创建存储桶并向其写入数据。 - 可选:在添加内联配置参数(可选) 中,输入
{"HMAC":true}
,为 IBM Cloud Object Storage 服务创建更多 HMAC 凭据。 HMAC 认证通过防止误用到期或随机创建的 OAuth2 令牌,为 OAuth2 认证添加了一层额外的安全性。 - 单击添加。 您的新凭证将出现在服务凭证表中。
- 单击查看凭证。
- 请注意
apikey
以使用 OAuth2 令牌验证 IBM Cloud Object Storage 服务。 对于 HMAC 验证,在cos_hmac_keys
部分,注意access_key_id
和secret_access_key
. - 将服务凭证存储在集群内的 Kubernetes 私钥中,以启用对 IBM Cloud Object Storage 服务实例的访问。
为 Object Storage 服务凭证创建私钥
要访问 IBM Cloud Object Storage 服务实例来读写数据,必须将服务凭证安全地存储在 Kubernetes 私钥中。 IBM Cloud Object Storage 插件会将这些凭证用于存储区的每个读或写操作。
要为 IBM Cloud Object Storage 服务实例的凭证创建 Kubernetes 私钥,请执行以下步骤。 如果计划使用本地 Cloud Object Storage 服务器或其他 s3 API 端点,请使用相应的凭证创建 Kubernetes 私钥。
先决条件
- 确保您具有集群的 管理者 服务访问角色。
- 设置 KMS 提供程序。
- 检索
apikey
或access_key_id
和secret_access_key
的 IBM Cloud Object Storage 服务证书。 请注意,服务凭证必须足以用于应用程序需要执行的存储区操作。 例如,如果应用程序从存储区读取数据,那么您在私钥中看到的服务凭证必须至少具有 读者 许可权。
在集群中创建对象存储器私钥
完成以下步骤以在集群中为 IBM Cloud Object Storage创建私钥。
如果要在从集群中的 PVC 创建新存储区时集成 Key Protect 加密,那么必须在创建 IBM Cloud Object Storage 密钥 时包含根密钥 CRN。 请注意,无法将 Key Protect 加密添加到现有存储区。 仅当您创建新存储区时,才能使用加密。 如果删除用于加密的根密钥,那么关联存储区中的所有文件都不可访问。
-
获取 IBM Cloud Object Storage 服务实例的 GUID。
ibmcloud resource service-instance <service_name> | grep GUID
-
创建 Kubernetes 私钥以用于存储服务凭证。 从下列其中一个示例中选择以创建私钥。
- 使用 API 密钥的示例
create secret
命令。oc create secret generic cos-write-access --type=ibm/ibmc-s3fs --from-literal=api-key=<api_key> --from-literal=service-instance-id=<service_instance_guid>
- 使用 HMAC 认证的示例
create secret
命令。oc create secret generic cos-write-access --type=ibm/ibmc-s3fs --from-literal=access-key=<access_key_ID> --from-literal=secret-key=<secret_access_key>
- 用于对 KMS 提供程序启用加密的示例密钥配置文件。
-
将以下 YAML 保存到文件中。
apiVersion: v1 data: access-key: xxx secret-key: xxx kp-root-key-crn: <CRN> # Key Protect or HPCS root key crn in base64 encoded format kind: Secret metadata: name: cos-write-access type: ibm/ibmc-s3fs
api-key
- 输入先前从 IBM Cloud Object Storage 服务凭证中检索到的 API 密钥。 如果要使用 HMAC 身份验证,请指定
access-key
和secret-key
。 access-key
- 输入先前从 IBM Cloud Object Storage 服务凭证中检索到的访问密钥标识。 如果要使用 OAuth2 身份验证,请指定
api-key
。 secret-key
- 输入先前从 IBM Cloud Object Storage 服务凭证中检索到的访问密钥。 如果要使用 OAuth2 身份验证,请指定
api-key
。 service-instance-id
- 输入先前检索到的 IBM Cloud Object Storage 服务实例的 GUID。
kp-root-key-crn
- 输入 base64 编码的 Key Protect 根密钥 CRN 以使用 Key Protect 加密。
-
将秘诀应用到群组中。
kubectl apply -f <secret_name>
-
- 使用 API 密钥的示例
-
获取集群中的私钥并验证输出。
oc get secret
示例输出
NAME TYPE DATA AGE cos-write-access ibm/ibmc-s3fs 2 7d19h default-au-icr-io kubernetes.io/dockerconfigjson 1 55d default-de-icr-io kubernetes.io/dockerconfigjson 1 55d ...
-
安装 IBM Cloud Object Storage 插件,或者如果已安装插件,请 决定 IBM Cloud Object Storage 存储区的配置。
-
可选: 将私钥添加到缺省存储类。 存储类参考
限制
- IBM Cloud Object Storage 基于
s3fs-fuse
文件系统。 您可以查看s3fs-fuse
存储库中的限制列表。 - 要以非 root 用户身份访问 IBM Cloud Object Storage 中的文件,必须将部署中的
runAsUser
和fsGroup
值设置为相同的值。