4.3. 将镜像推送到 OpenShift Container Platform 集群

先决条件

  • 从 RHEL 机器访问 OpenShift Container Platform 集群。

    1. 从 RHEL 机器,将镜像推送到集群 registry:

      $ podman push <cluster-domain>:<registry-port>/iib:my-operator-iib
    2. 创建镜像过程所需的三个文件:

      $ /usr/local/bin/oc adm catalog mirror  \
        <cluster-domain>:<registry-port>/iib:my-operator-iib \
        <cluster-domain>:<registry-port> \
        -a /home/customer-user/.docker/config.json \
        --insecure=true \
        --registry-config /home/customer-user/.docker/config.json \
        --index-filter-by-os=linux/amd64 \
        --manifests-only
    3. 请确定有以下文件:

      • CatalogSource.yaml - 描述 catalogSource 的 YAML 文件。
      • ImageContentSourcePolicy.yaml - 使用红帽 registry 中的地址映射内部 registry 中的镜像的 YAML 文件。
      • mapping.txt- 将镜像镜像(mirror)到内部 registry 的文本文件。
    4. 编辑 mapping.txt,以仅列出您要镜像的镜像。

      该文件的格式如下:

      [ Operator address on RedHat registry : Operator SHA ] = [ Operator address on internal mirror registry : tag ]

      mapping.txt 文件示例:

      registry.redhat.io/amq7/amq-interconnect@sha256:6101cc735e4d19cd67c6d80895c425ecf6f1d2604d88f999fa0cae57a7d6abaf=<cluster-domain>:<registry-port>/amq7-amq-interconnect:f793b0cc
      registry.redhat.io/amq7/amq-interconnect-operator@sha256:8dd53290c909589590b88a1544d854b4ad9f8b4a639189597c0a59579bc60c40=<cluster-domain>:<registry-port>/amq7-amq-interconnect-operator:73c142ff
      registry.redhat.io/amq7/amq-interconnect-operator-metadata@sha256:799ce48905d5d2a91b42e2a7943ce9b756aa9da80f6924be06b2a6275ac90214=<cluster-domain>:<registry-port>/amq7-amq-interconnect-operator-metadata:14cc4a4e
    5. 镜像所需的镜像

      $ /usr/local/bin/oc image mirror \
        -f mapping-ic.yaml \
        -a /home/customer-user/.docker/config.json \
        --insecure=true \
        --registry-config /home/customer-user/.docker/config.json \
        --keep-manifest-list=true
    6. 配置 ImageContentSourcePolicy (ICSP)名称:

      在文件 imageContentSourcePolicy.yaml 中设置字段 'name',例如 my-operator-icsp

      ICSP 片断示例:

      ---
      apiVersion: operator.openshift.io/v1alpha1
      kind: ImageContentSourcePolicy
      metadata:
          labels:
              operators.openshift.org/catalog: "true"
          name: my-operator-icsp
      spec:
          repositoryDigestMirrors:
          - mirrors:
              - <cluster-domain>:<registry-port>/amq7-amq-interconnect-operator
              source: registry.redhat.io/amq7/amq-interconnect-operator
    7. 应用策略(ICSP)文件:

      $ /usr/local/bin/oc create -f imageContentSourcePolicy.yaml

      应用此文件后,所有集群节点都会自动重置。您可以使用 oc get nodes 或 OpenShift 控制台检查节点状态,方法是导航到 Compute → Nodes

      注意

      在继续前,请确保所有节点都处于 Ready 状态。

    8. 配置 catalogSource 名称:

      catalogSource.yaml 文件中设置 字段名称,如 my-operator-catalog

      catalogSource.yaml 文件示例:

      apiVersion: operators.coreos.com/v1alpha1
      kind: CatalogSource
      metadata:
        name: iib
        namespace: openshift-marketplace
      spec:
        image: <cluster-domain>:<registry-port>/iib:my-operator-iib
        sourceType: grpc
    9. 应用目录源配置以完成 Red Hat Integration - AMQ Interconnect Operator 的安装:

      $ /usr/local/bin/oc apply -f catalogSource.yaml
    10. 如 所述,通过部署路由器确保安装正常工作。 第 5.1 节 “创建内路由器部署”