This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.10.4. Operator カタログイメージの更新
クラスター管理者がカスタム Operator カタログイメージを使用するように OperatorHub を設定した後、管理者は Red Hat の App Registry カタログに追加された更新をキャプチャーして、OpenShift Container Platform クラスターを最新の Operator と共に最新の状態に保つことができます。これは、新規 Operator カタログイメージをビルドし、プッシュしてから、既存の CatalogSource の spec.image
パラメーターを新規イメージダイジェストに置き換えることによって実行されます。
この例では、カスタムの redhat-operators
カタログイメージが OperatorHub と使用するように設定されていることを前提としています。
前提条件
- ネットワークアクセスが無制限の Linux ワークステーション [1]
-
oc
version 4.3.5+ -
podman
version 1.4.4+ - Docker v2-2 をサポートするミラーレジストリーへのアクセス
- カスタムカタログイメージを使用するように設定されている OperatorHub
プライベートレジストリーを使用している場合、後続の手順で使用するために
REG_CREDS
環境変数をレジストリー認証情報のファイルパスに設定します。たとえばpodman
CLI の場合は、以下のようになります。$ REG_CREDS=${XDG_RUNTIME_DIR}/containers/auth.json
quay.io アカウントがアクセスできるプライベート namespace を使用している場合、Quay 認証トークンを設定する必要があります。quay.io 認証情報を使用してログイン API に対して要求を行うことにより、
--auth-token
フラグで使用できるAUTH_TOKEN
環境変数を設定します。$ AUTH_TOKEN=$(curl -sH "Content-Type: application/json" \ -XPOST https://quay.io/cnr/api/v1/users/login -d ' { "user": { "username": "'"<quay_username>"'", "password": "'"<quay_password>"'" } }' | jq -r '.token')
手順
ネットワークアクセスが無制限のワークステーションで、ターゲットミラーレジストリーを使用して認証を行います。
$ podman login <registry_host_name>
また、ビルド時にベースイメージをプルできるように、
registry.redhat.io
で認証します。$ podman login registry.redhat.io
quay.io から
redhat-operators
カタログをベースに新規カタログイメージをビルドし、そのイメージにタグを付け、ミラーレジストリーにプッシュします。$ oc adm catalog build \ --appregistry-org redhat-operators \1 --from=registry.redhat.io/openshift4/ose-operator-registry:v4.4 \2 --filter-by-os="linux/amd64" \3 --to=<registry_host_name>:<port>/olm/redhat-operators:v2 \4 [-a ${REG_CREDS}] \5 [--insecure] \6 [--auth-token "${AUTH_TOKEN}"] 7 INFO[0013] loading Bundles dir=/var/folders/st/9cskxqs53ll3wdn434vw4cd80000gn/T/300666084/manifests-829192605 ... Pushed sha256:f73d42950021f9240389f99ddc5b0c7f1b533c054ba344654ff1edaf6bf827e3 to example_registry:5000/olm/redhat-operators:v2
- 1
- App Registry インスタンスからのプルに使用する組織 (namespace)。
- 2
- ターゲット OpenShift Container Platform クラスターのメジャーバージョンおよびマイナーバージョンに一致するタグを使用して、
--from
をose-operator-registry
ベースイメージに設定します。 - 3
--filter-by-os
を、ターゲットの OpenShift Container Platform クラスターと一致する必要のある、ベースイメージに使用するオペレーティングシステムおよびアーキテクチャーに設定します。使用できる値は、linux/amd64
、linux/ppc64le
、およびlinux/s390x
です。- 4
- カタログイメージに名前を付け、タグを追加します (更新済みのカタログの場合は
v2
などのタグ)。 - 5
- オプション: 必要な場合は、レジストリー認証情報ファイルの場所を指定します。
- 6
- オプション: ターゲットレジストリーの信頼を設定しない場合は、
--insecure
フラグを追加します。 - 7
- オプション: 公開されていない他のアプリケーションレジストリーカタログが使用されている場合、Quay 認証トークンを指定します。
カタログのコンテンツをターゲットレジストリーに対してミラーリングします。以下の
oc adm catalog mirror
コマンドは、カスタム Operator カタログイメージのコンテンツを抽出し、ミラーリングに必要なマニフェストを生成し、イメージをレジストリーにミラーリングします。$ oc adm catalog mirror \ <registry_host_name>:<port>/olm/redhat-operators:v2 \1 <registry_host_name>:<port> \ [-a ${REG_CREDS}] \2 [--insecure] \3 [--filter-by-os="<os>/<arch>"] 4 mirroring ...
- 1
- 新規の Operator カタログイメージを指定します。
- 2
- オプション: 必要な場合は、レジストリー認証情報ファイルの場所を指定します。
- 3
- オプション: ターゲットレジストリーの信頼を設定しない場合は、
--insecure
フラグを追加します。 - 4
- オプション: カタログは複数のアーキテクチャーおよびオペレーティングシステムをサポートするイメージを参照する可能性があるため、アーキテクチャーおよびオペレーティングシステムでフィルターして、一 致するイメージのみをミラーリングするようにできます。使用できる値は、
linux/amd64
、linux/ppc64le
、およびlinux/s390x
です。
新たに生成されたマニフェストを適用します。
$ oc apply -f ./redhat-operators-manifests
重要imageContentSourcePolicy.yaml
マニフェストを適用する必要がない場合があります。ファイルのdiff
を完了して、変更が必要かどうかを判断します。カタログイメージを参照する CatalogSource オブジェクトを更新します。
この CatalogSource の元の
catalogsource.yaml
ファイルがある場合:catalogsource.yaml
ファイルを編集し、spec.image
フィールドで新規カタログイメージを参照できるようにします。apiVersion: operators.coreos.com/v1alpha1 kind: CatalogSource metadata: name: my-operator-catalog namespace: openshift-marketplace spec: sourceType: grpc image: <registry_host_name>:<port>/olm/redhat-operators:v2 1 displayName: My Operator Catalog publisher: grpc
- 1
- 新規の Operator カタログイメージを指定します。
更新されたファイルを使用して CatalogSource オブジェクトを置き換えます。
$ oc replace -f catalogsource.yaml
または、以下のコマンドを使用して CatalogSource を編集し、
spec.image
パラメーターで新規カタログイメージを参照します。$ oc edit catalogsource <catalog_source_name> -n openshift-marketplace
更新された Operator は、OpenShift Container Platform クラスターの OperatorHub ページから利用できるようになりました。