10.2. 非接続環境での更新の準備

Red Hat OpenShift Container Storage 環境がインターネットに直接接続されていない場合には、デフォルトの Operator Hub およびイメージレジストリーの代替オプションとして Operator Lifecycle Manager(OLM) を提供するために追加の設定が必要になります。

概要については OpenShift Container Platform ドキュメントを参照してください: Updating an Operator catalog image

クラスターで非接続更新を設定するには、以下を実行します。

これらの手順が完了したら、通常通りに更新を継続します。

10.2.1. ミラーレジストリーの認証情報の追加

前提条件

  • 既存の非接続クラスターが OpenShift Container Platform 4.3 以降を使用していることを確認します。
  • oc client バージョン 4.4 以降であることを確認します。
  • ミラーレジストリーでミラーホストを準備します。詳細は、ミラーホストの準備について参照してください。

手順

  1. cluster-admin ロールを使用して OpenShift Container Platform クラスターにログインします。
  2. auth.json ファイルを見つけます。

    このファイルは、podman または docker を使用してレジストリーにログインする際に生成されます。これは、以下のいずれかの場所にあります。

    • ~/.docker/auth.json
    • /run/user/<UID>/containers/auth.json
    • /var/run/containers/<UID>/auth.json
  3. 一意の Red Hat レジストリープルシークレットを取得して auth.json ファイルに貼り付けます。以下のようになります。

    {
        "auths": {
            "cloud.openshift.com": {
                "auth": "*****************",
                "email": "user@example.com"
            },
            "quay.io": {
                "auth": "*****************",
                "email": "user@example.com"
            },
            "registry.connect.redhat.com": {
                "auth": "*****************",
                "email": "user@example.com"
            },
            "registry.redhat.io": {
                "auth": "*****************",
                "email": "user@example.com"
            }
        }
      }
  4. 設定に対応する詳細と共に環境変数をエクスポートします。

    $ export AUTH_FILE="<location_of_auth.json>"
    $ export MIRROR_REGISTRY_DNS="<your_registry_url>:<port>"
  5. podman を使用してミラーレジストリーにログインし、認証情報を ${AUTH_FILE} に保存します。

    $ podman login ${MIRROR_REGISTRY_DNS} --tls-verify=false --authfile ${AUTH_FILE}

    これにより、ミラーレジストリーが auth.json ファイルに追加されます。

    {
        "auths": {
            "cloud.openshift.com": {
                "auth": "*****************",
                "email": "user@example.com"
            },
            "quay.io": {
                "auth": "*****************",
                "email": "user@example.com"
            },
            "registry.connect.redhat.com": {
                "auth": "*****************",
                "email": "user@example.com"
            },
            "registry.redhat.io": {
                "auth": "*****************",
                "email": "user@example.com"
            },
            "<mirror_registry>": {
                "auth": "*****************",
            }
        }
      }

10.2.2. Red Hat Operator カタログのビルドおよびミラーリング

Red Hat レジストリーにアクセスできるホストでこのプロセスを実行し、それらのレジストリーのミラーを作成します。

前提条件

  • これらのコマンドをクラスター管理者として実行します。
  • redhat-operator カタログのミラーリングには完了するまでに時間がかかる場合があります。また、ミラーホストに大きなディスク領域が利用可能である必要があることに注意してください。

手順

  1. redhat-operators のカタログをビルドします。

    ターゲット OpenShift Container Platform クラスターのメジャーバージョンおよびマイナーバージョンに一致するタグを使用して、--fromose-operator-registry ベースイメージに設定します。

    $ oc adm catalog build --appregistry-org redhat-operators \
      --from=registry.redhat.io/openshift4/ose-operator-registry:v4.5 \
      --to=${MIRROR_REGISTRY_DNS}/olm/redhat-operators:v2 \
      --registry-config=${AUTH_FILE} \
      --filter-by-os="linux/amd64" --insecure
  2. redhat-operators のカタログをミラーリングします。

    これは長時間の操作となり、1-5 時間の時間がかかる場合があります。ミラーホストに 100 GB の空きディスク領域があることを確認します。

    $ oc adm catalog mirror ${MIRROR_REGISTRY_DNS}/olm/redhat-operators:v2 \
    ${MIRROR_REGISTRY_DNS} --registry-config=${AUTH_FILE} --insecure

10.2.3. Operator imageContentSourcePolicy の作成

oc adm catalog mirror コマンドが完了すると、imageContentSourcePolicy.yaml ファイルが作成されます。通常、このファイルの出力ディレクトリーは ./[catalog image name]-manifests) です。以下の手順を使用して、不足しているエントリーを .yaml ファイルに追加し、それらをクラスターに適用します。

