1.8.3. 使用自定义 ManagedClusterImageRegistry CRD 导入集群

有时您可能需要覆盖您要导入的受管集群中的 registry 镜像。您可以通过创建一个 ManagedClusterImageRegistry 自定义资源定义(CRD)来完成此操作。

ManagedClusterImageRegistry CRD 是一个命名空间范围的资源。

ManagedClusterImageRegistry CRD 为要选择的放置指定一组受管集群,但需要与自定义镜像 registry 不同的镜像。使用新镜像更新受管集群后,会在每个受管集群中添加以下标签进行识别: open-cluster-management.io/image-registry=<namespace>.<managedClusterImageRegistryName>

以下示例显示了 ManagedClusterImageRegistry CRD:

apiVersion: imageregistry.open-cluster-management.io/v1alpha1
kind: ManagedClusterImageRegistry
metadata:
  name: <imageRegistryName>
  namespace: <namespace>
spec:
  placementRef:
    group: cluster.open-cluster-management.io
    resource: placements
    name: <placementName>
  pullSecret:
    name: <pullSecretName>
  registry: <registryAddress>

spec 部分中:

  • placementRef 替换为选择一组受管集群的同一命名空间中的放置。
  • pullSecret 替换为用于从自定义镜像 registry 中拉取镜像的 pull secret 名称。
  • 使用自定义 registry 地址替换 registry。

1.8.3.1. 使用 ManagedClusterImageRegistry CRD 导入集群

完成以下步骤,使用 ManagedClusterImageRegistry CRD 导入集群:

  1. 在您要导入集群的命名空间中创建 pull secret。对于这些步骤,是 myNamespace

    $ kubectl create secret docker-registry myPullSecret \
      --docker-server=<your-registry-server> \
      --docker-username=<my-name> \
      --docker-password=<my-password>
  2. 在您创建的命名空间中创建一个放置。

    apiVersion: cluster.open-cluster-management.io/v1beta1
    kind: Placement
    metadata:
      name: myPlacement
      namespace: myNamespace
    spec:
      clusterSets:
      - myClusterSet
  3. 创建一个 ManagedClusterSet 资源,并将其绑定到命名空间。

    apiVersion: cluster.open-cluster-management.io/v1beta1
    kind: ManagedClusterSet
    metadata:
      name: myClusterSet
    
    ---
    apiVersion: cluster.open-cluster-management.io/v1beta1
    kind: ManagedClusterSetBinding
    metadata:
      name: myClusterSet
      namespace: myNamespace
    spec:
      clusterSet: myClusterSet
  4. 在命名空间中创建 ManagedClusterImageRegistry CRD。

    apiVersion: imageregistry.open-cluster-management.io/v1alpha1
    kind: ManagedClusterImageRegistry
    metadata:
      name: myImageRegistry
      namespace: myNamespace
    spec:
      placementRef:
        group: cluster.open-cluster-management.io
        resource: placements
        name: myPlacement
      pullSecret:
        name: myPullSecret
      registry: myRegistryAddress
  5. 从 Red Hat Advanced Cluster Management 控制台导入受管集群,并将其添加到受管集群集中。
  6. 在标签 open-cluster-management.io/image-registry=myNamespace.myImageRegistry 添加到受管集群后,在受管集群中复制并运行导入命令。