为 Satellite 集群设置内部映像注册表
Satellite
缺省情况下,内部注册表不会在 Satellite 集群中运行,因为没有为内部注册表设置支持存储器。 完成以下教程以使用 IBM Cloud Object Storage 作为支持存储器来配置 Satellite 集群中的内部映像注册表。
本教程介绍了如何使用 IBM Cloud Object Storage来设置映像注册表。 但是,您还可以在工作程序节点上使用非持久存储器。 有关更多信息,请参阅 在工作程序节点空目录中存储映像。
创建满足需求的 IBM Cloud Object Storage 实例
- 在 IBM Cloud 控制台中,浏览到 资源 菜单并列出存储实例。
- 识别 Object Storage 实例并找到 位置 列。 如果在 IBM Cloud中创建了实例,那么其位置将列示为 全局。
- 如果您没有满足需求的全局实例,请执行创建一个全局实例的步骤。
- 从 IBM Cloud Object Storage中,单击 创建实例。
- 在 选择基础结构下,选择 IBM Cloud 选项。
- 选择定价套餐和服务名称。
- 选择存储 Satellite 组件的资源组。
- 单击创建。 请注意,您的实例可能需要几分钟时间才能完成配置。
创建要用于映像注册表的存储区
创建要在设置映像注册表时使用的存储区。 您的存储区必须配置为具有区域弹性。 有关创建存储区的更多信息,请参阅 设置 IBM Cloud Object Storage。
- 点击您的 Object Storage 实例。
- 单击创建存储区。
- 选择 定制存储区选项。
- 在 弹性下,选择 区域。
- 从 位置 下拉菜单中,选择最接近从中管理位置的区域。 例如,如果您的位置是从
wdc
(Washington,DC) 进行管理,请选择us-east
区域。 要检查 Satellite 位置的管理位置,请在 CLI 中运行ibmcloud sat location ls
。 - 在 存储类下,选择 标准。
- 配置首选项的其余类别。
- 单击创建存储区。
- 创建服务凭证,使集群能够与 Object Storage 实例进行通信。
- 在导航窗格中,单击 服务凭证,然后单击 新建凭证。
- 请为新凭证输入名称。
- 从下拉菜单中,选择 写入者 角色。
- 单击 高级选项,然后选择 包含 HMAC 凭证选项。
- 单击添加。
- 在 服务凭证 表中,展开新凭证。 请注意
access_key_id
和secret_access_key_id
。 请勿与任何人共享这些凭证。 要保存的凭证示例。"cos_hmac_keys": { "access_key_id": "1111111a1111111a11aa1a111111111a11aa1a111a11a1a1", "secret_access_key": "222222b222222b22bb2b22222222b22bb2b222b22b2b2" }
创建包含 COS 服务凭证的私钥
在 CLI 中,使用您创建并保存的服务凭证创建私钥。
- 登录您的账户。 如果适用,请将相应的资源组设定为目标。 设置集群的上下文。
- 创建私钥。
oc create secret generic image-registry-private-configuration-user --from-literal=REGISTRY_STORAGE_S3_ACCESSKEY=<access_key_id> --from-literal=REGISTRY_STORAGE_S3_SECRETKEY=<secret_access_key> --namespace openshift-image-registry
更新 Red Hat OpenShift 注册表操作程序 CRD
- 更改 Red Hat OpenShift 注册操作程序的管理状态。
oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"managementState":"Managed"}}'
- 编辑配置存储器属性以将映像存储在 Object Storage 存储区中。
- 查找并保存 Satellite 位置的区域链接端点。 在输出中,端点列示在 地址 列下。
示例输出ibmcloud sat endpoint ls --location <location_name> | grep satellite-cosRegional
ID Name Destination Type Address cavvku1p1h1gcfgk1kn1_uwokw satellite-cosRegional-cavvku1p1h1gcfgk1kn1 cloud TLS i11aa11a1a1a11a11-1a11a1aaa1a1a1a1a-c000.us-east.satellite.appdomian.cloud:11111
- 在 CLI 中打开文件编辑器。
oc edit configs.imageregistry.operator.openshift.io/cluster
- 查找要编辑的以下部分。
storage: emptyDir: {} managementState: Managed storageManaged: true
- 将
emptyDir: {}
替换为存储区信息和位置端点。
添加存储区和位置信息后的示例部分。s3: bucket: <bucket_name> region: <bucket_region> regionEndpoint: <location_link_endpoint> virtualHostedStyle: false
storage: managementState: Managed s3: bucket: my_bucket region: us-east regionEndpoint: https://i11aa11a1a1a11a11-1a11a1aaa1a1a1a1a-c000.us-east.satellite.appdomian.cloud:11111 virtualHostedStyle: false storageManaged: true
- 保存并应用更改。
- 查找并保存 Satellite 位置的区域链接端点。 在输出中,端点列示在 地址 列下。
验证更改
通过在 openshift-image-registry
名称空间中检查以 image-registry-
开头的 pod,验证是否配置了映像注册表。
-
运行以下命令。
oc get pod -n openshift-image-registry
-
查看输出并确认注册表 pod 为
Running
。示例输出
NAME READY STATUS RESTARTS AGE image-registry-63p54b8add-vkjju 1/1 Running 0 16m