手順

  1. このファイルの内容で、以下のようにミラーマッピングを確認します。

    spec:
      repositoryDigestMirrors:
        - mirrors:
          - <your_registry>/ocs4
          source: registry.redhat.io/ocs4
        - mirrors:
          - <your_registry>/rhceph
          source: registry.redhat.io/rhceph
        - mirrors:
          - <your_registry>/openshift4
          source: registry.redhat.io/openshift4
        - mirrors:
          - <your_registry>/rhscl
          source: registry.redhat.io/rhscl
  2. 不明なエントリーを imageContentSourcePolicy.yaml ファイルの最後に追加します。
  3. imageContentSourcePolicy.yaml ファイルをクラスターに適用します。

    $ oc apply -f ./[output dir]/imageContentSourcePolicy.yaml

    Image Content Source Policy を更新したら、クラスター内のすべてのノード(マスター、インフラストラクチャー、およびワーカー)を更新し、再起動する必要があります。このプロセスは Machine Config Pool Operator で自動的に処理され、実際の経過時間は OpenShift クラスターのノード数によって異なる可能性がありますが、最長で 30 分の時間がかかります。oc get mcp コマンドまたは oc get node コマンドを使用して更新プロセスをモニターできます。

10.2.4. redhat-operator CatalogSource の更新

手順

  1. Red Hat Operator のカタログイメージを参照する CatalogSource オブジェクトを再作成します。

    注記

    正しいバージョン (v2) で正しいカタログソースをミラーリングしていることを確認します。

+ 以下を redhat-operator-catalogsource.yaml ファイルに保存し、 <your_registry> をミラーレジストリー URL に必ず置き換えます。

+

apiVersion: operators.coreos.com/v1alpha1
kind: CatalogSource
metadata:
  name: redhat-operators
  namespace: openshift-marketplace
spec:
  sourceType: grpc
  icon:
    base64data: PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOTIgMTQ1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2UwMDt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPlJlZEhhdC1Mb2dvLUhhdC1Db2xvcjwvdGl0bGU+PHBhdGggZD0iTTE1Ny43Nyw2Mi42MWExNCwxNCwwLDAsMSwuMzEsMy40MmMwLDE0Ljg4LTE4LjEsMTcuNDYtMzAuNjEsMTcuNDZDNzguODMsODMuNDksNDIuNTMsNTMuMjYsNDIuNTMsNDRhNi40Myw2LjQzLDAsMCwxLC4yMi0xLjk0bC0zLjY2LDkuMDZhMTguNDUsMTguNDUsMCwwLDAtMS41MSw3LjMzYzAsMTguMTEsNDEsNDUuNDgsODcuNzQsNDUuNDgsMjAuNjksMCwzNi40My03Ljc2LDM2LjQzLTIxLjc3LDAtMS4wOCwwLTEuOTQtMS43My0xMC4xM1oiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMjcuNDcsODMuNDljMTIuNTEsMCwzMC42MS0yLjU4LDMwLjYxLTE3LjQ2YTE0LDE0LDAsMCwwLS4zMS0zLjQybC03LjQ1LTMyLjM2Yy0xLjcyLTcuMTItMy4yMy0xMC4zNS0xNS43My0xNi42QzEyNC44OSw4LjY5LDEwMy43Ni41LDk3LjUxLjUsOTEuNjkuNSw5MCw4LDgzLjA2LDhjLTYuNjgsMC0xMS42NC01LjYtMTcuODktNS42LTYsMC05LjkxLDQuMDktMTIuOTMsMTIuNSwwLDAtOC40MSwyMy43Mi05LjQ5LDI3LjE2QTYuNDMsNi40MywwLDAsMCw0Mi41Myw0NGMwLDkuMjIsMzYuMywzOS40NSw4NC45NCwzOS40NU0xNjAsNzIuMDdjMS43Myw4LjE5LDEuNzMsOS4wNSwxLjczLDEwLjEzLDAsMTQtMTUuNzQsMjEuNzctMzYuNDMsMjEuNzdDNzguNTQsMTA0LDM3LjU4LDc2LjYsMzcuNTgsNTguNDlhMTguNDUsMTguNDUsMCwwLDEsMS41MS03LjMzQzIyLjI3LDUyLC41LDU1LC41LDc0LjIyYzAsMzEuNDgsNzQuNTksNzAuMjgsMTMzLjY1LDcwLjI4LDQ1LjI4LDAsNTYuNy0yMC40OCw1Ni43LTM2LjY1LDAtMTIuNzItMTEtMjcuMTYtMzAuODMtMzUuNzgiLz48L3N2Zz4=
    mediatype: image/svg+xml
  image: <your_registry>/olm/redhat-operators:v2
  displayName: Redhat Operators Catalog
  publisher: Red Hat
  1. redhat-operator-catalogsource.yaml ファイルを使用してカタログソースを作成します。

    $ oc apply -f redhat-operator-catalogsource.yaml
  2. 新規 redhat-operator Pod が実行されていることを確認します。

    $ oc get pod -n openshift-marketplace | grep redhat-operators

10.2.5. 更新の継続

代替カタログソースを設定した後も、適切な更新プロセスを続行できます。