非接続環境
非接続環境での OpenShift Container Platform クラスターの管理
概要
第1章 非接続環境について
非接続環境は、インターネットへの完全なアクセスがない環境です。
OpenShift Container Platform は、レジストリーからのリリースイメージの取得や、クラスターの更新パスや推奨事項の取得など、インターネット接続に依存する多くの自動機能を実行するように設計されています。直接インターネットに接続できない場合、非接続環境で機能を完全に維持するためには、追加でクラスターのセットアップと設定を行う必要があります。
1.1. 非接続環境に関する用語集
OpenShift Container Platform のドキュメント全体で使用されていますが、非接続環境 という用語はさまざまなレベルのインターネット接続を備えた環境を意味する場合もある広義の用語です。また、特定レベルのインターネット接続を意味する他の用語も使用されており、そのような環境では固有の設定が追加で必要な場合があります。
次の表は、完全なインターネット接続がない環境を指して使用されるさまざまな用語を説明しています。
用語 | 説明 |
---|---|
エアギャップネットワーク | 外部ネットワークから完全に分離された環境またはネットワーク。 この場合の分離は、内部ネットワーク上のマシンとそれ以外の外部ネットワーク部分との間が物理的に分離されていること ("エアギャップ") を意味します。エアギャップ環境は、厳格なセキュリティー要件や規制要件がある業界でよく使用されます。 |
非接続環境 | 外部ネットワークから、一定レベルの分離が存在する環境またはネットワーク。 この分離は、内部ネットワーク上のマシンと外部ネットワークを物理的にまたは論理的に分離することで実現できます。外部ネットワークからの分離レベルにかかわらず、非接続環境のクラスターは Red Hat がホストするパブリックサービスにアクセスできないため、クラスターの機能を完全に維持するためのセットアップが追加で必要になります。 |
制限付きネットワーク | 外部ネットワークへの接続が制限されている環境またはネットワーク。 内部ネットワーク上のマシンと外部ネットワークの間に物理的な接続が存在する場合もありますが、ネットワークトラフィックはファイアウォールやプロキシーなどの追加設定により制限されています。 |
1.2. 非接続環境で推奨される方法
非接続環境でのクラスター管理方法において、ほとんどの場合は複数のオプションから選択できます。たとえばイメージをミラーリングする場合は、oc-mirror OpenShift CLI (oc
) プラグインと oc adm
コマンドのどちらを使用するか選択できます。
ただし、一部のオプションについては、よりシンプルで便利なユーザーエクスペリエンスが非接続環境用に提供されており、他の方法よりも推奨されます。
組織のニーズに基づき別のオプションを選択する必要がない限り、イメージのミラーリング、クラスターのインストール、クラスターの更新には次の方法を使用してください。
- oc-mirror プラグイン を使用してイメージをミラーリングする。
- Agent-based Installer を使用してクラスターをインストールする。
- ローカルの OpenShift Update Service インスタンス を使用してクラスターを更新する。
第2章 接続クラスターの非接続クラスターへの変換
OpenShift Container Platform クラスターを接続クラスターから非接続クラスターに変換する必要のあるシナリオがある場合があります。
制限されたクラスターとも呼ばれる非接続クラスターには、インターネットへのアクティブな接続がありません。そのため、レジストリーおよびインストールメディアのコンテンツをミラーリングする必要があります。インターネットと閉じられたネットワークの両方にアクセスできるホスト上にこのミラーレジストリーを作成したり、ネットワークの境界を越えて移動できるデバイスにイメージをコピーしたりすることができます。
このトピックでは、既存の接続クラスターを非接続クラスターに変換する一般的なプロセスを説明します。
2.1. ミラーレジストリーについて
OpenShift Container Platform のインストールとその後の製品更新に必要なイメージは、Red Hat Quay、JFrog Artifactory、Sonatype Nexus Repository、Harbor などのコンテナーミラーレジストリーにミラーリングできます。大規模なコンテナーレジストリーにアクセスできない場合は、OpenShift Container Platform サブスクリプションに含まれる小規模なコンテナーレジストリーである Red Hat OpenShift 導入用のミラーレジストリー を使用できます。
Red Hat Quay、Red Hat OpenShift 導入用のミラーレジストリー、Artifactory、Sonatype Nexus リポジトリー、Harbor など、Dockerv2-2 をサポートする任意のコンテナーレジストリーを使用できます。選択したレジストリーに関係なく、インターネット上の Red Hat がホストするサイトから分離されたイメージレジストリーにコンテンツをミラーリングする手順は同じです。コンテンツをミラーリングした後に、各クラスターをミラーレジストリーからこのコンテンツを取得するように設定します。
OpenShift イメージレジストリーはターゲットレジストリーとして使用できません。これは、ミラーリングプロセスで必要となるタグを使わないプッシュをサポートしないためです。
Red Hat OpenShift 導入用のミラーレジストリー 以外のコンテナーレジストリーを選択する場合は、プロビジョニングするクラスター内の全マシンから到達可能である必要があります。レジストリーに到達できない場合、インストール、更新、またはワークロードの再配置などの通常の操作が失敗する可能性があります。そのため、ミラーレジストリーは可用性の高い方法で実行し、ミラーレジストリーは少なくとも OpenShift Container Platform クラスターの実稼働環境の可用性の条件に一致している必要があります。
ミラーレジストリーを OpenShift Container Platform イメージで設定する場合、2 つのシナリオを実行することができます。インターネットとミラーレジストリーの両方にアクセスできるホストがあり、クラスターノードにアクセスできない場合は、そのマシンからコンテンツを直接ミラーリングできます。このプロセスは、connected mirroring (接続ミラーリング) と呼ばれます。このようなホストがない場合は、イメージをファイルシステムにミラーリングしてから、そのホストまたはリムーバブルメディアを制限された環境に配置する必要があります。このプロセスは、disconnected mirroring (非接続ミラーリング) と呼ばれます。
ミラーリングされたレジストリーの場合は、プルされたイメージのソースを表示するには、CRI-O ログで Trying to access
のログエントリーを確認する必要があります。ノードで crictl images
コマンドを使用するなど、イメージのプルソースを表示する他の方法では、イメージがミラーリングされた場所からプルされている場合でも、ミラーリングされていないイメージ名を表示します。
Red Hat は、OpenShift Container Platform を使用してサードパーティーのレジストリーをテストしません。
2.2. 前提条件
-
oc
クライアントがインストールされている。 - 実行中のクラスター。
OpenShift Container Platform クラスターをホストする場所で Docker v2-2 をサポートするコンテナーイメージレジストリーであるミラーレジストリーがインストールされている (例: 以下のレジストリーのいずれか)。
Red Hat Quay のサブスクリプションをお持ちの場合は、Red Hat Quay のデプロイに関するドキュメントの 概念実証の目的、または Quay Operator の使用 を参照してください。
- ミラーリポジトリーは、イメージを共有するように設定される必要があります。たとえば、Red Hat Quay リポジトリーでは、イメージを共有するために Organizations が必要です。
- 必要なコンテナーイメージを取得するためのインターネットへのアクセス。
2.3. ミラーリングのためのクラスターの準備
クラスターの接続を切断する前に、非接続クラスター内のすべてのノードから到達可能なミラーレジストリーにイメージをミラーリングまたはコピーする必要があります。イメージをミラーリングするには、以下を実行してクラスターを準備する必要があります。
- ミラーレジストリー証明書をホストの信頼される CA のリストに追加する。
-
cloud.openshift.com
トークンからのイメージプルシークレットが含まれる.dockerconfigjson
ファイルを作成する。
手順
イメージのミラーリングを可能にする認証情報を設定します。
単純な PEM または DER ファイル形式で、ミラーレジストリーの CA 証明書を信頼される CA のリストに追加します。以下に例を示します。
$ cp </path/to/cert.crt> /usr/share/pki/ca-trust-source/anchors/
- ここでは、以下のようになります。,
</path/to/cert.crt>
- ローカルファイルシステムの証明書へのパスを指定します。
- ここでは、以下のようになります。,
CA 信頼を更新します。たとえば、Linux の場合は以下のようになります。
$ update-ca-trust
グローバルプルシークレットから
.dockerconfigjson
ファイルを展開します。$ oc extract secret/pull-secret -n openshift-config --confirm --to=.
出力例
.dockerconfigjson
.dockerconfigjson
ファイルを編集し、ミラーレジストリーおよび認証情報を追加し、これを新規ファイルとして保存します。{"auths":{"<local_registry>": {"auth": "<credentials>","email": "you@example.com"}}},"<registry>:<port>/<namespace>/":{"auth":"<token>"}}}
ここでは、以下のようになります。
<local_registry>
- ミラーレジストリーがコンテンツを提供するために使用するレジストリーのドメイン名およびポート (オプション) を指定します。
auth
- ミラーレジストリーの base64 でエンコードされたユーザー名およびパスワードを指定します。
<registry>:<port>/<namespace>
- ミラーレジストリーの詳細を指定します。
<token>
ミラーレジストリーの base64 でエンコードされた
username:password
を指定します。以下に例を示します。
$ {"auths":{"cloud.openshift.com":{"auth":"b3BlbnNoaWZ0Y3UjhGOVZPT0lOMEFaUjdPUzRGTA==","email":"user@example.com"}, "quay.io":{"auth":"b3BlbnNoaWZ0LXJlbGVhc2UtZGOVZPT0lOMEFaUGSTd4VGVGVUjdPUzRGTA==","email":"user@example.com"}, "registry.connect.redhat.com"{"auth":"NTE3MTMwNDB8dWhjLTFEZlN3VHkxOSTd4VGVGVU1MdTpleUpoYkdjaUailA==","email":"user@example.com"}, "registry.redhat.io":{"auth":"NTE3MTMwNDB8dWhjLTFEZlN3VH3BGSTd4VGVGVU1MdTpleUpoYkdjaU9fZw==","email":"user@example.com"}, "registry.svc.ci.openshift.org":{"auth":"dXNlcjpyWjAwWVFjSEJiT2RKVW1pSmg4dW92dGp1SXRxQ3RGN1pwajJhN1ZXeTRV"},"my-registry:5000/my-namespace/":{"auth":"dXNlcm5hbWU6cGFzc3dvcmQ="}}}
2.4. イメージのミラーリング
クラスターを適切に設定した後に、外部リポジトリーからミラーリポジトリーにイメージをミラーリングできます。
手順
Operator Lifecycle Manager (OLM) イメージをミラーリングします。
$ oc adm catalog mirror registry.redhat.io/redhat/redhat-operator-index:v{product-version} <mirror_registry>:<port>/olm -a <reg_creds>
ここでは、以下のようになります。
product-version
-
インストールする OpenShift Container Platform のバージョンに対応するタグを指定します (例:
4.8
)。 mirror_registry
-
Operator コンテンツをミラーリングするターゲットレジストリーおよび namespace の完全修飾ドメイン名 (FQDN) を指定します。ここで、
<namespace>
はレジストリーの既存の namespace です。 reg_creds
-
変更した
.dockerconfigjson
ファイルの場所を指定します。
以下に例を示します。
$ oc adm catalog mirror registry.redhat.io/redhat/redhat-operator-index:v4.8 mirror.registry.com:443/olm -a ./.dockerconfigjson --index-filter-by-os='.*'
他の Red Hat が提供する Operator の内容をミラーリングします。
$ oc adm catalog mirror <index_image> <mirror_registry>:<port>/<namespace> -a <reg_creds>
ここでは、以下のようになります。
index_image
- ミラーリングするカタログのインデックスイメージを指定します。
mirror_registry
-
Operator コンテンツをミラーリングするターゲットレジストリーの FQDN および namespace を指定します。ここで、
<namespace>
はレジストリーの既存の namespace です。 reg_creds
- オプション: 必要な場合は、レジストリー認証情報ファイルの場所を指定します。
以下に例を示します。
$ oc adm catalog mirror registry.redhat.io/redhat/community-operator-index:v4.8 mirror.registry.com:443/olm -a ./.dockerconfigjson --index-filter-by-os='.*'
OpenShift Container Platform イメージリポジトリーをミラーリングします。
$ oc adm release mirror -a .dockerconfigjson --from=quay.io/openshift-release-dev/ocp-release:v<product-version>-<architecture> --to=<local_registry>/<local_repository> --to-release-image=<local_registry>/<local_repository>:v<product-version>-<architecture>
ここでは、以下のようになります。
product-version
-
インストールする OpenShift Container Platform のバージョンに対応するタグを指定します (例:
4.8.15-x86_64
)。 architecture
-
サーバーのアーキテクチャーのタイプを指定します (例:
x86_64
)。 local_registry
- ミラーリポジトリーのレジストリードメイン名を指定します。
local_repository
-
レジストリーに作成するリポジトリーの名前を指定します (例:
ocp4/openshift4
)。
以下に例を示します。
$ oc adm release mirror -a .dockerconfigjson --from=quay.io/openshift-release-dev/ocp-release:4.8.15-x86_64 --to=mirror.registry.com:443/ocp/release --to-release-image=mirror.registry.com:443/ocp/release:4.8.15-x86_64
出力例
info: Mirroring 109 images to mirror.registry.com/ocp/release ... mirror.registry.com:443/ ocp/release manifests: sha256:086224cadce475029065a0efc5244923f43fb9bb3bb47637e0aaf1f32b9cad47 -> 4.8.15-x86_64-thanos sha256:0a214f12737cb1cfbec473cc301aa2c289d4837224c9603e99d1e90fc00328db -> 4.8.15-x86_64-kuryr-controller sha256:0cf5fd36ac4b95f9de506623b902118a90ff17a07b663aad5d57c425ca44038c -> 4.8.15-x86_64-pod sha256:0d1c356c26d6e5945a488ab2b050b75a8b838fc948a75c0fa13a9084974680cb -> 4.8.15-x86_64-kube-client-agent ….. sha256:66e37d2532607e6c91eedf23b9600b4db904ce68e92b43c43d5b417ca6c8e63c mirror.registry.com:443/ocp/release:4.5.41-multus-admission-controller sha256:d36efdbf8d5b2cbc4dcdbd64297107d88a31ef6b0ec4a39695915c10db4973f1 mirror.registry.com:443/ocp/release:4.5.41-cluster-kube-scheduler-operator sha256:bd1baa5c8239b23ecdf76819ddb63cd1cd6091119fecdbf1a0db1fb3760321a2 mirror.registry.com:443/ocp/release:4.5.41-aws-machine-controllers info: Mirroring completed in 2.02s (0B/s) Success Update image: mirror.registry.com:443/ocp/release:4.5.41-x86_64 Mirror prefix: mirror.registry.com:443/ocp/release
必要に応じて他のレジストリーをミラーリングします。
$ oc image mirror <online_registry>/my/image:latest <mirror_registry>
関連情報
- Operator カタログのミラーリングの詳細は、Mirroring an Operator catalogを参照してください。
-
oc adm catalog mirror
コマンドの詳細は、OpenShift CLI administrator command referenceを参照してください。
2.5. ミラーレジストリー用のクラスターの設定
イメージを作成し、ミラーレジストリーにミラーリングした後に、Pod がミラーレジストリーからイメージをプルできるようにクラスターを変更する必要があります。
以下を行う必要があります。
- ミラーレジストリー認証情報をグローバルプルシークレットに追加します。
- ミラーレジストリーサーバー証明書をクラスターに追加します。
ミラーレジストリーをソースレジストリーに関連付ける
ImageContentSourcePolicy
カスタムリソース (ICSP) を作成します。ミラーレジストリー認証情報をクラスターのグローバル pull-secret に追加します。
$ oc set data secret/pull-secret -n openshift-config --from-file=.dockerconfigjson=<pull_secret_location> 1
- 1
- 新規プルシークレットファイルへのパスを指定します。
以下に例を示します。
$ oc set data secret/pull-secret -n openshift-config --from-file=.dockerconfigjson=.mirrorsecretconfigjson
CA 署名のミラーレジストリーサーバー証明書をクラスター内のノードに追加します。
ミラーレジストリーのサーバー証明書が含まれる設定マップを作成します。
$ oc create configmap <config_map_name> --from-file=<mirror_address_host>..<port>=$path/ca.crt -n openshift-config
以下に例を示します。
S oc create configmap registry-config --from-file=mirror.registry.com..443=/root/certs/ca-chain.cert.pem -n openshift-config
設定マップを使用して
image.config.openshift.io/cluster
カスタムリソース (CR) を更新します。OpenShift Container Platform は、この CR への変更をクラスター内のすべてのノードに適用します。$ oc patch image.config.openshift.io/cluster --patch '{"spec":{"additionalTrustedCA":{"name":"<config_map_name>"}}}' --type=merge
以下に例を示します。
$ oc patch image.config.openshift.io/cluster --patch '{"spec":{"additionalTrustedCA":{"name":"registry-config"}}}' --type=merge
ICSP を作成し、オンラインレジストリーからミラーレジストリーにコンテナープルリクエストをリダイレクトします。
ImageContentSourcePolicy
カスタムリソースを作成します。apiVersion: operator.openshift.io/v1alpha1 kind: ImageContentSourcePolicy metadata: name: mirror-ocp spec: repositoryDigestMirrors: - mirrors: - mirror.registry.com:443/ocp/release 1 source: quay.io/openshift-release-dev/ocp-release 2 - mirrors: - mirror.registry.com:443/ocp/release source: quay.io/openshift-release-dev/ocp-v4.0-art-dev
ICSP オブジェクトを作成します。
$ oc create -f registryrepomirror.yaml
出力例
imagecontentsourcepolicy.operator.openshift.io/mirror-ocp created
OpenShift Container Platform は、この CR への変更をクラスター内のすべてのノードに適用します。
ミラーレジストリーの認証情報、CA、および ICSP が追加されていることを確認します。
ノードにログインします。
$ oc debug node/<node_name>
/host
をデバッグシェル内のルートディレクトリーとして設定します。sh-4.4# chroot /host
config.json
ファイルで認証情報の有無を確認します。sh-4.4# cat /var/lib/kubelet/config.json
出力例
{"auths":{"brew.registry.redhat.io":{"xx=="},"brewregistry.stage.redhat.io":{"auth":"xxx=="},"mirror.registry.com:443":{"auth":"xx="}}} 1
- 1
- ミラーレジストリーおよび認証情報が存在することを確認します。
certs.d
ディレクトリーに移動します。sh-4.4# cd /etc/docker/certs.d/
certs.d
ディレクトリーの証明書を一覧表示します。sh-4.4# ls
出力例
image-registry.openshift-image-registry.svc.cluster.local:5000 image-registry.openshift-image-registry.svc:5000 mirror.registry.com:443 1
- 1
- ミラーレジストリーがリストにあることを確認します。
ICSP がミラーレジストリーを
registries.conf
ファイルに追加していることを確認します。sh-4.4# cat /etc/containers/registries.conf
出力例
unqualified-search-registries = ["registry.access.redhat.com", "docker.io"] [[registry]] prefix = "" location = "quay.io/openshift-release-dev/ocp-release" mirror-by-digest-only = true [[registry.mirror]] location = "mirror.registry.com:443/ocp/release" [[registry]] prefix = "" location = "quay.io/openshift-release-dev/ocp-v4.0-art-dev" mirror-by-digest-only = true [[registry.mirror]] location = "mirror.registry.com:443/ocp/release"
registry.mirror
パラメーターは、ミラーレジストリーが元のレジストリーの前に検索されることを示します。ノードを終了します。
sh-4.4# exit
2.6. アプリケーションが引き続き動作することの確認
ネットワークからクラスターを切断する前に、クラスターが想定どおりに機能しており、すべてのアプリケーションが想定どおりに機能していることを確認します。
手順
以下のコマンドを使用して、クラスターのステータスを確認します。
Pod が実行されていることを確認します。
$ oc get pods --all-namespaces
出力例
NAMESPACE NAME READY STATUS RESTARTS AGE kube-system apiserver-watcher-ci-ln-47ltxtb-f76d1-mrffg-master-0 1/1 Running 0 39m kube-system apiserver-watcher-ci-ln-47ltxtb-f76d1-mrffg-master-1 1/1 Running 0 39m kube-system apiserver-watcher-ci-ln-47ltxtb-f76d1-mrffg-master-2 1/1 Running 0 39m openshift-apiserver-operator openshift-apiserver-operator-79c7c646fd-5rvr5 1/1 Running 3 45m openshift-apiserver apiserver-b944c4645-q694g 2/2 Running 0 29m openshift-apiserver apiserver-b944c4645-shdxb 2/2 Running 0 31m openshift-apiserver apiserver-b944c4645-x7rf2 2/2 Running 0 33m ...
ノードが READY のステータスにあることを確認します。
$ oc get nodes
出力例
NAME STATUS ROLES AGE VERSION ci-ln-47ltxtb-f76d1-mrffg-master-0 Ready master 42m v1.30.3 ci-ln-47ltxtb-f76d1-mrffg-master-1 Ready master 42m v1.30.3 ci-ln-47ltxtb-f76d1-mrffg-master-2 Ready master 42m v1.30.3 ci-ln-47ltxtb-f76d1-mrffg-worker-a-gsxbz Ready worker 35m v1.30.3 ci-ln-47ltxtb-f76d1-mrffg-worker-b-5qqdx Ready worker 35m v1.30.3 ci-ln-47ltxtb-f76d1-mrffg-worker-c-rjkpq Ready worker 34m v1.30.3
2.7. ネットワークからクラスターを切断します。
すべての必要なリポジトリーをミラーリングし、非接続クラスターとして機能するようにクラスターを設定した後に、ネットワークからクラスターを切断できます。
クラスターがインターネット接続を失うと、Insights Operator のパフォーマンスが低下します。復元できるまで、一時的に Insights Operator を無効にする ことで、この問題を回避できます。
2.8. パフォーマンスが低下した Insights Operator の復元
ネットワークからクラスターを切断すると、クラスターのインターネット接続が失われます。Insights Operator は Red Hat Insights へのアクセスが必要であるため、そのパフォーマンスが低下します。
このトピックでは、Insights Operator をパフォーマンスが低下した状態から復元する方法を説明します。
手順
.dockerconfigjson
ファイルを編集し、cloud.openshift.com
エントリーを削除します。以下に例を示します。"cloud.openshift.com":{"auth":"<hash>","email":"user@example.com"}
- ファイルを保存します。
編集した
.dockerconfigjson
ファイルでクラスターシークレットを更新します。$ oc set data secret/pull-secret -n openshift-config --from-file=.dockerconfigjson=./.dockerconfigjson
Insights Operator のパフォーマンスが低下しなくなったことを確認します。
$ oc get co insights
出力例
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE insights 4.5.41 True False False 3d
2.9. ネットワークの復元
非接続クラスターを再接続し、オンラインレジストリーからイメージをプルする場合は、クラスターの ImageContentSourcePolicy (ICSP) オブジェクトを削除します。ICSP がない場合、外部レジストリーへのプルリクエストはミラーレジストリーにリダイレクトされなくなります。
手順
クラスターの ICSP オブジェクトを表示します。
$ oc get imagecontentsourcepolicy
出力例
NAME AGE mirror-ocp 6d20h ocp4-index-0 6d18h qe45-index-0 6d15h
クラスターの切断時に作成した ICSP オブジェクトをすべて削除します。
$ oc delete imagecontentsourcepolicy <icsp_name> <icsp_name> <icsp_name>
以下に例を示します。
$ oc delete imagecontentsourcepolicy mirror-ocp ocp4-index-0 qe45-index-0
出力例
imagecontentsourcepolicy.operator.openshift.io "mirror-ocp" deleted imagecontentsourcepolicy.operator.openshift.io "ocp4-index-0" deleted imagecontentsourcepolicy.operator.openshift.io "qe45-index-0" deleted
すべてのノードが再起動して READY ステータスに戻るまで待ち、
registries.conf
ファイルがミラーレジストリーではなく、元のレジストリーを参照していることを確認します。ノードにログインします。
$ oc debug node/<node_name>
/host
をデバッグシェル内のルートディレクトリーとして設定します。sh-4.4# chroot /host
registries.conf
ファイルを確認します。sh-4.4# cat /etc/containers/registries.conf
出力例
unqualified-search-registries = ["registry.access.redhat.com", "docker.io"] 1
- 1
- 削除した ICSP によって作成された
registry
およびregistry.mirror
エントリーが削除されています。
第3章 非接続環境でのミラーリング
3.1. 非接続インストールミラーリングについて
ミラーレジストリーを使用して、クラスターが、外部コンテンツに対する組織の制御条件を満たすコンテナーイメージのみを使用するようにすることができます。ネットワークが制限された環境でプロビジョニングするインフラストラクチャーにクラスターをインストールする前に、必要なコンテナーイメージをその環境にミラーリングする必要があります。コンテナーイメージをミラーリングするには、ミラーリング用のレジストリーが必要です。
3.1.1. ミラーレジストリーの作成
Red Hat Quay などのコンテナーイメージレジストリーがすでにある場合は、それをミラーレジストリーとして使用できます。レジストリーをまだ持っていない場合は、Red Hat OpenShift のミラーレジストリー を使用して、ミラーレジストリーを作成 できます。
3.1.2. 非接続インストールのイメージのミラーリング
以下の手順のいずれかを使用して、OpenShift Container Platform イメージリポジトリーをミラーレジストリーにミラーリングできます。
3.2. Red Hat OpenShift 導入用のミラーレジストリーを使用したミラーレジストリーの作成
Red Hat OpenShift 導入用のミラーレジストリー は、切断されたインストールに必要な OpenShift Container Platform のコンテナーイメージのミラーリングターゲットとして使用できる小規模で合理化されたコンテナーレジストリーです。
Red Hat Quay などのコンテナーイメージレジストリーがすでにある場合は、このセクションをスキップして、OpenShift Container Platform イメージリポジトリーのミラーリング に直接進むことができます。
3.2.1. 前提条件
- OpenShift Container Platform サブスクリプション
- Podman 3.4.2 以降および OpenSSL がインストールされている Red Hat Enterprise Linux (RHEL) 8 および 9。
- Red Hat Quay サービスの完全修飾ドメイン名。DNS サーバーを介して解決する必要があります。
- ターゲットホストでのキーベースの SSH 接続。SSH キーは、ローカルインストール用に自動的に生成されます。リモートホストの場合は、独自の SSH キーを生成する必要があります。
- vCPU 2 つ以上。
- RAM 8 GB。
OpenShift Container Platform 4.17 リリースイメージ用に約 12 GB、または OpenShift Container Platform 4.17 リリースイメージおよび OpenShift Container Platform 4.17 Red Hat Operator イメージ用に約 358 GB。ストリームあたり最大 1 TB 以上が推奨されます。
重要これらの要件は、リリースイメージと Operator イメージのみを使用したローカルテスト結果に基づいています。ストレージ要件は、組織のニーズによって異なります。たとえば、複数の z-stream をミラーリングする場合は、より多くのスペースが必要になることがあります。標準の Red Hat Quay 機能 または適切な API コールアウト を使用して不要なイメージを削除し、スペースを解放できます。
3.2.2. Red Hat OpenShift 導入用のミラーレジストリー
OpenShift Container Platform の切断されたデプロイメントの場合に、クラスターのインストールを実行するためにコンテナーレジストリーが必要です。このようなクラスターで実稼働レベルのレジストリーサービスを実行するには、別のレジストリーデプロイメントを作成して最初のクラスターをインストールする必要があります。Red Hat OpenShift 導入用のミラーレジストリー は、このニーズに対応し、すべての OpenShift サブスクリプションに含まれています。これは、OpenShift コンソールの ダウンロード ページからダウンロードできます。
Red Hat OpenShift 導入用のミラーレジストリー を使用すると、ユーザーは、mirror-registry
コマンドラインインターフェイス (CLI) ツールを使用して、Red Hat Quay の小規模バージョンとその必要なコンポーネントをインストールできます。Red Hat OpenShift 導入用のミラーレジストリー は、事前設定されたローカルストレージとローカルデータベースを使用して自動的にデプロイされます。また、このレジストリーには、自動生成されたユーザー認証情報とアクセス許可も含まれており、単一の入力セットを使用するだけで開始でき、追加の設定を選択する必要はありません。
Red Hat OpenShift のミラーレジストリー は、事前に決定されたネットワーク設定を提供し、成功時にデプロイされたコンポーネントの認証情報とアクセス URL を報告します。完全修飾ドメイン名 (FQDN) サービス、スーパーユーザー名とパスワード、カスタム TLS 証明書などのオプションの設定入力のセットも少しだけ含まれています。これにより、ユーザーはコンテナーレジストリーを利用できるため、制限されたネットワーク環境で OpenShift Container Platform を実行するときに、すべての OpenShift Container Platform リリースコンテンツのオフラインミラーを簡単に作成できます。
インストール環境で別のコンテナーレジストリーがすでに使用可能な場合、Red Hat OpenShift 導入用のミラーレジストリー の使用はオプションです。
3.2.2.1. Red Hat OpenShift のミラーレジストリーに関する制限
Red Hat OpenShift のミラーレジストリー には次の制限が適用されます。
- Red Hat OpenShift のミラーレジストリー は高可用性レジストリーではなく、ローカルファイルシステムストレージのみがサポートされます。Red Hat Quay や OpenShift Container Platform の内部イメージレジストリーを置き換えることを目的としたものではありません。
- Red Hat OpenShift のミラーレジストリー は、Red Hat Quay の実稼働デプロイメントの代替となることを意図したものではありません。
Red Hat OpenShift のミラーレジストリー は、Release イメージや Red Hat Operator イメージなど、接続されていない OpenShift Container Platform クラスターのインストールに必要なイメージをホストする場合にのみサポートされます。Red Hat Enterprise Linux (RHEL) マシンのローカルストレージを使用して、RHEL でサポートされるストレージは、Red Hat OpenShift 導入用のミラーレジストリー でサポートされます。
注記Red Hat OpenShift のミラーレジストリー はローカルストレージを使用します。そのため、イメージをミラーリングするときには、消費されるストレージの使用量に常に注意し、潜在的な問題を軽減するために Red Hat Quay のガベージコレクション機能を使用してください。この機能の詳細は、「Red Hat Quay ガベージコレクション」を参照してください。
- ブートストラップ目的で Red Hat OpenShift のミラーレジストリー にプッシュされる Red Hat 製品イメージのサポートは、各製品の有効なサブスクリプションでカバーされます。ブートストラップエクスペリエンスをさらに有効にする例外のリストは、セルフマネージド Red Hat OpenShift のサイジングおよびサブスクリプションガイド に記載されています。
- お客様が作成したコンテンツは、Red Hat OpenShift のミラーレジストリー でホストしないでください。
- クラスターのグループの更新時にクラスターが複数あると単一障害点を生み出す可能性があるため、複数のクラスターで Red Hat OpenShift のミラーレジストリー を使用することは推奨されません。Red Hat OpenShift 導入用のミラーレジストリーを活用して、OpenShift Container Platform コンテンツを他のクラスターに提供できる Red Hat Quay などの実稼働環境レベルの高可用性レジストリーをホストできるクラスターをインストールすることを推奨します。
3.2.3. Red Hat OpenShift 導入用のミラーレジストリーを使用したローカルホストでのミラーリング
この手順では、mirror-registry
インストーラーツールを使用して、Red Hat OpenShift 導入用のミラーレジストリーをローカルホストにインストールする方法を説明します。このツールを使用することで、ユーザーは、OpenShift Container Platform イメージのミラーを保存する目的で、ポート 443 で実行されるローカルホストレジストリーを作成できます。
mirror-registry
CLI ツールを使用してRed Hat OpenShift 導入用のミラーレジストリー をインストールすると、マシンにいくつかの変更が加えられます。インストール後、インストールファイル、ローカルストレージ、および設定バンドルを含む $HOME/quay-install
ディレクトリーが作成されます。デプロイ先がローカルホストである場合には、信頼できる SSH キーが生成され、コンテナーのランタイムが永続的になるようにホストマシン上の systemd ファイルが設定されます。さらに、init
という名前の初期ユーザーが、自動生成されたパスワードを使用して作成されます。すべてのアクセス認証情報は、インストール操作の最後に出力されます。
手順
-
OpenShift コンソールの ダウンロード ページにある Red Hat OpenShift 導入用のミラーレジストリー の最新バージョンは、
mirror-registry.tar.gz
パッケージをダウンロードしてください。 mirror-registry
ツールを使用して、現在のユーザーアカウントでローカルホストにRed Hat OpenShift 導入用のミラーレジストリー をインストールします。使用可能なフラグの完全なリストは、「Red Hat OpenShift フラグのミラーレジストリー」を参照してください。$ ./mirror-registry install \ --quayHostname <host_example_com> \ --quayRoot <example_directory_name>
インストール中に生成されたユーザー名とパスワードを使用して、次のコマンドを実行してレジストリーにログインします。
$ podman login -u init \ -p <password> \ <host_example_com>:8443> \ --tls-verify=false 1
- 1
- 生成された rootCA 証明書を信頼するようにシステムを設定して、
--tls-verify=false
の実行を回避できます。詳細は、「SSL を使用した Red Hat Quay への接続の保護」および「認証局を信頼するようにシステムを設定する」を参照してください。
注記インストール後、
https:// <host.example.com>:8443
の UI にアクセスしてログインすることもできます。ログイン後、OpenShift Container Platform イメージをミラーリングできます。必要に応じて、このドキュメントの「OpenShift Container Platform イメージリポジトリーのミラーリング」または、「非接続クラスターで使用する Operator カタログのミラーリング」セクションを参照してください。
注記ストレージレイヤーの問題が原因でRed Hat OpenShift 導入用のミラーレジストリー で保存されたイメージに問題がある場合は、OpenShift Container Platform イメージを再ミラーリングするか、より安定したストレージにミラーレジストリーを再インストールできます。
3.2.4. ローカルホストからの Red Hat OpenShift 導入用のミラーレジストリーの更新
この手順では、upgrade
コマンドを使用してローカルホストから Red Hat OpenShift 導入用のミラーレジストリー を更新する方法を説明します。最新バージョンに更新することで、新機能、バグ修正およびセキュリティー脆弱性の修正が保証されます。
バージョン 1 からバージョン 2 にアップグレードする場合は、次の制約に注意してください。
-
SQLite では複数の書き込みが許可されていないため、ワーカー数が
1
に設定されます。 - mirror registry for Red Hat OpenShift のユーザーインターフェイス (UP) を使用しないでください。
-
アップグレード中は
sqlite-storage
Podman ボリュームにアクセスしないでください。 - アップグレードプロセス中にミラーレジストリーが再起動されるため、ミラーレジストリーのダウンタイムが断続的に発生します。
-
PostgreSQL のデータは、復旧用に
/$HOME/quay-instal/quay-postgres-backup/
ディレクトリーにバックアップされます。
前提条件
- Red Hat OpenShift 導入用のミラーレジストリー をローカルホストにインストールしている。
手順
mirror registry for Red Hat OpenShift を 1.3 → 2.y にアップグレードする場合、インストールディレクトリーがデフォルトの
/etc/quay-install
である場合は、次のコマンドを入力できます。$ sudo ./mirror-registry upgrade -v
注記-
Red Hat OpenShift のミラーレジストリー は、Quay ストレージ、Postgres データ、および
/etc/quay-install
データの Podman ボリュームを新しい$HOME/quay-install
の場所に移行します。これにより、今後のアップグレード時に--quayRoot
フラグなしで Red Hat OpenShift のミラーレジストリー を使用できます。 -
./mirr-registry upgrade -v
フラグを使用して Red Hat OpenShift のミラーレジストリー をアップグレードする場合は、ミラーレジストリーの作成時に使用したものと同じ認証情報を含める必要があります。たとえば、Red Hat OpenShift 導入用のミラーレジストリー を--quayHostname<host_example_com>
および--quayRoot<example_directory_name>
でインストールした場合、ミラーレジストリーを適切にアップグレードするには、その文字列を含める必要があります。
-
Red Hat OpenShift のミラーレジストリー は、Quay ストレージ、Postgres データ、および
mirror registry for Red Hat OpenShift を 1.3 → 2.y にアップグレードする場合、1.y デプロイメントでカスタムの quay 設定とストレージディレクトリーを使用していた場合は、
--quayRoot
フラグと--quayStorage
フラグを渡す必要があります。以下に例を示します。$ sudo ./mirror-registry upgrade --quayHostname <host_example_com> --quayRoot <example_directory_name> --quayStorage <example_directory_name>/quay-storage -v
mirror registry for Red Hat OpenShift を 1.3 → 2.y にアップグレードし、カスタムの SQLite ストレージパスを指定する場合は、
--sqliteStorage
フラグを渡す必要があります。次に例を示します。$ sudo ./mirror-registry upgrade --sqliteStorage <example_directory_name>/sqlite-storage -v
3.2.5. Red Hat OpenShift 導入用のミラーレジストリーを使用したリモートホストでのミラーリング
この手順では、mirror-registry
ツールを使用して、Red Hat OpenShift 導入用のミラーレジストリー をリモートホストにインストールする方法を説明します。そうすることで、ユーザーは OpenShift Container Platform イメージのミラーを保持するレジストリーを作成できます。
mirror-registry
CLI ツールを使用してRed Hat OpenShift 導入用のミラーレジストリー をインストールすると、マシンにいくつかの変更が加えられます。インストール後、インストールファイル、ローカルストレージ、および設定バンドルを含む $HOME/quay-install
ディレクトリーが作成されます。デプロイ先がローカルホストである場合には、信頼できる SSH キーが生成され、コンテナーのランタイムが永続的になるようにホストマシン上の systemd ファイルが設定されます。さらに、init
という名前の初期ユーザーが、自動生成されたパスワードを使用して作成されます。すべてのアクセス認証情報は、インストール操作の最後に出力されます。
手順
-
OpenShift コンソールの ダウンロード ページにある Red Hat OpenShift 導入用のミラーレジストリー の最新バージョンは、
mirror-registry.tar.gz
パッケージをダウンロードしてください。 mirror-registry
ツールを使用して、現在のユーザーアカウントでローカルホストにRed Hat OpenShift 導入用のミラーレジストリー をインストールします。使用可能なフラグの完全なリストは、「Red Hat OpenShift フラグのミラーレジストリー」を参照してください。$ ./mirror-registry install -v \ --targetHostname <host_example_com> \ --targetUsername <example_user> \ -k ~/.ssh/my_ssh_key \ --quayHostname <host_example_com> \ --quayRoot <example_directory_name>
インストール中に生成されたユーザー名とパスワードを使用して、次のコマンドを実行してミラーレジストリーにログインします。
$ podman login -u init \ -p <password> \ <host_example_com>:8443> \ --tls-verify=false 1
- 1
- 生成された rootCA 証明書を信頼するようにシステムを設定して、
--tls-verify=false
の実行を回避できます。詳細は、「SSL を使用した Red Hat Quay への接続の保護」および「認証局を信頼するようにシステムを設定する」を参照してください。
注記インストール後、
https:// <host.example.com>:8443
の UI にアクセスしてログインすることもできます。ログイン後、OpenShift Container Platform イメージをミラーリングできます。必要に応じて、このドキュメントの「OpenShift Container Platform イメージリポジトリーのミラーリング」または、「非接続クラスターで使用する Operator カタログのミラーリング」セクションを参照してください。
注記ストレージレイヤーの問題が原因でRed Hat OpenShift 導入用のミラーレジストリー で保存されたイメージに問題がある場合は、OpenShift Container Platform イメージを再ミラーリングするか、より安定したストレージにミラーレジストリーを再インストールできます。
3.2.6. リモートホストからの Red Hat OpenShift 導入用のミラーレジストリーの更新
この手順では、upgrade
コマンドを使用してリモートホストから Red Hat OpenShift 導入用のミラーレジストリー を更新する方法を説明します。最新バージョンへの更新により、バグ修正およびセキュリティー脆弱性の修正が確保されます。
バージョン 1 からバージョン 2 にアップグレードする場合は、次の制約に注意してください。
-
SQLite では複数の書き込みが許可されていないため、ワーカー数が
1
に設定されます。 - mirror registry for Red Hat OpenShift のユーザーインターフェイス (UP) を使用しないでください。
-
アップグレード中は
sqlite-storage
Podman ボリュームにアクセスしないでください。 - アップグレードプロセス中にミラーレジストリーが再起動されるため、ミラーレジストリーのダウンタイムが断続的に発生します。
-
PostgreSQL のデータは、復旧用に
/$HOME/quay-instal/quay-postgres-backup/
ディレクトリーにバックアップされます。
前提条件
- Red Hat OpenShift 導入用のミラーレジストリー をリモートホストにインストールしている。
手順
Red Hat OpenShift 導入用のミラーレジストリー をリモートホストからアップグレードするには、以下のコマンドを入力します。
$ ./mirror-registry upgrade -v --targetHostname <remote_host_url> --targetUsername <user_name> -k ~/.ssh/my_ssh_key
注記./mirror-registry upgrade -v
フラグを使用して Red Hat OpenShift 導入用のミラーレジストリー をアップグレードするユーザーは、ミラーレジストリーの作成時に使用したものと同じクレデンシャルを含める必要があります。たとえば、Red Hat OpenShift 導入用のミラーレジストリー を--quayHostname<host_example_com>
および--quayRoot<example_directory_name>
でインストールした場合、ミラーレジストリーを適切にアップグレードするには、その文字列を含める必要があります。mirror registry for Red Hat OpenShift を 1.3 → 2.y にアップグレードし、カスタムの SQLite ストレージパスを指定する場合は、
--sqliteStorage
フラグを渡す必要があります。次に例を示します。$ ./mirror-registry upgrade -v --targetHostname <remote_host_url> --targetUsername <user_name> -k ~/.ssh/my_ssh_key --sqliteStorage <example_directory_name>/quay-storage
3.2.7. Red Hat OpenShift SSL/TLS 証明書のミラーレジストリーの置き換え
Red Hat OpenShift のミラーレジストリー の SSL/TLS 証明書を更新する必要がある場合もあるはずです。これは、以下のシナリオで役に立ちます。
- 現在の Red Hat OpenShift のミラーレジストリー 証明書を置き換える場合。
- 以前の Red Hat OpenShift のミラーレジストリー インストールと同じ証明書を使用している場合。
- Red Hat OpenShift のミラーレジストリー 証明書を定期的に更新している場合。
Red Hat OpenShift のミラーレジストリー の SSL/TLS 証明書を置き換えるには、次の手順を使用します。
前提条件
-
OpenShift コンソールの ダウンロード ページから
./mirror-registry
バイナリーをダウンロードしている。
手順
次のコマンドを入力して、Red Hat OpenShift のミラーレジストリー をインストールします。
$ ./mirror-registry install \ --quayHostname <host_example_com> \ --quayRoot <example_directory_name>
Red Hat OpenShift のミラーレジストリー が
$HOME/quay-install
ディレクトリーにインストールされます。-
新しい認証局 (CA) バンドルを準備し、新しい
ssl.key
およびssl.crt
キーファイルを生成します。詳細は、Red Hat Quay への接続を保護するための SSL/TLS の使用 を参照してください。 次のコマンドを入力して、
/$HOME/quay-install
に環境変数 (QUAY
など) を割り当てます。$ export QUAY=/$HOME/quay-install
次のコマンドを入力して、新しい
ssl.crt
ファイルを/$HOME/quay-install
ディレクトリーにコピーします。$ cp ~/ssl.crt $QUAY/quay-config
次のコマンドを入力して、新しい
ssl.key
ファイルを/$HOME/quay-install
ディレクトリーにコピーします。$ cp ~/ssl.key $QUAY/quay-config
次のコマンドを入力して、
quay-app
アプリケーション Pod を再起動します。$ systemctl restart quay-app
3.2.8. Red Hat OpenShift 導入用のミラーレジストリーのアンインストール
次のコマンドを実行して、ローカルホストから Red Hat OpenShift 導入用のミラーレジストリー をアンインストールできます。
$ ./mirror-registry uninstall -v \ --quayRoot <example_directory_name>
注記-
Red Hat OpenShift 導入用のミラーレジストリー を削除しようとと、削除前にユーザーにプロンプトが表示されます。
--autoApprove
を使用して、このプロンプトをスキップできます。 -
--quayRoot
フラグを指定して Red Hat OpenShift 導入用のミラーレジストリー をインストールした場合には、アンインストール時に--quayRoot
フラグを含める必要があります。たとえば、Red Hat OpenShift 導入用のミラーレジストリー のインストールで--quayRoot example_directory_name
を指定した場合には、この文字列を追加して、ミラーレジストリーを適切にアンインストールする必要があります。
-
Red Hat OpenShift 導入用のミラーレジストリー を削除しようとと、削除前にユーザーにプロンプトが表示されます。
3.2.9. mirror registry for Red Hat OpenShift のフラグ
mirror registry for Red Hat OpenShift では、次のフラグを使用できます。
Flags | 説明 |
---|---|
|
対話型プロンプトを無効にするブール値。 |
| Quay のインストール中に作成された init ユーザーのパスワード。空白を含まず、8 文字以上にする必要があります。 |
|
初期ユーザーのユーザー名を表示します。指定しない場合、デフォルトで |
| インストール、アンインストール、およびアップグレードコマンドの実行時に、ユーザーがカラーシーケンスを無効にして、それを Ansible に伝播できるようにします。 |
|
クライアントがレジストリーへの接続に使用するミラーレジストリーの完全修飾ドメイン名。Quay |
|
Quay 永続ストレージデータが保存されるフォルダー。デフォルトは |
|
|
|
SQLite データベースデータが保存されるフォルダー。指定されていない場合は、デフォルトで |
|
SSH ID キーのパス。指定しない場合、デフォルトは |
|
SSL/TLS 公開鍵/証明書へのパス。デフォルトは |
|
|
|
HTTPS 通信に使用される SSL/TLS 秘密鍵へのパス。デフォルトは |
|
Quay のインストール先のホスト名。デフォルトは |
|
SSH に使用するターゲットホストのユーザー。デフォルトは |
| デバッグログと Ansible Playbook の出力を表示します。 |
| mirror registry for Red Hat OpenShift のバージョンを表示します。 |
-
システムのパブリック DNS 名がローカルホスト名と異なる場合は、
--quayHostname
を変更する必要があります。さらに、--quayHostname
フラグは、IP アドレスを使用したインストールをサポートしていません。ホスト名を使用してインストールする必要があります。 -
--sslCheckSkip
は、ミラーレジストリーがプロキシーの背後に設定されており、公開されているホスト名が内部の Quay ホスト名と異なる場合に使用されます。また、インストール中に、指定した Quay ホスト名に対して証明書の検証を行わない場合にも使用できます。
3.2.10. mirror registry for Red Hat OpenShift のリリースノート
mirror registry for Red Hat OpenShift は、非接続環境でのインストールに使用する OpenShift Container Platform の必要なコンテナーイメージをミラーリングするためのターゲットとして使用できる、小規模で効率的なコンテナーレジストリーです。
以下のリリースノートは、OpenShift Container Platform の mirror registry for Red Hat OpenShift の開発状況を記録したものです。
3.2.10.1. mirror registry for Red Hat OpenShift 2.0 のリリースノート
以下のセクションでは、mirror registry for Red Hat OpenShift の 2.0 リリースの詳細をそれぞれ説明します。
3.2.10.1.1. Red Hat OpenShift 2.0.3 のミラーレジストリー
発行日:2024 年 11 月 25 日
Red Hat Openshift 導入 用のミラーレジストリー が Red Hat Quay 3.12.3 で利用できるようになりました。
mirror registry for Red Hat OpenShift については、次のアドバイザリーが提供されています。
3.2.10.1.2. mirror registry for Red Hat OpenShift 2.0.2
発行日: 2024 年 10 月 31 日
mirror registry for Red Hat OpenShift が Red Hat Quay 3.12.2 で利用できるようになりました。
mirror registry for Red Hat OpenShift については、次のアドバイザリーが提供されています。
3.2.10.1.3. mirror registry for Red Hat OpenShift 2.0.1
発行日: 2024 年 9 月 26 日
mirror registry for Red Hat OpenShift が Red Hat Quay 3.12.1 で利用できるようになりました。
mirror registry for Red Hat OpenShift については、次のアドバイザリーが提供されています。
3.2.10.1.4. mirror registry for Red Hat OpenShift 2.0.0
発行日: 2024 年 9 月 3 日
mirror registry for Red Hat OpenShift が Red Hat Quay 3.12.0 で利用できるようになりました。
mirror registry for Red Hat OpenShift については、次のアドバイザリーが提供されています。
3.2.10.1.4.1. 新機能
mirror registry for Red Hat OpenShift のリリースに伴い、内部データベースが PostgreSQL から SQLite にアップグレードされました。その結果、データがデフォルトで
sqlite-storage
Podman ボリュームに保存されるようになり、tarball 全体のサイズが 300 MB 削減されました。新規インストールではデフォルトで SQLite が使用されます。バージョン 2.0 にアップグレードする前に、環境に応じて「ローカルホストからの mirror registry for Red Hat OpenShift の更新」または「リモートホストからの mirror registry for Red Hat OpenShift の更新」を参照してください。
-
新しい機能フラグ
--sqliteStorage
が追加されました。このフラグを使用すると、SQLite データベースのデータを保存する場所を手動で設定できます。
3.2.10.2. mirror registry for Red Hat OpenShift 1.3 のリリースノート
mirror registry for Red Hat OpenShift 1.3 のリリースノートを確認するには、mirror registry for Red Hat OpenShift 1.3 のリリースノート を参照してください。
3.2.10.3. mirror registry for Red Hat OpenShift 1.2 のリリースノート
mirror registry for Red Hat OpenShift 1.2 のリリースノートを確認するには、mirror registry for Red Hat OpenShift 1.2 のリリースノート を参照してください。
3.2.10.4. mirror registry for Red Hat OpenShift 1.1 のリリースノート
mirror registry for Red Hat OpenShift 1.1 のリリースノートを確認するには、mirror registry for Red Hat OpenShift 1.1 のリリースノート を参照してください。
3.2.11. Red Hat OpenShift のミラーレジストリーのトラブルシューティング
Red Hat OpenShift のミラーレジストリー のトラブルシューティングに、ミラーレジストリーによってインストールされた systemd サービスのログを収集すると役立ちます。次のサービスがインストールされます。
- quay-app.service
- quay-postgres.service
- quay-redis.service
- quay-pod.service
前提条件
- Red Hat OpenShift のミラーレジストリー がインストールされている。
手順
root 権限で Red Hat OpenShift のミラーレジストリー をインストールした場合は、次のコマンドを入力して systemd サービスのステータス情報を取得できます。
$ sudo systemctl status <service>
標準ユーザーとして Red Hat OpenShift のミラーレジストリー をインストールした場合は、次のコマンドを入力して systemd サービスのステータス情報を取得できます。
$ systemctl --user status <service>
3.2.12. 関連情報
3.3. oc adm コマンドを使用して非接続インストールのイメージをミラーリングする
クラスターが、外部コンテンツに対する組織の制限条件を満たすコンテナーイメージのみを使用するようにできますネットワークが制限された環境でプロビジョニングするインフラストラクチャーにクラスターをインストールする前に、必要なコンテナーイメージをその環境にミラーリングする必要があります。oc adm
コマンドを使用すると、OpenShift でリリースイメージとカタログイメージをミラーリングできます。コンテナーイメージをミラーリングするには、ミラーリング用のレジストリーが必要です。
必要なコンテナーイメージを取得するには、インターネットへのアクセスが必要です。この手順では、ネットワークとインターネットの両方にアクセスできるミラーホストにミラーレジストリーを配置します。ミラーホストにアクセスできない場合は、非接続クラスターで使用する Operator カタログのミラーリング を使用して、ネットワークの境界を越えて移動できるデバイスにイメージをコピーします。
3.3.1. 前提条件
以下のレジストリーのいずれかなど、OpenShift Container Platform クラスターをホストする場所に Docker v2-2 をサポートするコンテナーイメージレジストリーが必要です。
Red Hat Quay のライセンスをお持ちの場合は、概念実証のため に、または Red Hat Quay Operator を使用 して Red Hat Quay をデプロイする方法を記載したドキュメントを参照してください。レジストリーの選択とインストールについてさらにサポートが必要な場合は、営業担当者または Red Hat サポートにお問い合わせください。
- コンテナーイメージレジストリーの既存のソリューションがまだない場合には、OpenShift Container Platform のサブスクライバーに Red Hat OpenShift 導入用のミラーレジストリー が提供されます。Red Hat OpenShift 導入用のミラーレジストリーはサブスクリプションに含まれており、切断されたインストールで OpenShift Container Platform で必須のコンテナーイメージのミラーリングに使用できる小規模なコンテナーレジストリーです。
3.3.2. ミラーレジストリーについて
OpenShift Container Platform のインストールとその後の製品更新に必要なイメージは、Red Hat Quay、JFrog Artifactory、Sonatype Nexus Repository、Harbor などのコンテナーミラーレジストリーにミラーリングできます。大規模なコンテナーレジストリーにアクセスできない場合は、OpenShift Container Platform サブスクリプションに含まれる小規模なコンテナーレジストリーである Red Hat OpenShift 導入用のミラーレジストリー を使用できます。
Red Hat Quay、Red Hat OpenShift 導入用のミラーレジストリー、Artifactory、Sonatype Nexus リポジトリー、Harbor など、Dockerv2-2 をサポートする任意のコンテナーレジストリーを使用できます。選択したレジストリーに関係なく、インターネット上の Red Hat がホストするサイトから分離されたイメージレジストリーにコンテンツをミラーリングする手順は同じです。コンテンツをミラーリングした後に、各クラスターをミラーレジストリーからこのコンテンツを取得するように設定します。
OpenShift イメージレジストリーはターゲットレジストリーとして使用できません。これは、ミラーリングプロセスで必要となるタグを使わないプッシュをサポートしないためです。
Red Hat OpenShift 導入用のミラーレジストリー 以外のコンテナーレジストリーを選択する場合は、プロビジョニングするクラスター内の全マシンから到達可能である必要があります。レジストリーに到達できない場合、インストール、更新、またはワークロードの再配置などの通常の操作が失敗する可能性があります。そのため、ミラーレジストリーは可用性の高い方法で実行し、ミラーレジストリーは少なくとも OpenShift Container Platform クラスターの実稼働環境の可用性の条件に一致している必要があります。
ミラーレジストリーを OpenShift Container Platform イメージで設定する場合、2 つのシナリオを実行することができます。インターネットとミラーレジストリーの両方にアクセスできるホストがあり、クラスターノードにアクセスできない場合は、そのマシンからコンテンツを直接ミラーリングできます。このプロセスは、connected mirroring (接続ミラーリング) と呼ばれます。このようなホストがない場合は、イメージをファイルシステムにミラーリングしてから、そのホストまたはリムーバブルメディアを制限された環境に配置する必要があります。このプロセスは、disconnected mirroring (非接続ミラーリング) と呼ばれます。
ミラーリングされたレジストリーの場合は、プルされたイメージのソースを表示するには、CRI-O ログで Trying to access
のログエントリーを確認する必要があります。ノードで crictl images
コマンドを使用するなど、イメージのプルソースを表示する他の方法では、イメージがミラーリングされた場所からプルされている場合でも、ミラーリングされていないイメージ名を表示します。
Red Hat は、OpenShift Container Platform を使用してサードパーティーのレジストリーをテストしません。
関連情報
CRI-O ログを表示してイメージソースを表示する方法の詳細は、Viewing the image pull source を参照してください。
3.3.3. ミラーホストの準備
ミラー手順を実行する前に、ホストを準備して、コンテンツを取得し、リモートの場所にプッシュできるようにする必要があります。
3.3.3.1. OpenShift CLI のインストール
コマンドラインインターフェイスを使用して OpenShift Container Platform と対話するために OpenShift CLI (oc
) をインストールすることができます。oc
は Linux、Windows、または macOS にインストールできます。
以前のバージョンの oc
をインストールしている場合、これを使用して OpenShift Container Platform 4.17 のすべてのコマンドを実行することはできません。新しいバージョンの oc
をダウンロードしてインストールしてください。
Linux への OpenShift CLI のインストール
以下の手順を使用して、OpenShift CLI (oc
) バイナリーを Linux にインストールできます。
手順
- Red Hat カスタマーポータルの OpenShift Container Platform ダウンロードページ に移動します。
- Product Variant ドロップダウンリストからアーキテクチャーを選択します。
- バージョン ドロップダウンリストから適切なバージョンを選択します。
- OpenShift v4.17 Linux Client エントリーの横にある Download Now をクリックして、ファイルを保存します。
アーカイブを展開します。
$ tar xvf <file>
oc
バイナリーを、PATH
にあるディレクトリーに配置します。PATH
を確認するには、以下のコマンドを実行します。$ echo $PATH
検証
OpenShift CLI のインストール後に、
oc
コマンドを使用して利用できます。$ oc <command>
Windows への OpenShift CLI のインストール
以下の手順を使用して、OpenShift CLI (oc
) バイナリーを Windows にインストールできます。
手順
- Red Hat カスタマーポータルの OpenShift Container Platform ダウンロードページ に移動します。
- バージョン ドロップダウンリストから適切なバージョンを選択します。
- OpenShift v4.17 Windows Client エントリーの横にある Download Now をクリックして、ファイルを保存します。
- ZIP プログラムでアーカイブを展開します。
oc
バイナリーを、PATH
にあるディレクトリーに移動します。PATH
を確認するには、コマンドプロンプトを開いて以下のコマンドを実行します。C:\> path
検証
OpenShift CLI のインストール後に、
oc
コマンドを使用して利用できます。C:\> oc <command>
macOS への OpenShift CLI のインストール
以下の手順を使用して、OpenShift CLI (oc
) バイナリーを macOS にインストールできます。
手順
- Red Hat カスタマーポータルの OpenShift Container Platform ダウンロードページ に移動します。
- バージョン ドロップダウンリストから適切なバージョンを選択します。
OpenShift v4.17 macOS Client エントリーの横にある Download Now をクリックして、ファイルを保存します。
注記macOS arm64 の場合は、OpenShift v4.17 macOS arm64 Client エントリーを選択します。
- アーカイブを展開し、解凍します。
oc
バイナリーをパスにあるディレクトリーに移動します。PATH
を確認するには、ターミナルを開き、以下のコマンドを実行します。$ echo $PATH
検証
oc
コマンドを使用してインストールを確認します。$ oc <command>
3.3.4. イメージのミラーリングを可能にする認証情報の設定
Red Hat からミラーにイメージをミラーリングできるコンテナーイメージレジストリー認証情報ファイルを作成します。
クラスターのインストール時に、このイメージレジストリー認証情報ファイルをプルシークレットとして使用しないでください。クラスターのインストール時にこのファイルを指定すると、クラスター内のすべてのマシンにミラーレジストリーへの書き込みアクセスが付与されます。
このプロセスでは、ミラーレジストリーのコンテナーイメージレジストリーへの書き込みアクセスがあり、認証情報をレジストリープルシークレットに追加する必要があります。
前提条件
- 非接続環境で使用するミラーレジストリーを設定しました。
- イメージをミラーリングするミラーレジストリー上のイメージリポジトリーの場所を特定している。
- イメージのイメージリポジトリーへのアップロードを許可するミラーレジストリーアカウントをプロビジョニングしている。
手順
インストールホストで以下の手順を実行します。
-
registry.redhat.io
プルシークレットを Red Hat OpenShift Cluster Manager からダウンロードします。 JSON 形式でプルシークレットのコピーを作成します。
$ cat ./pull-secret | jq . > <path>/<pull_secret_file_in_json> 1
- 1
- プルシークレットを保存するフォルダーへのパスおよび作成する JSON ファイルの名前を指定します。
ファイルの内容は以下の例のようになります。
{ "auths": { "cloud.openshift.com": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "quay.io": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "registry.connect.redhat.com": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" }, "registry.redhat.io": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" } } }
ミラーレジストリーの base64 でエンコードされたユーザー名およびパスワードまたはトークンを生成します。
$ echo -n '<user_name>:<password>' | base64 -w0 1 BGVtbYk3ZHAtqXs=
- 1
<user_name>
および<password>
には、レジストリーに設定したユーザー名およびパスワードを指定します。
JSON ファイルを編集し、レジストリーを記述するセクションをこれに追加します。
"auths": { "<mirror_registry>": { 1 "auth": "<credentials>", 2 "email": "you@example.com" } },
ファイルは以下の例のようになります。
{ "auths": { "registry.example.com": { "auth": "BGVtbYk3ZHAtqXs=", "email": "you@example.com" }, "cloud.openshift.com": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "quay.io": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "registry.connect.redhat.com": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" }, "registry.redhat.io": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" } } }
3.3.5. OpenShift Container Platform イメージリポジトリーのミラーリング
クラスターのインストールまたはアップグレード時に使用するために、OpenShift Container Platform イメージリポジトリーをお使いのレジストリーにミラーリングします。
前提条件
- ミラーホストがインターネットにアクセスできる。
- ネットワークが制限された環境で使用するミラーレジストリーを設定し、設定した証明書および認証情報にアクセスできる。
- Red Hat OpenShift Cluster Manager からプルシークレット をダウンロードし、ミラーリポジトリーへの認証を組み込むように変更している。
- 自己署名証明書を使用する場合は、証明書にサブジェクトの別名を指定しています。
手順
ミラーホストで以下の手順を実行します。
- OpenShift Container Platform ダウンロード ページを確認し、インストールする必要のある OpenShift Container Platform のバージョンを判別し、Repository Tags ページで対応するタグを判別します。
必要な環境変数を設定します。
リリースバージョンをエクスポートします。
$ OCP_RELEASE=<release_version>
<release_version>
について、インストールする OpenShift Container Platform のバージョンに対応するタグを指定します (例:4.5.4
)。ローカルレジストリー名とホストポートをエクスポートします。
$ LOCAL_REGISTRY='<local_registry_host_name>:<local_registry_host_port>'
<local_registry_host_name>
については、ミラーレジストリーのレジストリードメイン名を指定し、<local_registry_host_port>
については、コンテンツの送信に使用するポートを指定します。ローカルリポジトリー名をエクスポートします。
$ LOCAL_REPOSITORY='<local_repository_name>'
<local_repository_name>
については、ocp4/openshift4
などのレジストリーに作成するリポジトリーの名前を指定します。ミラーリングするリポジトリーの名前をエクスポートします。
$ PRODUCT_REPO='openshift-release-dev'
実稼働環境のリリースの場合には、
openshift-release-dev
を指定する必要があります。パスをレジストリープルシークレットにエクスポートします。
$ LOCAL_SECRET_JSON='<path_to_pull_secret>'
<path_to_pull_secret>
については、作成したミラーレジストリーのプルシークレットの絶対パスおよびファイル名を指定します。リリースミラーをエクスポートします。
$ RELEASE_NAME="ocp-release"
実稼働環境のリリースは、
ocp-release
を指定する必要があります。クラスターのアーキテクチャーのタイプをエクスポートします。
$ ARCHITECTURE=<cluster_architecture> 1
- 1
x86_64
、aarch64
、s390x
、またはppc64le
など、クラスターのアーキテクチャーを指定します。
ミラーリングされたイメージをホストするためにディレクトリーへのパスをエクスポートします。
$ REMOVABLE_MEDIA_PATH=<path> 1
- 1
- 最初のスラッシュ (/) 文字を含む完全パスを指定します。
バージョンイメージをミラーレジストリーにミラーリングします。
ミラーホストがインターネットにアクセスできない場合は、以下の操作を実行します。
- リムーバブルメディアをインターネットに接続しているシステムに接続します。
ミラーリングするイメージおよび設定マニフェストを確認します。
$ oc adm release mirror -a ${LOCAL_SECRET_JSON} \ --from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} \ --to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} \ --to-release-image=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE} --dry-run
-
直前のコマンドの出力の
imageContentSources
セクション全体を記録します。ミラーの情報はミラーリングされたリポジトリーに一意であり、インストール時にimageContentSources
セクションをinstall-config.yaml
ファイルに追加する必要があります。 イメージをリムーバブルメディア上のディレクトリーにミラーリングします。
$ oc adm release mirror -a ${LOCAL_SECRET_JSON} --to-dir=${REMOVABLE_MEDIA_PATH}/mirror quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE}
メディアをネットワークが制限された環境に移し、イメージをローカルコンテナーレジストリーにアップロードします。
$ oc image mirror -a ${LOCAL_SECRET_JSON} --from-dir=${REMOVABLE_MEDIA_PATH}/mirror "file://openshift/release:${OCP_RELEASE}*" ${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} 1
- 1
REMOVABLE_MEDIA_PATH
の場合、イメージのミラーリング時に指定した同じパスを使用する必要があります。
重要oc image mirror
を実行すると、error: unable to retrieve source image
エラーが発生する場合があります。このエラーは、イメージレジストリーに存在しなくなったイメージへの参照がイメージインデックスに含まれている場合に発生します。イメージインデックスは、それらのイメージを実行しているユーザーがアップグレードグラフの新しいポイントへのアップグレードパスを実行できるように、古い参照を保持する場合があります。一時的な回避策として、--skip-missing
オプションを使用してエラーを回避し、イメージインデックスのダウンロードを続行できます。詳細は、Service Mesh Operator mirroring failed を参照してください。
ローカルコンテナーレジストリーがミラーホストに接続されている場合は、以下の操作を実行します。
以下のコマンドを使用して、リリースイメージをローカルレジストリーに直接プッシュします。
$ oc adm release mirror -a ${LOCAL_SECRET_JSON} \ --from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} \ --to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} \ --to-release-image=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}
このコマンドは、リリース情報をダイジェストとしてプルします。その出力には、クラスターのインストール時に必要な
imageContentSources
データが含まれます。直前のコマンドの出力の
imageContentSources
セクション全体を記録します。ミラーの情報はミラーリングされたリポジトリーに一意であり、インストール時にimageContentSources
セクションをinstall-config.yaml
ファイルに追加する必要があります。注記ミラーリングプロセス中にイメージ名に Quay.io のパッチが適用され、podman イメージにはブートストラップ仮想マシンのレジストリーに Quay.io が表示されます。
ミラーリングしたコンテンツに基づくインストールプログラムを作成するために、インストールプログラムを展開してリリースに固定します。
ミラーホストがインターネットにアクセスできない場合は、以下のコマンドを実行します。
$ oc adm release extract -a ${LOCAL_SECRET_JSON} --icsp-file=<file> --command=openshift-install "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}" \ --insecure=true 1
- 1
- オプション: ターゲットレジストリーの信頼を設定しない場合は、
--insecure=true
フラグを追加します。
ローカルコンテナーレジストリーがミラーホストに接続されている場合は、以下のコマンドを実行します。
$ oc adm release extract -a ${LOCAL_SECRET_JSON} --command=openshift-install "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}"
重要選択した OpenShift Container Platform のバージョンに適したイメージを確実に使用するために、ミラーリングしたコンテンツからインストールプログラムを展開する必要があります。
インターネット接続のあるマシンで、このステップを実行する必要があります。
installer-provisioned infrastructure を使用するクラスターの場合は、以下のコマンドを実行します。
$ openshift-install
3.3.6. 非接続環境の Cluster Samples Operator
非接続環境で Cluster Samples Operator を設定するには、クラスターのインストール後に追加の手順を実行する必要があります。以下の情報を確認し、準備してください。
3.3.6.1. ミラーリングの Cluster Samples Operator のサポート
インストール時に、OpenShift Container Platform は imagestreamtag-to-image
という名前の設定マップを openshift-cluster-samples-operator
namespace に作成します。imagestreamtag-to-image
設定マップには、各イメージストリームタグのエントリー (設定されるイメージ) が含まれます。
設定マップの data フィールドの各エントリーのキーの形式は、<image_stream_name>_<image_stream_tag_name>
です。
OpenShift Container Platform の非接続インストール時に、Cluster Samples Operator のステータスは Removed
に設定されます。これを Managed
に変更することを選択する場合、サンプルがインストールされます。
ネットワークが制限されている環境または切断されている環境でサンプルを使用するには、ネットワークの外部のサービスにアクセスする必要がある場合があります。サービスの例には、Github、Maven Central、npm、RubyGems、PyPi などがあります。場合によっては、Cluster Samples Operator のオブジェクトが必要なサービスに到達できるようにするために、追加の手順を実行する必要があります。
この config map は、イメージストリームをインポートするためにミラーリングする必要があるイメージの参照情報として使用できます。
-
Cluster Samples Operator が
Removed
に設定される場合、ミラーリングされたレジストリーを作成するか、使用する必要のある既存のミラーリングされたレジストリーを判別できます。 - 新しい config map をガイドとして使用し、ミラーリングされたレジストリーに必要なサンプルをミラーリングします。
-
Cluster Samples Operator 設定オブジェクトの
skippedImagestreams
リストに、ミラーリングされていないイメージストリームを追加します。 -
Cluster Samples Operator 設定オブジェクトの
samplesRegistry
をミラーリングされたレジストリーに設定します。 -
次に、Cluster Samples Operator を
Managed
に設定し、ミラーリングしたイメージストリームをインストールします。
3.3.7. 非接続クラスターで使用する Operator カタログのミラーリング
oc adm catalog mirror
コマンドを使用して、Red Hat が提供するカタログまたはカスタムカタログの Operator コンテンツをコンテナーイメージレジストリーにミラーリングできます。ターゲットレジストリーは Docker v2-2 をサポートする必要があります。ネットワークが制限された環境のクラスターの場合、このレジストリーには、ネットワークが制限されたクラスターのインストール時に作成されたミラーレジストリーなど、クラスターにネットワークアクセスのあるレジストリーを使用できます。
- OpenShift イメージレジストリーはターゲットレジストリーとして使用できません。これは、ミラーリングプロセスで必要となるタグを使わないプッシュをサポートしないためです。
-
oc adm catalog mirror
を実行すると、error: unable to retrieve source image
エラーが発生する場合があります。このエラーは、イメージレジストリーに存在しなくなったイメージへの参照がイメージインデックスに含まれている場合に発生します。イメージインデックスは、それらのイメージを実行しているユーザーがアップグレードグラフの新しいポイントへのアップグレードパスを実行できるように、古い参照を保持する場合があります。一時的な回避策として、--skip-missing
オプションを使用してエラーを回避し、イメージインデックスのダウンロードを続行できます。詳細は、Service Mesh Operator mirroring failed を参照してください。
oc adm catalog mirror
コマンドは、Red Hat が提供するインデックスイメージであるか、独自のカスタムビルドされたインデックスイメージであるかに関係なく、ミラーリングプロセス中に指定されるインデックスイメージをターゲットレジストリーに自動的にミラーリングします。次に、ミラーリングされたインデックスイメージを使用して、Operator Lifecycle Manager (OLM) がミラーリングされたカタログを OpenShift Container Platform クラスターにロードできるようにするカタログソースを作成できます。
3.3.7.1. 前提条件
非接続クラスターで使用する Operator カタログのミラーリングには、以下の前提条件があります。
- ネットワークアクセスが無制限のワークステーション
-
podman
バージョン 1.9.3 以降。 既存のカタログをフィルタリングまたは プルーニング して、Operator のサブセットのみを選択的にミラーリングする場合は、次のセクションを参照してください。
Red Hat が提供するカタログをミラーリングする場合は、ネットワークアクセスが無制限のワークステーションで以下のコマンドを実行し、
registry.redhat.io
で認証します。$ podman login registry.redhat.io
- Docker v2-2 をサポートするミラーレジストリーへのアクセス。
-
ミラーレジストリーで、ミラーリングされた Operator コンテンツの保存に使用するリポジトリーまたは namespace を決定します。たとえば、
olm-mirror
リポジトリーを作成できます。 - ミラーレジストリーにインターネットアクセスがない場合は、ネットワークアクセスが無制限のワークステーションにリムーバブルメディアを接続します。
registry.redhat.io
などのプライベートレジストリーを使用している場合、後続の手順で使用するためにREG_CREDS
環境変数をレジストリー認証情報のファイルパスに設定します。たとえばpodman
CLI の場合は、以下のようになります。$ REG_CREDS=${XDG_RUNTIME_DIR}/containers/auth.json
3.3.7.2. カタログコンテンツの抽出およびミラーリング
oc adm catalog mirror
コマンドは、インデックスイメージのコンテンツを抽出し、ミラーリングに必要なマニフェストを生成します。コマンドのデフォルト動作で、マニフェストを生成し、インデックスイメージからのすべてのイメージコンテンツを、インデックスイメージと同様にミラーレジストリーに対して自動的にミラーリングします。
または、ミラーレジストリーが完全に非接続または エアギャップ環境のホスト上にある場合、最初にコンテンツをリムーバブルメディアにミラーリングし、メディアを非接続環境に移行してから、メディアからレジストリーにコンテンツをレジストリーに対してミラーリングできます。
3.3.7.2.1. 同じネットワーク上のレジストリーへのカタログコンテンツのミラーリング
ミラーレジストリーがネットワークアクセスが無制限のワークステーションと同じネットワーク上に置かれている場合は、ワークステーションで以下のアクションを実行します。
手順
ミラーレジストリーに認証が必要な場合は、以下のコマンドを実行してレジストリーにログインします。
$ podman login <mirror_registry>
以下のコマンドを実行して、コンテンツをミラーレジストリーに対して抽出し、ミラーリングします。
$ oc adm catalog mirror \ <index_image> \ 1 <mirror_registry>:<port>[/<repository>] \ 2 [-a ${REG_CREDS}] \ 3 [--insecure] \ 4 [--index-filter-by-os='<platform>/<arch>'] \ 5 [--manifests-only] 6
- 1
- ミラーリングするカタログのインデックスイメージを指定します。
- 2
- Operator の内容をミラーリングするターゲットレジストリーの完全修飾ドメイン名 (FQDN) を指定します。ミラーレジストリー
<repository>
には、前提条件で説明したolm-mirror
など、レジストリー上の既存のリポジトリーまたは namespace を指定できます。ミラーリング中に既存のリポジトリーが見つかった場合は、そのリポジトリー名が結果のイメージ名に追加されます。イメージ名にリポジトリー名を含めたくない場合は、この行から<repository>
値を省略します (例:<mirror_registry>:<port>)
。 - 3
- オプション: 必要な場合は、レジストリー認証情報ファイルの場所を指定します。
registry.redhat.io
には、{REG_CREDS}
が必要です。 - 4
- オプション: ターゲットレジストリーの信頼を設定しない場合は、
--insecure
フラグを追加します。 - 5
- オプション: 複数のバリアントが利用可能な場合に、選択するインデックスイメージのプラットフォームおよびアーキテクチャーを指定します。イメージは
'<platform>/<arch>[/<variant>]'
として渡されます。これはインデックスで参照されるイメージには適用されません。有効な値は、linux/amd64
、linux/ppc64le
、linux/s390x
、linux/arm64
です。 - 6
- オプション: 実際にイメージコンテンツをレジストリーにミラーリングせずに、ミラーリングに必要なマニフェストのみを生成します。このオプションは、ミラーリングする内容を確認するのに役立ちます。また、パッケージのサブセットのみが必要な場合に、マッピングのリストに変更を加えることができます。次に、
mapping.txt
ファイルをoc image mirror
コマンドで使用し、後のステップでイメージの変更済みの一覧をミラーリングできます。これは、カタログからのコンテンツの高度な選択可能ミラーリングの実行に使用するためのフラグです。
出力例
src image has index label for database path: /database/index.db using database path mapping: /database/index.db:/tmp/153048078 wrote database to /tmp/153048078 1 ... wrote mirroring manifests to manifests-redhat-operator-index-1614211642 2
- 1
- コマンドで生成された一時的な
index.db
データベースのディレクトリー。 - 2
- 生成される manifests ディレクトリー名を記録します。このディレクトリーは、後続の手順で参照されます。注記
Red Hat Quay では、ネストされたリポジトリーはサポート対象外です。その結果、
oc adm catalog mirror
コマンドを実行すると、401
unauthorized エラーで失敗します。回避策として、oc adm catalog mirror
コマンドを実行するときに--max-components = 2
オプションを使用して、ネストされたリポジトリーの作成を無効にすることができます。この回避策の詳細は Unauthorized error thrown while using catalog mirror command with Quay registry のナレッジソリューションを参照してください。
3.3.7.2.2. カタログコンテンツをエアギャップされたレジストリーへのミラーリング
ミラーレジストリーが完全に切断された、またはエアギャップのあるホスト上にある場合は、次のアクションを実行します。
手順
ネットワークアクセスが無制限のワークステーションで以下のコマンドを実行し、コンテンツをローカルファイルにミラーリングします。
$ oc adm catalog mirror \ <index_image> \ 1 file:///local/index \ 2 -a ${REG_CREDS} \ 3 --insecure \ 4 --index-filter-by-os='<platform>/<arch>' 5
- 1
- ミラーリングするカタログのインデックスイメージを指定します。
- 2
- 現在のディレクトリーのローカルファイルにミラーリングするコンテンツを指定します。
- 3
- オプション: 必要な場合は、レジストリー認証情報ファイルの場所を指定します。
- 4
- オプション: ターゲットレジストリーの信頼を設定しない場合は、
--insecure
フラグを追加します。 - 5
- オプション: 複数のバリアントが利用可能な場合に、選択するインデックスイメージのプラットフォームおよびアーキテクチャーを指定します。イメージは
'<platform>/<arch>[/<variant>]'
として指定されます。これはインデックスで参照されるイメージには適用されません。使用できる値は、linux/amd64
、linux/ppc64le
、linux/s390x
、linux/arm64
、および.*
です。
出力例
... info: Mirroring completed in 5.93s (5.915MB/s) wrote mirroring manifests to manifests-my-index-1614985528 1 To upload local images to a registry, run: oc adm catalog mirror file://local/index/myrepo/my-index:v1 REGISTRY/REPOSITORY 2
このコマンドにより、現在のディレクトリーに
v2/
ディレクトリーが作成されます。-
v2/
ディレクトリーをリムーバブルメディアにコピーします。 - メディアを物理的に削除して、これをミラーレジストリーにアクセスできる非接続環境のホストに割り当てます。
ミラーレジストリーに認証が必要な場合は、非接続環境のホストで以下のコマンドを実行し、レジストリーにログインします。
$ podman login <mirror_registry>
v2/
ディレクトリーを含む親ディレクトリーから以下のコマンドを実行し、ローカルファイルからミラーレジストリーにイメージをアップロードします。$ oc adm catalog mirror \ file://local/index/<repository>/<index_image>:<tag> \ 1 <mirror_registry>:<port>[/<repository>] \ 2 -a ${REG_CREDS} \ 3 --insecure \ 4 --index-filter-by-os='<platform>/<arch>' 5
- 1
- 直前のコマンド出力の
file://
パスを指定します。 - 2
- Operator の内容をミラーリングするターゲットレジストリーの完全修飾ドメイン名 (FQDN) を指定します。ミラーレジストリー
<repository>
には、前提条件で説明したolm-mirror
など、レジストリー上の既存のリポジトリーまたは namespace を指定できます。ミラーリング中に既存のリポジトリーが見つかった場合は、そのリポジトリー名が結果のイメージ名に追加されます。イメージ名にリポジトリー名を含めたくない場合は、この行から<repository>
値を省略します (例:<mirror_registry>:<port>)
。 - 3
- オプション: 必要な場合は、レジストリー認証情報ファイルの場所を指定します。
- 4
- オプション: ターゲットレジストリーの信頼を設定しない場合は、
--insecure
フラグを追加します。 - 5
- オプション: 複数のバリアントが利用可能な場合に、選択するインデックスイメージのプラットフォームおよびアーキテクチャーを指定します。イメージは
'<platform>/<arch>[/<variant>]'
として指定されます。これはインデックスで参照されるイメージには適用されません。使用できる値は、linux/amd64
、linux/ppc64le
、linux/s390x
、linux/arm64
、および.*
です。
注記Red Hat Quay では、ネストされたリポジトリーはサポート対象外です。その結果、
oc adm catalog mirror
コマンドを実行すると、401
unauthorized エラーで失敗します。回避策として、oc adm catalog mirror
コマンドを実行するときに--max-components = 2
オプションを使用して、ネストされたリポジトリーの作成を無効にすることができます。この回避策の詳細は Unauthorized error thrown while using catalog mirror command with Quay registry のナレッジソリューションを参照してください。oc adm catalog mirror
コマンドを再度実行します。新しくミラー化されたインデックスイメージをソースとして使用し、前の手順で使用したものと同じミラーレジストリーターゲットを使用します。$ oc adm catalog mirror \ <mirror_registry>:<port>/<index_image> \ <mirror_registry>:<port>[/<repository>] \ --manifests-only \1 [-a ${REG_CREDS}] \ [--insecure]
- 1
- コマンドがミラーリングされたすべてのコンテンツを再度コピーしないように、このステップには
--manifests-only
フラグが必要です。
重要前のステップで生成された
imageContentSourcePolicy.yaml
ファイルのイメージマッピングをローカルパスから有効なミラー位置に更新する必要があるため、このステップが必要です。そうしないと、後のステップでImageContentSourcePolicy
オブジェクトを作成するときにエラーが発生します。
カタログのミラーリング後、残りのクラスターインストールを続行できます。クラスターのインストールが正常に完了した後に、この手順から manifests ディレクトリーを指定して ImageContentSourcePolicy
および CatalogSource
オブジェクトを作成する必要があります。これらのオブジェクトは、OperatorHub からの Operator のインストールを有効にするために必要になります。
3.3.7.3. 生成されたマニフェスト
Operator カタログコンテンツをミラーレジストリーにミラーリングした後に、現在のディレクトリーに manifests ディレクトリーが生成されます。
同じネットワークのレジストリーにコンテンツをミラーリングする場合、ディレクトリー名は以下のパターンになります。
manifests-<index_image_name>-<random_number>
直前のセクションで非接続ホストのレジストリーにコンテンツをミラーリングする場合、ディレクトリー名は以下のパターンになります。
manifests-index/<repository>/<index_image_name>-<random_number>
manifests ディレクトリー名は、後続の手順で参照されます。
manifests ディレクトリーには以下のファイルが含まれており、これらの一部にはさらに変更が必要になる場合があります。
catalogSource.yaml
ファイルは、インデックスイメージタグおよび他の関連するメタデータで事前に設定されるCatalogSource
オブジェクトの基本的な定義です。このファイルは、カタログソースをクラスターに追加するためにそのまま使用したり、変更したりできます。重要ローカルファイルにコンテンツをミラーリングする場合は、
catalogSource.yaml
ファイルを変更してmetadata.name
フィールドからバックスラッシュ (/
) 文字を削除する必要があります。または、オブジェクトの作成を試みると、"invalid resource name" (無効なリソース名) を示すエラーを出して失敗します。これにより、
imageContentSourcePolicy.yaml
ファイルはImageContentSourcePolicy
オブジェクトを定義します。このオブジェクトは、ノードを Operator マニフェストおよびミラーリングされたレジストリーに保存されるイメージ参照間で変換できるように設定します。注記クラスターが
ImageContentSourcePolicy
オブジェクトを使用してリポジトリーのミラーリングを設定する場合、ミラーリングされたレジストリーにグローバルプルシークレットのみを使用できます。プロジェクトにプルシークレットを追加することはできません。mapping.txt
ファイルには、すべてのソースイメージが含まれ、これはそれらのイメージをターゲットレジストリー内のどこにマップするかを示します。このファイルはoc image mirror
コマンドと互換性があり、ミラーリング設定をさらにカスタマイズするために使用できます。重要ミラーリングのプロセスで
--manifests-only
フラグを使用しており、ミラーリングするパッケージのサブセットをさらにトリミングするには、mapping.txt
ファイルの変更およびoc image mirror
コマンドでのファイルの使用について、OpenShift Container Platform 4.7 ドキュメントの Package Manifest Format カタログイメージのミラーリング の手順を参照してください。
3.3.7.4. インストール後の要件
カタログのミラーリング後、残りのクラスターインストールを続行できます。クラスターのインストールが正常に完了した後に、この手順から manifests ディレクトリーを指定して ImageContentSourcePolicy
および CatalogSource
オブジェクトを作成する必要があります。これらのオブジェクトは、OperatorHub からの Operator のインストールを設定し、有効にするために必要です。
3.3.8. 次のステップ
- VMware vSphere、ベアメタル、Amazon Web Services など、ネットワークが制限された環境でプロビジョニングするインフラストラクチャーにクラスターをインストールします。
3.3.9. 関連情報
- must-gather の使用の詳細は、特定機能に関するデータの収集 を参照してください。
3.4. oc-mirror プラグインを使用した非接続インストールのイメージのミラーリング
プライベートレジストリー内の OpenShift Container Platform コンテナーイメージのミラーリングされたセットからクラスターをインストールすることにより、インターネットに直接接続せずに制限されたネットワークでクラスターを実行することができます。このレジストリーは、クラスターが実行されている限り、常に実行されている必要があります。詳細は、前提条件 セクションを参照してください。
oc-mirror OpenShift CLI (oc
) プラグインを使用して、完全なまたは部分的な非接続環境でイメージをミラーレジストリーにミラーリングできます。公式の Red Hat レジストリーから必要なイメージをダウンロードするには、インターネット接続のあるシステムから oc-mirror を実行する必要があります。
3.4.1. oc-mirror プラグインについて
oc-mirror OpenShift CLI(oc
) プラグインを使用すると、単一のツールを使用して、必要なすべての OpenShift Container Platform コンテンツおよびその他のイメージをミラーレジストリーにミラーリングできます。次の機能を提供します。
- OpenShift Container Platform のリリース、Operator、ヘルムチャート、およびその他のイメージをミラーリングするための一元化された方法を提供します。
- OpenShift Container Platform および Operator の更新パスを維持します。
- 宣言型イメージセット設定ファイルを使用して、クラスターに必要な OpenShift Container Platform リリース、Operator、およびイメージのみを含めます。
- 将来のイメージセットのサイズを縮小するインクリメンタルミラーリングを実行します。
- 前回の実行以降にイメージセット設定から除外されたターゲットミラーレジストリーからのイメージをプルーニングします。
- オプションで、OpenShift Update Service (OSUS) を使用する際のサポートアーティファクトを生成します。
oc-mirror プラグインを使用する場合、イメージセット設定ファイルでミラーリングするコンテンツを指定します。この YAML ファイルでは、クラスターに必要な OpenShift Container Platform リリースと Operator のみを含めるように設定を微調整できます。これにより、ダウンロードして転送する必要のあるデータの量が減ります。oc-mirror プラグインは、任意のヘルムチャートと追加のコンテナーイメージをミラーリングして、ユーザーがワークロードをミラーレジストリーにシームレスに同期できるようにすることもできます。
oc-mirror プラグインを初めて実行すると、非接続クラスターのインストールまたは更新を実行するために必要なコンテンツがミラーレジストリーに入力されます。非接続クラスターが更新を受信し続けるには、ミラーレジストリーを更新しておく必要があります。ミラーレジストリーを更新するには、最初に実行したときと同じ設定を使用して oc-mirror プラグインを実行します。oc-mirror プラグインは、ストレージバックエンドからメタデータを参照し、ツールを最後に実行してからリリースされたもののみをダウンロードします。これにより、OpenShift Container Platform および Operator の更新パスが提供され、必要に応じて依存関係の解決が実行されます。
3.4.1.1. ワークフローの概要
次の手順は、oc-mirror プラグインを使用してイメージをミラーレジストリーにミラーリングする方法の概要を示しています。
- イメージセット設定ファイルを作成します。
次のいずれかの方法を使用して、イメージセットをターゲットミラーレジストリーにミラーリングします。
- イメージセットをターゲットミラーレジストリーに直接ミラーリングします。
- イメージセットをディスクにミラーリングし、イメージセットをターゲット環境に転送してから、イメージセットをターゲットミラーレジストリーにアップロードします。
- oc-mirror プラグインが生成したリソースを使用するようにクラスターを設定します。
- 必要に応じてこれらの手順を繰り返して、ターゲットミラーレジストリーを更新します。
oc-mirror CLI プラグインを使用してミラーレジストリーに入力した場合、ターゲットミラーレジストリーへのそれ以降の更新は、oc-mirror プラグインを使用して行う必要があります。
3.4.2. oc-mirror プラグインの互換性とサポート
oc-mirror プラグインは、OpenShift Container Platform バージョン 4.12 以降の OpenShift Container Platform ペイロードイメージと Operator カタログのミラーリングをサポートします。
aarch64
、ppc64le
、および s390x
アーキテクチャーでは、oc-mirror プラグインは OpenShift Container Platform バージョン 4.14 以降でのみサポートされます。
ミラーリングする必要がある OpenShift Container Platform のバージョンに関係なく、使用可能な最新バージョンの oc-mirror プラグインを使用してください。
関連情報
- oc-mirror の更新については、イメージのプルソースの表示 を参照してください。
3.4.3. ミラーレジストリーについて
OpenShift Container Platform のインストールとその後の製品更新に必要なイメージを、Red Hat Quay などの Docker v2-2 をサポートするコンテナーミラーレジストリーにミラーリングできます。大規模なコンテナーレジストリーにアクセスできない場合は、OpenShift Container Platform サブスクリプションに含まれる小規模なコンテナーレジストリーであるRed Hat OpenShift 導入用のミラーレジストリー を使用できます。
選択したレジストリーに関係なく、インターネット上の Red Hat がホストするサイトから分離されたイメージレジストリーにコンテンツをミラーリングする手順は同じです。コンテンツをミラーリングした後に、各クラスターをミラーレジストリーからこのコンテンツを取得するように設定します。
OpenShift イメージレジストリーはターゲットレジストリーとして使用できません。これは、ミラーリングプロセスで必要となるタグを使わないプッシュをサポートしないためです。
Red Hat OpenShift 導入用のミラーレジストリー 以外のコンテナーレジストリーを選択する場合は、プロビジョニングするクラスター内の全マシンから到達可能である必要があります。レジストリーに到達できない場合、インストール、更新、またはワークロードの再配置などの通常の操作が失敗する可能性があります。そのため、ミラーレジストリーは可用性の高い方法で実行し、ミラーレジストリーは少なくとも OpenShift Container Platform クラスターの実稼働環境の可用性の条件に一致している必要があります。
ミラーレジストリーを OpenShift Container Platform イメージで設定する場合、2 つのシナリオを実行することができます。インターネットとミラーレジストリーの両方にアクセスできるホストがあり、クラスターノードにアクセスできない場合は、そのマシンからコンテンツを直接ミラーリングできます。このプロセスは、connected mirroring (接続ミラーリング) と呼ばれます。このようなホストがない場合は、イメージをファイルシステムにミラーリングしてから、そのホストまたはリムーバブルメディアを制限された環境に配置する必要があります。このプロセスは、disconnected mirroring (非接続ミラーリング) と呼ばれます。
ミラーリングされたレジストリーの場合は、プルされたイメージのソースを表示するには、CRI-O ログで Trying to access
のログエントリーを確認する必要があります。ノードで crictl images
コマンドを使用するなど、イメージのプルソースを表示する他の方法では、イメージがミラーリングされた場所からプルされている場合でも、ミラーリングされていないイメージ名を表示します。
Red Hat は、OpenShift Container Platform を使用してサードパーティーのレジストリーをテストしません。
関連情報
- CRI-O ログを表示してイメージソースを表示する方法の詳細は、Viewing the image pull source を参照してください。
3.4.4. 前提条件
Red Hat Quay など、OpenShift Container Platform クラスターをホストする場所に Docker v2-2 をサポートするコンテナーイメージレジストリーを持っている。
注記Red Hat Quay を使用する場合は、oc-mirror プラグインでバージョン 3.6 以降を使用する必要があります。Red Hat Quay のライセンスをお持ちの場合は、概念実証のため に、または Red Hat Quay Operator を使用 して Red Hat Quay をデプロイする方法を記載したドキュメントを参照してください。レジストリーの選択とインストールについてさらにサポートが必要な場合は、営業担当者または Red Hat サポートにお問い合わせください。
コンテナーイメージレジストリーの既存のソリューションがまだない場合には、OpenShift Container Platform のサブスクライバーに Red Hat OpenShift 導入用のミラーレジストリー が提供されます。Red Hat OpenShift 導入用のミラーレジストリーはサブスクリプションに含まれており、切断されたインストールで OpenShift Container Platform で必須のコンテナーイメージのミラーリングに使用できる小規模なコンテナーレジストリーです。
3.4.5. ミラーホストの準備
oc-mirror プラグインを使用してイメージをミラーリングする前に、プラグインをインストールし、コンテナーイメージレジストリーの認証情報ファイルを作成して、Red Hat からお使いのミラーへのミラーリングを許可する必要があります。
3.4.5.1. oc-mirror OpenShift CLI プラグインのインストール
非接続環境でイメージセットを管理するには、oc-mirror OpenShift CLI プラグインをインストールします。
前提条件
OpenShift CLI (
oc
) がインストールされている。完全な非接続環境でイメージセットをミラーリングする場合は、次の点を確認してください。- インターネットにアクセスできるホストに oc-mirror プラグインをインストールした。
- 非接続環境のホストが、ターゲットミラーレジストリーにアクセスできる。
-
oc-mirror を使用するオペレーティングシステムで、
umask
パラメーターを0022
に設定した。 - 使用している RHEL バージョンに適したバイナリーをインストールした。
手順
oc-mirror CLI プラグインをダウンロードします。
- OpenShift Cluster Manager の ダウンロード ページに移動します。
- OpenShift 切断インストールツール セクションで、OpenShift Client (oc) ミラープラグイン の ダウンロード をクリックしてファイルを保存します。
アーカイブを抽出します。
$ tar xvzf oc-mirror.tar.gz
必要に応じて、プラグインファイルを更新して実行可能にします。
$ chmod +x oc-mirror
注記oc-mirror
ファイルの名前を変更しないでください。ファイルを
PATH
に配置して、oc-mirror CLI プラグインをインストールします (例:/usr/local/bin
):。$ sudo mv oc-mirror /usr/local/bin/.
検証
次のコマンドを実行して、oc-mirror v1 のプラグインが正常にインストールされたことを確認します。
$ oc mirror help
3.4.5.2. イメージのミラーリングを可能にする認証情報の設定
Red Hat からミラーにイメージをミラーリングできるコンテナーイメージレジストリー認証情報ファイルを作成します。
クラスターのインストール時に、このイメージレジストリー認証情報ファイルをプルシークレットとして使用しないでください。クラスターのインストール時にこのファイルを指定すると、クラスター内のすべてのマシンにミラーレジストリーへの書き込みアクセスが付与されます。
このプロセスでは、ミラーレジストリーのコンテナーイメージレジストリーへの書き込みアクセスがあり、認証情報をレジストリープルシークレットに追加する必要があります。
前提条件
- 非接続環境で使用するミラーレジストリーを設定しました。
- イメージをミラーリングするミラーレジストリー上のイメージリポジトリーの場所を特定している。
- イメージのイメージリポジトリーへのアップロードを許可するミラーレジストリーアカウントをプロビジョニングしている。
手順
インストールホストで以下の手順を実行します。
-
registry.redhat.io
プルシークレットを Red Hat OpenShift Cluster Manager からダウンロードします。 JSON 形式でプルシークレットのコピーを作成します。
$ cat ./pull-secret | jq . > <path>/<pull_secret_file_in_json> 1
- 1
- プルシークレットを保存するフォルダーへのパスおよび作成する JSON ファイルの名前を指定します。
ファイルの内容は以下の例のようになります。
{ "auths": { "cloud.openshift.com": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "quay.io": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "registry.connect.redhat.com": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" }, "registry.redhat.io": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" } } }
-
ファイルを
~/.docker/config.json
または$XDG_RUNTIME_DIR/containers/auth.json
として保存します。
ミラーレジストリーの base64 でエンコードされたユーザー名およびパスワードまたはトークンを生成します。
$ echo -n '<user_name>:<password>' | base64 -w0 1 BGVtbYk3ZHAtqXs=
- 1
<user_name>
および<password>
には、レジストリーに設定したユーザー名およびパスワードを指定します。
JSON ファイルを編集し、レジストリーを記述するセクションをこれに追加します。
"auths": { "<mirror_registry>": { 1 "auth": "<credentials>", 2 "email": "you@example.com" } },
ファイルは以下の例のようになります。
{ "auths": { "registry.example.com": { "auth": "BGVtbYk3ZHAtqXs=", "email": "you@example.com" }, "cloud.openshift.com": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "quay.io": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "registry.connect.redhat.com": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" }, "registry.redhat.io": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" } } }
3.4.6. イメージセット設定の作成
oc-mirror プラグインを使用してイメージセットをミラーリングする前に、イメージセット設定ファイルを作成する必要があります。このイメージセット設定ファイルは、ミラーリングする OpenShift Container Platform リリース、Operator、およびその他のイメージと、oc-mirror プラグインの他の設定を定義します。
イメージセット設定ファイルでストレージバックエンドを指定する必要があります。このストレージバックエンドは、Docker v2-2 をサポートするローカルディレクトリーまたはレジストリーにすることができます。oc-mirror プラグインは、イメージセットの作成中にこのストレージバックエンドにメタデータを保存します。
oc-mirror プラグインによって生成されたメタデータを削除または変更しないでください。同じミラーレジストリーに対して oc-mirror プラグインを実行するたびに、同じストレージバックエンドを使用する必要があります。
前提条件
- コンテナーイメージレジストリーの認証情報ファイルを作成している。手順は、「イメージのミラーリングを可能にする認証情報の設定」を参照してください。
手順
oc mirror init
コマンドを使用して、イメージセット設定のテンプレートを作成し、それをimageset-config.yaml
というファイルに保存します。$ oc mirror init <--registry <storage_backend> > imageset-config.yaml 1
- 1
- ストレージバックエンドのロケーションを指定します (例:
example.com/mirror/oc-mirror-metadata
)。
ファイルを編集し、必要に応じて設定を調整します。
kind: ImageSetConfiguration apiVersion: mirror.openshift.io/v1alpha2 archiveSize: 4 1 storageConfig: 2 registry: imageURL: example.com/mirror/oc-mirror-metadata 3 skipTLS: false mirror: platform: channels: - name: stable-4.17 4 type: ocp graph: true 5 operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.17 6 packages: - name: serverless-operator 7 channels: - name: stable 8 additionalImages: - name: registry.redhat.io/ubi9/ubi:latest 9 helm: {}
- 1
archiveSize
を追加して、イメージセット内の各ファイルの最大サイズを GiB 単位で設定します。- 2
- イメージセットのメタデータを保存するバックエンドの場所を設定します。この場所は、レジストリーまたはローカルディレクトリーにすることができます。
storageConfig
値を指定する必要があります。 - 3
- ストレージバックエンドのレジストリー URL を設定します。
- 4
- OpenShift Container Platform イメージを取得するためのチャネルを設定します。
- 5
graph: true
を追加して、グラフデータイメージをビルドし、ミラーレジストリーにプッシュします。OpenShift Update Service (OSUS) を作成するには、graph-data イメージが必要です。graph: true
フィールドはUpdateService
カスタムリソースマニフェストも生成します。oc
コマンドラインインターフェイス (CLI) は、UpdateService
カスタムリソースマニフェストを使用して OSUS を作成できます。詳細は、OpenShift Update Service について を参照してください。- 6
- OpenShift Container Platform イメージを取得するための Operator カタログを設定します。
- 7
- イメージセットに含める特定の Operator パッケージのみを指定します。カタログ内のすべてのパッケージを取得するには、このフィールドを削除してください。
- 8
- イメージセットに含める Operator パッケージの特定のチャネルのみを指定します。そのチャネルでバンドルを使用しない場合も、常に Operator パッケージのデフォルトチャネルを含める必要があります。
oc mirror list operators --catalog=<catalog_name> --package=<package_name>
コマンドを実行すると、デフォルトチャネルを見つけることができます。 - 9
- イメージセットに含める追加のイメージを指定します。
注記graph: true
フィールドは、他のミラーリングされたイメージとともにubi-micro
イメージもミラーリングします。OpenShift Container Platform Extended Update Support (EUS) バージョンをアップグレードする場合、現行バージョンとターゲットバージョンの間に中間バージョンが必要になる場合があります。たとえば、最新バージョンが
4.14
で、ターゲットバージョンが4.16
の場合、oc-mirror プラグイン v1 の使用時にImageSetConfiguration
に4.15.8
などのバージョンを含める必要がある場合があります。oc-mirror プラグイン v1 は必ずしもこれを自動的に検出するとは限りません。Cincinnati graph の Web ページで 必要な中間バージョンを確認し、手動で設定に追加してください。
パラメーターの完全なリストは、「イメージセットの設定パラメーター」を参照してください。また、さまざまなミラーリングのユースケースは、「イメージセットの設定例」を参照してください。
更新したファイルを保存します。
このイメージセット設定ファイルは、コンテンツをミラーリングするときに
oc mirror
コマンドで必要になります。
3.4.7. イメージセットをミラーレジストリーにミラーリングする
oc-mirror CLI プラグインを使用して、部分的な非接続環境 または 完全な非接続環境 でイメージをミラーレジストリーにミラーリングできます。
これらの手順は、ミラーレジストリーがすでに設定されていることを前提としています。
3.4.7.1. 部分的な非接続環境でのイメージセットのミラーリング
部分的な非接続環境では、イメージセットをターゲットミラーレジストリーに直接ミラーリングできます。
3.4.7.1.1. ミラーからミラーへのミラーリング
oc-mirror プラグインを使用して、イメージセットの作成中にアクセス可能なターゲットミラーレジストリーにイメージセットを直接ミラーリングできます。
イメージセット設定ファイルでストレージバックエンドを指定する必要があります。このストレージバックエンドは、ローカルディレクトリーまたは Dockerv2 レジストリーにすることができます。oc-mirror プラグインは、イメージセットの作成中にこのストレージバックエンドにメタデータを保存します。
oc-mirror プラグインによって生成されたメタデータを削除または変更しないでください。同じミラーレジストリーに対して oc-mirror プラグインを実行するたびに、同じストレージバックエンドを使用する必要があります。
前提条件
- 必要なコンテナーイメージを取得するためのインターネットへのアクセスがある。
-
OpenShift CLI (
oc
) がインストールされている。 -
oc-mirror
CLI プラグインをインストールしている。 - イメージセット設定ファイルを作成している。
手順
oc mirror
コマンドを実行して、指定されたイメージセット設定から指定されたレジストリーにイメージをミラーリングします。$ oc mirror --config=./<imageset-config.yaml> \1 docker://registry.example:5000 2
検証
-
生成された
oc-mirror-workspace/
ディレクトリーに移動します。 -
results ディレクトリーに移動します (例:
results-1639608409/
。 -
ImageContentSourcePolicy
およびCatalogSource
リソースに YAML ファイルが存在することを確認します。
ImageContentSourcePolicy
YAML ファイルの repositoryDigestMirrors
セクションは、インストール中に install-config.yaml
ファイルとして使用されます。
次のステップ
- oc-mirror が生成したリソースを使用するようにクラスターを設定します。
トラブルシューティング
3.4.7.2. 完全な非接続環境でのイメージセットのミラーリング
完全な非接続環境でイメージセットをミラーリングするには、最初に イメージセットをディスクにミラーリング してから、ディスク上のイメージセットファイルをミラーにミラーリング する必要があります。
3.4.7.2.1. ミラーからディスクへのミラーリング
oc-mirror プラグインを使用して、イメージセットを生成し、コンテンツをディスクに保存できます。生成されたイメージセットは、非接続環境に転送され、ターゲットレジストリーにミラーリングされます。
イメージセット設定ファイルで指定されている設定によっては、oc-mirror を使用してイメージをミラーリングすると、数百ギガバイトのデータがディスクにダウンロードされる場合があります。
多くの場合、ミラーレジストリーにデータを入力するときの最初のイメージセットのダウンロードが、最も大きなものとなります。最後にコマンドを実行した後に変更されたイメージのみをダウンロードするため、oc-mirror プラグインを再度実行すると、生成されるイメージセットは小さいことが多いです。
イメージセット設定ファイルでストレージバックエンドを指定する必要があります。このストレージバックエンドは、ローカルディレクトリーまたは docker v2 レジストリーにすることができます。oc-mirror プラグインは、イメージセットの作成中にこのストレージバックエンドにメタデータを保存します。
oc-mirror プラグインによって生成されたメタデータを削除または変更しないでください。同じミラーレジストリーに対して oc-mirror プラグインを実行するたびに、同じストレージバックエンドを使用する必要があります。
前提条件
- 必要なコンテナーイメージを取得するためのインターネットへのアクセスがある。
-
OpenShift CLI (
oc
) がインストールされている。 -
oc-mirror
CLI プラグインをインストールしている。 - イメージセット設定ファイルを作成している。
手順
oc mirror
コマンドを実行して、指定されたイメージセット設定からディスクにイメージをミラーリングします。$ oc mirror --config=./imageset-config.yaml \1 file://<path_to_output_directory> 2
検証
出力ディレクトリーに移動します。
$ cd <path_to_output_directory>
イメージセットの
.tar
ファイルが作成されたことを確認します。$ ls
出力例
mirror_seq1_000000.tar
次のステップ
- イメージセットの.tar ファイルを非接続環境に転送します。
トラブルシューティング
3.4.7.2.2. ディスクからミラーへのミラーリング
oc-mirror プラグインを使用して、生成されたイメージセットの内容をターゲットミラーレジストリーにミラーリングできます。
前提条件
-
非接続環境に OpenShift CLI (
oc
) をインストールしている。 -
非接続環境に
oc-mirror
CLI プラグインをインストールしている。 -
oc mirror
コマンドを使用してイメージセットファイルを生成している。 - イメージセットファイルを非接続環境に転送しました。
手順
oc mirror
コマンドを実行して、ディスク上のイメージセットファイルを処理し、その内容をターゲットミラーレジストリーにミラーリングします。$ oc mirror --from=./mirror_seq1_000000.tar \1 docker://registry.example:5000 2
- 1
- この例では、
mirror_seq1_000000.tar
という名前のイメージセット.tar ファイルをミラーに渡します。イメージセット設定ファイルでarchiveSize
値が指定されている場合、イメージセットは複数の.tar ファイルに分割される可能性があります。この状況では、イメージセットの.tar ファイルを含むディレクトリーを渡すことができます。 - 2
- イメージセットファイルをミラーリングするレジストリーを指定します。レジストリーは
docker://
で始まる必要があります。ミラーレジストリーに最上位の namespace を指定する場合は、これ以降の実行でもこれと同じ namespace を使用する必要があります。
このコマンドは、ミラーレジストリーをイメージセットで更新し、
ImageContentSourcePolicy
およびCatalogSource
リソースを生成します。
検証
-
生成された
oc-mirror-workspace/
ディレクトリーに移動します。 -
results ディレクトリーに移動します (例:
results-1639608409/
。 -
ImageContentSourcePolicy
およびCatalogSource
リソースに YAML ファイルが存在することを確認します。
次のステップ
- oc-mirror が生成したリソースを使用するようにクラスターを設定します。
トラブルシューティング
3.4.8. oc-mirror が生成したリソースを使用するためのクラスター設定
イメージセットをミラーレジストリーにミラーリングした後に、生成された ImageContentSourcePolicy
、CatalogSource
、およびリリースイメージの署名リソースをクラスターに適用する必要があります。
ImageContentSourcePolicy
リソースは、ミラーレジストリーをソースレジストリーに関連付け、イメージプル要求をオンラインレジストリーからミラーレジストリーにリダイレクトします。CatalogSource
リソースは、Operator Lifecycle Manager (OLM) によって使用され、ミラーレジストリーで使用可能な Operator に関する情報を取得します。リリースイメージの署名は、ミラーリングされたリリースイメージの検証に使用されます。
前提条件
- 非接続環境で、イメージセットをレジストリーミラーにミラーリングしました。
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
-
cluster-admin
ロールを持つユーザーとして OpenShift CLI にログインします。 以下のコマンドを実行して、results ディレクトリーからクラスターに YAML ファイルを適用します。
$ oc apply -f ./oc-mirror-workspace/results-1639608409/
リリースイメージをミラーリングした場合は、次のコマンドを実行して、リリースイメージの署名をクラスターに適用します。
$ oc apply -f ./oc-mirror-workspace/results-1639608409/release-signatures/
注記クラスターではなく Operator をミラーリングしている場合、
$ oc apply -f ./oc-mirror-workspace/results-1639608409/release-signatures/
を実行する必要はありません。適用するリリースイメージ署名がないため、このコマンドを実行するとエラーが返されます。
検証
以下のコマンドを実行して、
ImageContentSourcePolicy
リソースが正常にインストールされたことを確認します。$ oc get imagecontentsourcepolicy
以下のコマンドを実行して、
CatalogSource
リソースが正常にインストールされたことを確認します。$ oc get catalogsource -n openshift-marketplace
3.4.9. ミラーレジストリーコンテンツの更新
イメージセット設定ファイルを更新し、イメージセットをミラーレジストリーにミラーリングすることで、ミラーレジストリーの内容を更新できます。oc-mirror プラグインを次回実行したときに、前回の実行以降の新規イメージと更新されたイメージのみを含むイメージセットが生成されます。
ミラーレジストリーを更新する際には、次の点を考慮する必要があります。
生成およびミラーリングされた最新のイメージセットにイメージが含まれていない場合、そのイメージはターゲットミラーレジストリーからプルーニングされます。したがって、差分イメージセットのみが作成およびミラーリングされるように、以下と同じ組み合わせの主要コンポーネントのイメージを更新してください。
- イメージセットの設定
- 宛先レジストリー
- ストレージの設定
- ディスクからミラー、またはミラーからミラーへのワークフローの場合、イメージがプルーニングされる可能性があります。
- 生成されたイメージセットは、ターゲットミラーレジストリーに順番にプッシュする必要があります。シーケンス番号は、生成されたイメージセットアーカイブファイルのファイル名から取得できます。
- oc-mirror プラグインによって生成されたメタデータイメージを削除または変更しないでください。
- イメージセットの最初の作成時にミラーレジストリーにトップレベルの namespace を指定した場合は、同じミラーレジストリーに対して oc-mirror プラグインを実行するたびに、この同じ namespace を使用する必要があります。
ミラーレジストリーコンテンツを更新するワークフローの詳細は、「ワークフローの概要」セクションを参照してください。
3.4.9.1. ミラーレジストリーの更新例
このセクションでは、ミラーレジストリーをディスクからミラーに更新するユースケースを説明します。
以前ミラーリングに使用した ImageSetConfiguration
ファイルの例
apiVersion: mirror.openshift.io/v1alpha2 kind: ImageSetConfiguration storageConfig: local: path: /home/user/metadata mirror: platform: channels: - name: stable-4.12 minVersion: 4.12.1 maxVersion: 4.12.1 operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.14 packages: - name: rhacs-operator channels: - name: stable
既存のイメージをプルーニングして特定の OpenShift Container Platform バージョンをミラーリングする
更新された ImageSetConfiguration
ファイル
apiVersion: mirror.openshift.io/v1alpha2
kind: ImageSetConfiguration
storageConfig:
local:
path: /home/user/metadata
mirror:
platform:
channels:
- name: stable-4.13 1
operators:
- catalog: registry.redhat.io/redhat/redhat-operator-index:v4.14
packages:
- name: rhacs-operator
channels:
- name: stable
- 1
stable-4.13
に置き換えると、stable-4.12
のすべてのイメージがプルーニングされます。
既存のイメージをプルーニングして Operator の最新バージョンに更新する
更新された ImageSetConfiguration
ファイル
apiVersion: mirror.openshift.io/v1alpha2
kind: ImageSetConfiguration
storageConfig:
local:
path: /home/user/metadata
mirror:
platform:
channels:
- name: stable-4.12
minVersion: 4.12.1
maxVersion: 4.12.1
operators:
- catalog: registry.redhat.io/redhat/redhat-operator-index:v4.14
packages:
- name: rhacs-operator
channels:
- name: stable 1
- 1
- バージョンを指定せずに同じチャネルを使用すると、既存のイメージがプルーニングされ、最新バージョンのイメージに更新されます。
既存の Operator をプルーニングして新しい Operator をミラーリングする
更新された ImageSetConfiguration
ファイル
apiVersion: mirror.openshift.io/v1alpha2
kind: ImageSetConfiguration
storageConfig:
local:
path: /home/user/metadata
mirror:
platform:
channels:
- name: stable-4.12
minVersion: 4.12.1
maxVersion: 4.12.1
operators:
- catalog: registry.redhat.io/redhat/redhat-operator-index:v4.14
packages:
- name: <new_operator_name> 1
channels:
- name: stable
- 1
rhacs-operator
をnew_operator_name
に置き換えると、Red Hat Advanced Cluster Security for Kubernetes Operator がプルーニングされます。
すべての OpenShift Container Platform イメージをプルーニングする
更新された ImageSetConfiguration
ファイル
apiVersion: mirror.openshift.io/v1alpha2 kind: ImageSetConfiguration storageConfig: local: path: /home/user/metadata mirror: platform: channels: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.14 packages:
3.4.10. ドライランの実行
実際にイメージをミラーリングせずに、oc-mirror を使用してドライランを実行できます。これにより、ミラーリングされるイメージのリストと、ミラーレジストリーからプルーニングされるイメージを確認できます。ドライランを使用すると、イメージセット設定のエラーを早期に検出したり、生成されたイメージリストを他のツールで使用してミラーリング操作を実行したりすることもできます。
前提条件
- 必要なコンテナーイメージを取得するためのインターネットへのアクセスがある。
-
OpenShift CLI (
oc
) がインストールされている。 -
oc-mirror
CLI プラグインをインストールしている。 - イメージセット設定ファイルを作成している。
手順
--dry-run
フラグを指定してoc mirror
コマンドを実行し、ドライランを実行します。$ oc mirror --config=./imageset-config.yaml \1 docker://registry.example:5000 \2 --dry-run 3
出力例
Checking push permissions for registry.example:5000 Creating directory: oc-mirror-workspace/src/publish Creating directory: oc-mirror-workspace/src/v2 Creating directory: oc-mirror-workspace/src/charts Creating directory: oc-mirror-workspace/src/release-signatures No metadata detected, creating new workspace wrote mirroring manifests to oc-mirror-workspace/operators.1658342351/manifests-redhat-operator-index ... info: Planning completed in 31.48s info: Dry run complete Writing image mapping to oc-mirror-workspace/mapping.txt
生成されたワークスペースディレクトリーに移動します。
$ cd oc-mirror-workspace/
生成された
mapping.txt
ファイルを確認します。このファイルには、ミラーリングされるすべてのイメージのリストが含まれています。
生成された
pruning-plan.json
ファイルを確認します。このファイルには、イメージセットの公開時にミラーレジストリーからプルーニングされるすべてのイメージのリストが含まれています。
注記pruning-plan.json
ファイルは、oc-mirror コマンドがミラーレジストリーを指し、プルーニングするイメージがある場合にのみ生成されます。
3.4.11. ローカルの OCI Operator カタログを含む
OpenShift Container Platform リリース、Operator カタログ、および追加イメージをレジストリーから部分的に切断されたクラスターにミラーリングするときに、ディスク上のローカルのファイルベースのカタログから Operator カタログイメージを含めることができます。ローカルカタログは Open Container Initiative (OCI) 形式である必要があります。
ローカルカタログとそのコンテンツは、イメージセット設定ファイル内のフィルタリング情報に基づいて、ターゲットミラーレジストリーにミラーリングされます。
ローカル OCI カタログをミラーリングする場合、ローカル OCI 形式のカタログとともにミラーリングする OpenShift Container Platform リリースまたは追加のイメージをレジストリーからプルする必要があります。
OCI カタログを oc-mirror イメージセットファイルと一緒にディスク上でミラーリングすることはできません。
OCI 機能を使用するユースケースの 1 つの例は、ディスク上の場所に OCI カタログを構築している CI/CD システムがあり、その OCI カタログを OpenShift Container Platform リリースとともにミラーレジストリーにミラーリングしたい場合です。
OpenShift Container Platform 4.12 の oc-mirror プラグインの Technology Preview OCI ローカルカタログ機能を使用した場合、完全に切断されたクラスターへのミラーリングの最初のステップとして、ローカルにカタログをコピーして OCI 形式に変換するために oc-mirror プラグインの OCI ローカルカタログ機能を使用できないようになりました。
前提条件
- 必要なコンテナーイメージを取得するためのインターネットへのアクセスがある。
-
OpenShift CLI (
oc
) がインストールされている。 -
oc-mirror
CLI プラグインをインストールしている。
手順
イメージセット設定ファイルを作成し、必要に応じて設定を調整します。
次のイメージセット設定例では、OpenShift Container Platform リリースおよび
registry.redhat.io
の UBI イメージとともに、ディスク上の OCI カタログをミラーリングします。kind: ImageSetConfiguration apiVersion: mirror.openshift.io/v1alpha2 storageConfig: local: path: /home/user/metadata 1 mirror: platform: channels: - name: stable-4.17 2 type: ocp graph: false operators: - catalog: oci:///home/user/oc-mirror/my-oci-catalog 3 targetCatalog: my-namespace/redhat-operator-index 4 packages: - name: aws-load-balancer-operator - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.17 5 packages: - name: rhacs-operator additionalImages: - name: registry.redhat.io/ubi9/ubi:latest 6
- 1
- イメージセットのメタデータを保存するバックエンドの場所を設定します。この場所は、レジストリーまたはローカルディレクトリーにすることができます。
storageConfig
値を指定する必要があります。 - 2
- オプションで、
registry.redhat.io
からミラーリングする OpenShift Container Platform リリースを含めます。 - 3
- ディスク上の OCI カタログの場所への絶対パスを指定します。OCI 機能を使用する場合、パスは
oci://
で始まる必要があります。 - 4
- 必要に応じて、カタログをミラーリングする代替の namespace と名前を指定します。
- 5
- 必要に応じて、レジストリーから取得する追加の Operator カタログを指定します。
- 6
- 必要に応じて、レジストリーからプルする追加のイメージを指定します。
oc mirror
コマンドを実行して、OCI カタログをターゲットミラーレジストリーにミラーリングします。$ oc mirror --config=./imageset-config.yaml \ 1 docker://registry.example:5000 2
オプションで、他のフラグを指定して OCI 機能の動作を調整できます。
--oci-insecure-signature-policy
- 署名をターゲットミラーレジストリーにプッシュしないでください。
--oci-registries-config
TOML 形式の
registries.conf
ファイルへのパスを指定します。これを使用して、イメージセット設定ファイルを変更することなく、テスト用の運用前の場所など、別のレジストリーからミラーリングできます。このフラグはローカル OCI カタログにのみ影響し、他のミラーリングされたコンテンツには影響しません。registries.conf ファイルの例
[[registry]] location = "registry.redhat.io:5000" insecure = false blocked = false mirror-by-digest-only = true prefix = "" [[registry.mirror]] location = "preprod-registry.example.com" insecure = false
次のステップ
- oc-mirror が生成したリソースを使用するようにクラスターを設定します。
3.4.12. Image set configuration parameters
oc-mirror プラグインには、ミラーリングするイメージを定義するイメージセット設定ファイルが必要です。次の表に、ImageSetConfiguration
リソースで使用可能なパラメーターを示します。
パラメーター | 説明 | 値 |
---|---|---|
|
|
String。例: |
| イメージセット内の各アーカイブファイルの最大サイズ (GiB 単位)。 |
整数。例: |
| イメージセットの設定。 | オブジェクト |
| イメージセットの追加のイメージ設定。 | オブジェクトの配列。以下に例を示します。 additionalImages: - name: registry.redhat.io/ubi8/ubi:latest |
| ミラーリングするイメージのタグまたはダイジェスト。 |
String。例: |
| ミラーリングからブロックするイメージの完全なタグ、ダイジェスト、またはパターン。 |
文字列の配列例: |
| イメージセットのヘルム設定。oc-mirror プラグインは、レンダリング時にユーザー入力を必要としないヘルムチャートのみをサポートすることに注意してください。 | オブジェクト |
| ミラーリングするローカルヘルムチャート。 | オブジェクトの配列。以下に例を示します。 local: - name: podinfo path: /test/podinfo-5.0.0.tar.gz |
| ミラーリングするローカルヘルムチャートの名前。 |
String。例: |
| ミラーリングするローカルヘルムチャートのパス。 |
String。例: |
| ミラーリング元のリモートヘルムリポジトリー。 | オブジェクトの配列。以下に例を示します。 repositories: - name: podinfo url: https://example.github.io/podinfo charts: - name: podinfo version: 5.0.0 |
| ミラーリング元のヘルムリポジトリーの名前。 |
String。例: |
| ミラーリング元の helm リポジトリーの URL。 |
String。例: |
| ミラーリングするリモートヘルムチャート。 | オブジェクトの配列。 |
| ミラーリングするヘルムチャートの名前。 |
String。例: |
| ミラーリングする名前付きヘルムチャートのバージョン。 |
String。例: |
| イメージセットの Operators 設定。 | オブジェクトの配列。以下に例を示します。 operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.17 packages: - name: elasticsearch-operator minVersion: '2.4.0' |
| イメージセットに含める Operator カタログ。 |
String。たとえば、 |
|
|
ブール値。デフォルト値は |
| Operator パッケージ設定 | オブジェクトの配列。以下に例を示します。 operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.17 packages: - name: elasticsearch-operator minVersion: '5.2.3-31' |
| イメージセットに含める Operator パッケージ名 |
String。例: |
| Operator パッケージのチャネル設定。 | オブジェクト |
| イメージセットに含める、パッケージ内で一意の Operator チャネル名。 |
String。たとえば、 |
| Operator が存在するすべてのチャネルでミラーリングする最上位バージョンの Operator。詳細は、以下の注記を参照してください。 |
String。例: |
| 含める最小バンドルの名前と、チャネルヘッドへの更新グラフ内のすべてのバンドル。名前付きバンドルにセマンティックバージョンメタデータがない場合にのみ、このフィールドを設定します。 |
String。例: |
| 存在するすべてのチャネル間でミラーリングする Operator の最低バージョン。詳細は、以下の注記を参照してください。 |
String。例: |
| Operator が存在するすべてのチャネルでミラーリングする最上位バージョンの Operator。詳細は、以下の注記を参照してください。 |
String。例: |
| 存在するすべてのチャネル間でミラーリングする Operator の最低バージョン。詳細は、以下の注記を参照してください。 |
String。例: |
|
|
ブール値。デフォルト値は |
| 参照されるカタログをミラーリングするための代替名とオプションの namespace 階層。 |
String。例: |
| 参照されたカタログをミラーリングするための代替名。
|
String。例: |
|
|
String。例: |
| イメージセットのプラットフォーム設定。 | オブジェクト |
| ミラーリングするプラットフォームリリースペイロードのアーキテクチャー。 | 文字列の配列以下に例を示します。 architectures: - amd64 - arm64 - multi - ppc64le - s390x
デフォルト値は |
| イメージセットのプラットフォームチャネル設定。 | オブジェクトの配列。以下に例を示します。 channels: - name: stable-4.10 - name: stable-4.17 |
|
|
ブール値。デフォルト値は |
| リリースチャネルの名前。 |
String。例: |
| ミラーリングされる参照プラットフォームの最小バージョン。 |
String。例: |
| ミラーリングされる参照プラットフォームの最上位バージョン。 |
String。例: |
| 最短パスミラーリングまたはフルレンジミラーリングを切り替えます。 |
ブール値。デフォルト値は |
| ミラーリングするプラットフォームのタイプ。 |
String。例: |
| OSUS グラフがイメージセットに追加され、その後ミラーに公開されるかどうかを示します。 |
ブール値。デフォルト値は |
| イメージセットのバックエンド設定。 | オブジェクト |
| イメージセットのローカルバックエンド設定。 | オブジェクト |
| イメージセットのメタデータを含むディレクトリーのパス。 |
String。例: |
| イメージセットのレジストリーバックエンド設定。 | オブジェクト |
| バックエンドレジストリー URI。オプションで、URI に namespace 参照を含めることができます。 |
String。例: |
| オプションで、参照されるバックエンドレジストリーの TLS 検証をスキップします。 |
ブール値。デフォルト値は |
minVersion
および maxVersion
プロパティーを使用して特定の Operator バージョン範囲をフィルターすると、複数のチャネルヘッドエラーが発生する可能性があります。エラーメッセージには、multiple channel heads
があることが示されます。これは、フィルターを適用すると、Operator の更新グラフが切り捨てられるためです。
すべての Operator チャネルに、1 つのエンドポイント (つまり最新バージョンの Operator) を持つ更新グラフを構成するバージョンが含まれている必要があります。これは Operator Lifecycle Manager によって要求される要件です。フィルター範囲を適用すると、更新グラフが 2 つ以上の個別のグラフ、または複数のエンドポイントを持つグラフに変換されることがあります。
このエラーを回避するには、最新バージョンの Operator を除外しないでください。それでもエラーが発生する場合は、Operator に応じて、maxVersion
プロパティーを増やすか、minVersion
プロパティーを減らす必要があります。Operator グラフはそれぞれ異なる可能性があるため、エラーが解決するまでこれらの値を調整する必要がある場合があります。
3.4.13. Image set configuration examples
次の ImageSetConfiguration
ファイルの例は、さまざまなミラーリングのユースケースの設定を示しています。
ユースケース: 最短の OpenShift Container Platform 更新パスを含める
以下の ImageSetConfiguration
ファイルは、ローカルストレージバックエンドを使用し、最小バージョン 4.11.37
から最大バージョン 4.12.15
への最短更新パスに沿ってすべての OpenShift Container Platform バージョンを含めます。
ImageSetConfiguration
ファイルの例
apiVersion: mirror.openshift.io/v1alpha2 kind: ImageSetConfiguration storageConfig: local: path: /home/user/metadata mirror: platform: channels: - name: stable-4.12 minVersion: 4.11.37 maxVersion: 4.12.15 shortestPath: true
使用事例: マルチアーキテクチャーリリースの最小バージョンから最新バージョンまでの OpenShift Container Platform のすべてのバージョンを含める
以下の ImageSetConfiguration
ファイルは、レジストリーストレージバックエンドを使用し、最小バージョン 4.13.4
からチャネルの最新バージョンまでのすべての OpenShift Container Platform バージョンを含みます。このイメージセット設定で oc-mirror を呼び出すたびに、stable-4.13
チャネルの最新リリースが評価されるため、定期的に oc-mirror を実行すると、OpenShift Container Platform イメージの最新リリースを自動的に受け取ることができます。
platform.architectures
の値を multi
に設定すると、マルチアーキテクチャーリリースでミラーリングがサポートされるようになります。
ImageSetConfiguration
ファイルの例
apiVersion: mirror.openshift.io/v1alpha2 kind: ImageSetConfiguration storageConfig: registry: imageURL: example.com/mirror/oc-mirror-metadata skipTLS: false mirror: platform: architectures: - "multi" channels: - name: stable-4.13 minVersion: 4.13.4 maxVersion: 4.13.6
ユースケース: 最小から最新までの Operator バージョンを含める
次のImageSetConfiguration
ファイルは、ローカルストレージバックエンドを使用し、これには、stable
チャネルの Kubernetes Operator 用の Red Hat Advanced Cluster Security (4.0.1 以降のバージョン) のみが含まれています。
最小または最大のバージョン範囲を指定した場合、その範囲内のすべての Operator バージョンを受信できない可能性があります。
デフォルトで、oc-mirror は、Operator Lifecycle Manager (OLM) 仕様でスキップされたバージョン、または新しいバージョンに置き換えられたバージョンを除外します。スキップされた Operator のバージョンは、CVE の影響を受けるか、バグが含まれている可能性があります。代わりに新しいバージョンを使用してください。スキップおよび置き換えられたバージョンの詳細は、OLM を使用した更新グラフの作成 を参照してください。
指定した範囲内のすべての Operator バージョンを受信するには、mirror.operators.full
フィールドを true
に設定します。
ImageSetConfiguration
ファイルの例
apiVersion: mirror.openshift.io/v1alpha2 kind: ImageSetConfiguration storageConfig: local: path: /home/user/metadata mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.17 packages: - name: rhacs-operator channels: - name: stable minVersion: 4.0.1
最新バージョンではなく最大バージョンを指定するには、mirror.operators.packages.channels.maxVersion
フィールドを設定します。
ユースケース: Nutanix CSI Operator を含める
次の ImageSetConfiguration
ファイルは、ローカルストレージバックエンドを使用します。このファイルには、Nutanix CSI Operator、OpenShift Update Service (OSUS) グラフイメージ、および追加の Red Hat Universal Base Image (UBI) が含まれます。
ImageSetConfiguration
ファイルの例
kind: ImageSetConfiguration apiVersion: mirror.openshift.io/v1alpha2 storageConfig: registry: imageURL: mylocalregistry/ocp-mirror/openshift4 skipTLS: false mirror: platform: channels: - name: stable-4.11 type: ocp graph: true operators: - catalog: registry.redhat.io/redhat/certified-operator-index:v4.17 packages: - name: nutanixcsioperator channels: - name: stable additionalImages: - name: registry.redhat.io/ubi9/ubi:latest
ユースケース: デフォルトの Operator チャネルを含める
次の ImageSetConfiguration
ファイルには、OpenShift Elasticsearch Operator の stable-5.7
および stable
チャネルが含まれています。安定版 5.7
チャネルのパッケージのみが必要な場合でも、stable
チャネルは Operator のデフォルトチャネルであるため、ImageSetConfiguration
ファイルにも含める必要があります。そのチャネルでバンドルを使用しない場合も、常に Operator パッケージのデフォルトチャネルを含める必要があります。
oc mirror list operators --catalog=<catalog_name> --package=<package_name>
コマンドを実行すると、デフォルトチャネルを見つけることができます。
ImageSetConfiguration
ファイルの例
apiVersion: mirror.openshift.io/v1alpha2 kind: ImageSetConfiguration storageConfig: registry: imageURL: example.com/mirror/oc-mirror-metadata skipTLS: false mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.17 packages: - name: elasticsearch-operator channels: - name: stable-5.7 - name: stable
ユースケース: カタログ全体を含める (すべてのバージョン)
次の ImageSetConfiguration
ファイルは、mirror.operators.full
フィールドを true
に設定して、Operator カタログ全体のすべてのバージョンを含めます。
ImageSetConfiguration
ファイルの例
apiVersion: mirror.openshift.io/v1alpha2 kind: ImageSetConfiguration storageConfig: registry: imageURL: example.com/mirror/oc-mirror-metadata skipTLS: false mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.17 full: true
ユースケース: カタログ全体を含める (チャネルヘッドのみ)
次の ImageSetConfiguration
ファイルには、Operator カタログ全体のチャネルヘッドが含まれています。
デフォルトでは、カタログ内の各 Operator において、oc-mirror にはデフォルトチャネルから Operator の最新バージョン (チャネルヘッド) が含まれています。チャネルヘッドだけでなく、すべての Operator バージョンをミラーリングする場合は、mirror.operators.full
フィールドを true
に設定する必要があります。
この例では、targetCatalog
フィールドを使用して、カタログをミラーリングする代替 namespace と名前も指定します。
ImageSetConfiguration
ファイルの例
apiVersion: mirror.openshift.io/v1alpha2 kind: ImageSetConfiguration storageConfig: registry: imageURL: example.com/mirror/oc-mirror-metadata skipTLS: false mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.17 targetCatalog: my-namespace/my-operator-catalog
ユースケース: 任意のイメージとヘルムチャートを含む
次の ImageSetConfiguration
ファイルは、レジストリーストレージバックエンドを使用し、これにはヘルムチャートと追加の Red Hat Universal Base Image (UBI) が含まれています。
ImageSetConfiguration
ファイルの例
apiVersion: mirror.openshift.io/v1alpha2 kind: ImageSetConfiguration archiveSize: 4 storageConfig: registry: imageURL: example.com/mirror/oc-mirror-metadata skipTLS: false mirror: platform: architectures: - "s390x" channels: - name: stable-4.17 operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.17 helm: repositories: - name: redhat-helm-charts url: https://raw.githubusercontent.com/redhat-developer/redhat-helm-charts/master charts: - name: ibm-mongodb-enterprise-helm version: 0.2.0 additionalImages: - name: registry.redhat.io/ubi9/ubi:latest
使用例: EUS リリースのアップグレードパスを含める
次の ImageSetConfiguration
ファイルには eus-<version>
チャネルが含まれており、maxVersion
の値は minVersion
の値より 2 マイナーバージョン以上大きい値になっています。
たとえばこの ImageSetConfiguration
ファイルでは、minVersion
が 4.12.28
に設定されており、eus-4.14
チャネルの maxVersion
は 4.14.16
です。
ImageSetConfiguration
ファイルの例
kind: ImageSetConfiguration apiVersion: mirror.openshift.io/v2alpha1 mirror: platform: graph: true # Required for the OSUS Operator architectures: - amd64 channels: - name: stable-4.12 minVersion: '4.12.28' maxVersion: '4.12.28' shortestPath: true type: ocp - name: eus-4.14 minVersion: '4.12.28' maxVersion: '4.14.16' shortestPath: true type: ocp
ユースケース: multicluster engine Operator 用のマルチアーキテクチャー OpenShift Container Platform イメージとカタログを含める
次の ImageSetConfiguration
ファイルには、multicluster engine for Kubernetes Operator と、チャネル内の最小バージョン 4.17.0
以降のすべての OpenShift Container Platform バージョンが含まれています。
ImageSetConfiguration
ファイルの例
apiVersion: mirror.openshift.io/v1alpha2 kind: ImageSetConfiguration storageConfig: registry: imageURL: agent.agent.example.com:5000/openshift/release/metadata:latest/openshift/release/metadata:latest mirror: platform: architectures: - "multi" channels: - name: stable-4.17 minVersion: 4.17.0 maxVersion: 4.17.1 type: ocp operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.17 packages: - name: multicluster-engine
3.4.14. oc-mirror のコマンドリファレンス
以下の表は、oc mirror
サブコマンドとフラグを説明しています。
サブコマンド | 説明 |
---|---|
| 指定されたシェルのオートコンプリートスクリプトを生成します。 |
| イメージセットの内容を出力します。 |
| サブコマンドに関するヘルプを表示します。 |
| 初期イメージセット設定テンプレートを出力します。 |
| 利用可能なプラットフォームと Operator のコンテンツとそのバージョンを一覧表示します。 |
| oc-mirror バージョンを出力します。 |
フラグ | 説明 |
---|---|
| イメージセット設定ファイルへのパスを指定します。 |
| イメージのプルに関連しないエラーが発生した場合は、続行して、可能な限りミラーリングを試みます。 |
| ターゲットレジストリーの TLS 検証を無効にします。 |
| ターゲットレジストリーにはプレーン HTTP を使用します。 |
|
イメージをミラーリングせずにアクションを出力します。 |
| oc-mirror の実行によって生成されたイメージセットアーカイブへのパスを指定して、ターゲットレジストリーにロードします。 |
| ヘルプを表示します。 |
| イメージをダウンロードしてレイヤーをパックするときに、過去のミラーリングを無視します。増分ミラーリングを無効にし、より多くのデータをダウンロードする可能性があります。 |
|
|
|
ネストされたパスを制限する宛先レジストリーのネストされたパスの最大数を指定します。デフォルトは |
|
レジストリーごとに許可される同時要求の数を指定します。デフォルト値は |
|
( |
|
|
| アーティファクトディレクトリーの削除を省略します。 |
| Operator カタログのイメージタグをダイジェストピンに置き換えないでください。 |
|
イメージセットの公開時にメタデータをスキップします。これは、イメージセットが |
| イメージが見つからない場合は、エラーを報告して実行を中止する代わりにスキップします。イメージセット設定で明示的に指定されたカスタムイメージには適用されません。 |
| ターゲットミラーレジストリーからのイメージの自動プルーニングを無効にします。 |
| ダイジェストの検証を省略します。 |
| ソースレジストリーの TLS 検証を無効にします。 |
| ソースレジストリーにはプレーン HTTP を使用します。 |
|
ログレベルの詳細度の数値を指定します。有効な値は |
3.4.15. 関連情報
3.5. oc-mirror プラグイン v2 を使用した非接続インストールのイメージのミラーリング
プライベートレジストリー内のミラー化された OpenShift Container Platform コンテナーイメージセットからクラスターをインストールすると、直接インターネットに接続せずに制限されたネットワーク内でクラスターを実行できます。このレジストリーは、クラスターが実行中の場合は常に実行されている必要があります。
完全または部分的な非接続環境のミラーレジストリーにイメージをミラーリングするために、oc-mirror
OpenShift CLI (oc
) プラグインを使用できルノと同様に、oc-mirror プラグイン v2 を使用できます。公式の Red Hat レジストリーから必要なイメージをダウンロードするには、インターネット接続のあるシステムから oc-mirror プラグイン v2 を実行する必要があります。
oc-mirror プラグイン v2 はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
3.5.1. 前提条件
Red Hat Quay など、OpenShift Container Platform クラスターをホストする場所に Docker V2-2 をサポートするコンテナーイメージレジストリーを持っている。
注記Red Hat Quay を使用する場合は、oc-mirror プラグインを備えたバージョン 3.6 以降を使用してください。OpenShift Container Platform への Red Hat Quay Operator のデプロイ に関するドキュメント (Red Hat Quay ドキュメント) を参照してください。レジストリーの選択とインストールについてさらにサポートが必要な場合は、営業担当者または Red Hat サポートにお問い合わせください。
- コンテナーイメージレジストリー用の既存ソリューションがない場合、OpenShift Container Platform サブスクライバーには Red Hat OpenShift のミラーレジストリーが提供されます。このミラーレジストリーはサブスクリプションに含まれており、小規模なコンテナーレジストリーとして機能します。このレジストリーを使用して、非接続インストールに必要な OpenShift Container Platform のコンテナーイメージをミラーリングできます。
- プロビジョニングされたクラスター内のすべてのマシンは、ミラーレジストリーにアクセスできる必要があります。レジストリーにアクセスできない場合、インストールや更新などのタスクや、ワークロードの再配置などの日常的な操作が失敗する可能性があります。ミラーレジストリーは、その可用性が OpenShift Container Platform クラスターの実稼働環境の可用性と一致するように、可用性の高い方法で運用する必要があます。
ワークフローの概要
次の手順は、oc-mirror プラグイン v2 を使用してイメージをミラーレジストリーにミラーリングする方法の概要を示しています。
- イメージセット設定ファイルを作成します。
次のいずれかのワークフローを使用して、イメージセットをターゲットミラーレジストリーにミラーリングします。
イメージセットをターゲットミラーレジストリーに直接 (ミラーからミラーに) ミラーリングします。
-
イメージセットをディスクにミラーリングし (Mirror-to-Disk)、
tar
ファイルをターゲット環境に転送してから、イメージセットをターゲットミラーレジストリーにミラーリングします (Disk-to-Mirror)。
-
イメージセットをディスクにミラーリングし (Mirror-to-Disk)、
- oc-mirror プラグイン v2 が生成したリソースを使用するようにクラスターを設定します。
- 必要に応じてこれらの手順を繰り返して、ターゲットミラーレジストリーを更新します。
3.5.2. oc-mirror プラグイン v2 について
oc-mirror OpenShift CLI (oc
) プラグインは、必要なすべての OpenShift Container Platform コンテンツとその他のイメージをミラーレジストリーにミラーリングする単一のツールです。
oc-mirror の新しいテクノロジープレビューバージョンを使用するには、oc-mirror プラグイン v2 コマンドラインに --v2
フラグを追加します。
oc-mirror プラグイン v2 には次の機能があります。
- イメージが以前にミラーリングされたかどうかに関係なく、イメージセット設定で指定された完全なイメージセットが、ミラーされたレジストリーにミラーリングされていることを確認します。
- メタデータの代わりにキャッシュシステムを使用します。
- 新しいイメージのみをアーカイブに組み込むことで、アーカイブのサイズを最小限に抑えます。
- ミラーリングの日付で選択したコンテンツを含むミラーリングアーカイブを生成します。
-
増分を変更するだけでなく、完全なイメージセットに対して、
ImageContentSourcePolicy
(ICSP) の代わりにImageDigestMirrorSet
(IDMS)、ImageTagMirrorSet
(ITMS) を生成できます。 - バンドル名に基づきフィルター Operator のバージョンを保存します。
-
自動プルーニングは実行されません。V2 には
Delete
機能が追加され、ユーザーはイメージの削除をより細かく制御できるようになりました。 -
registries.conf
のサポートを導入します。この変更により、同じキャッシュを使用しつつ複数のエンクレーブに容易にミラーリングできます。
3.5.2.1. oc-mirror プラグイン v2 の互換性とサポート
oc-mirror プラグイン v2 は、OpenShift Container Platform でサポートされています。
aarch64
、ppc64le
、および s390x
アーキテクチャーでは、oc-mirror プラグイン v2 は OpenShift Container Platform バージョン 4.14 以降でのみサポートされます。
ミラーリングする必要がある OpenShift Container Platform のバージョンに関係なく、使用可能な最新バージョンの oc-mirror プラグイン v2 を使用してください。
3.5.3. ミラーホストの準備
イメージミラーリングに oc-mirror プラグイン v2 を使用するには、プラグインをインストールし、コンテナーイメージの認証情報を含むファイルを作成して、Red Hat からミラーにミラーリングできるようにする必要があります。
3.5.3.1. oc-mirror OpenShift CLI プラグインのインストール
非接続環境でイメージセットを管理するには、oc-mirror OpenShift CLI プラグインをインストールします。
前提条件
OpenShift CLI (
oc
) がインストールされている。完全な非接続環境でイメージセットをミラーリングする場合は、次の点を確認してください。- インターネットにアクセスできるホストに oc-mirror プラグインをインストールした。
- 非接続環境のホストが、ターゲットミラーレジストリーにアクセスできる。
-
oc-mirror を使用するオペレーティングシステムで、
umask
パラメーターを0022
に設定した。 - 使用している RHEL バージョンに適したバイナリーをインストールした。
手順
oc-mirror CLI プラグインをダウンロードします。
- OpenShift Cluster Manager の ダウンロード ページに移動します。
- OpenShift 切断インストールツール セクションで、OpenShift Client (oc) ミラープラグイン の ダウンロード をクリックしてファイルを保存します。
アーカイブを抽出します。
$ tar xvzf oc-mirror.tar.gz
必要に応じて、プラグインファイルを更新して実行可能にします。
$ chmod +x oc-mirror
注記oc-mirror
ファイルの名前を変更しないでください。ファイルを
PATH
に配置して、oc-mirror CLI プラグインをインストールします (例:/usr/local/bin
):。$ sudo mv oc-mirror /usr/local/bin/.
検証
次のコマンドを実行して、oc-mirror v2 のプラグインが正常にインストールされていることを確認します。
$ oc mirror --v2 --help
3.5.3.2. イメージのミラーリングを可能にする認証情報の設定
Red Hat からミラーにイメージをミラーリングできるコンテナーイメージレジストリー認証情報ファイルを作成します。
クラスターのインストール時に、このイメージレジストリー認証情報ファイルをプルシークレットとして使用しないでください。クラスターのインストール時にこのファイルを指定すると、クラスター内のすべてのマシンにミラーレジストリーへの書き込みアクセスが付与されます。
このプロセスでは、ミラーレジストリーのコンテナーイメージレジストリーへの書き込みアクセスがあり、認証情報をレジストリープルシークレットに追加する必要があります。
前提条件
- 非接続環境で使用するミラーレジストリーを設定しました。
- イメージをミラーリングするミラーレジストリー上のイメージリポジトリーの場所を特定している。
- イメージのイメージリポジトリーへのアップロードを許可するミラーレジストリーアカウントをプロビジョニングしている。
手順
インストールホストで以下の手順を実行します。
-
registry.redhat.io
プルシークレットを Red Hat OpenShift Cluster Manager からダウンロードします。 JSON 形式でプルシークレットのコピーを作成します。
$ cat ./pull-secret | jq . > <path>/<pull_secret_file_in_json> 1
- 1
- プルシークレットを保存するフォルダーへのパスおよび作成する JSON ファイルの名前を指定します。
ファイルの内容は以下の例のようになります。
{ "auths": { "cloud.openshift.com": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "quay.io": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "registry.connect.redhat.com": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" }, "registry.redhat.io": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" } } }
-
ファイルを
$XDG_RUNTIME_DIR/containers/auth.json
として保存します。 ミラーレジストリーの base64 でエンコードされたユーザー名およびパスワードまたはトークンを生成します。
$ echo -n '<user_name>:<password>' | base64 -w0 1 BGVtbYk3ZHAtqXs=
- 1
<user_name>
および<password>
には、レジストリーに設定したユーザー名およびパスワードを指定します。
JSON ファイルを編集し、レジストリーを記述するセクションをこれに追加します。
"auths": { "<mirror_registry>": { 1 "auth": "<credentials>", 2 "email": "you@example.com" } },
ファイルは以下の例のようになります。
{ "auths": { "registry.example.com": { "auth": "BGVtbYk3ZHAtqXs=", "email": "you@example.com" }, "cloud.openshift.com": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "quay.io": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "registry.connect.redhat.com": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" }, "registry.redhat.io": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" } } }
3.5.4. イメージセットをミラーレジストリーにミラーリングする
イメージセットをミラーレジストリーにミラーリングすると、必要なイメージがセキュアで制御された環境で利用できるようになるため、デプロイメント、更新、メンテナンスのタスクがスムーズになります。
3.5.4.1. イメージセット設定のビルド
oc-mirror プラグイン v2 は、イメージセット設定を入力ファイルとして使用して、ミラーリングに必要なイメージを決定します。
ImageSetConfiguration
入力ファイルの例
kind: ImageSetConfiguration apiVersion: mirror.openshift.io/v2alpha1 mirror: platform: channels: - name: stable-4.13 minVersion: 4.13.10 maxVersion: 4.13.10 graph: true operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: aws-load-balancer-operator - name: 3scale-operator - name: node-observability-operator additionalImages: - name: registry.redhat.io/ubi8/ubi:latest - name: registry.redhat.io/ubi9/ubi@sha256:20f695d2a91352d4eaa25107535126727b5945bff38ed36a3e59590f495046f0
3.5.4.2. 部分的な非接続環境でのイメージセットのミラーリング
インターネットアクセスが制限されている環境では、oc-mirror プラグイン v2 を使用してイメージセットをレジストリーにミラーリングできます。
前提条件
- インターネット接続があり、oc-mirror プラグイン v2 を実行している環境内のミラーレジストリーにアクセスできる。
手順
次のコマンドを実行して、指定されたイメージセット設定から指定されたレジストリーにイメージをミラーリングします。
$ oc mirror -c isc.yaml --workspace file://<file_path> docker://<mirror_registry_url> --v2 1
- 1
- イメージの保存先であり、そこからイメージを削除する必要があるミラーレジストリーの URL またはアドレスを指定します。
検証
-
<file_path>
ディレクトリーに生成されたworking-dir
ディレクトリー内のcluster-resources
ディレクトリーに移動します。 -
ImageDigestMirrorSet
、ImageTagMirrorSet
、CatalogSource
リソースの YAML ファイルが存在することを確認します。
次のステップ
- oc-mirror プラグイン v2 が生成したリソースを使用するようにクラスターを設定します。
3.5.4.3. 完全な非接続環境でのイメージセットのミラーリング
OpenShift Container Platform クラスターがパブリックインターネットにアクセスできない完全な非接続環境で、イメージセットをミラーリングできます。
- ディスクにミラーリングする: ミラーリングするイメージセットを含むアーカイブを準備します。インターネットアクセスは必要ありません。
- 手動手順: 非接続ミラーレジストリーのネットワークにアーカイブを転送します。
- ミラーリングするディスク: アーカイブからターゲットの非接続レジストリーにイメージセットをミラーリングするには、ミラーレジストリーにアクセスできる環境から oc-mirror プラグイン v2 を実行します。
3.5.4.3.1. ミラーからディスクへのミラーリング
oc-mirror プラグイン v2 を使用して、イメージセットを生成し、コンテンツをディスクに保存できます。その後、生成されたイメージセットを非接続環境に転送し、ターゲットレジストリーにミラーリングできます。
oc-mirror プラグイン v2 は、イメージセット設定で指定されたソースからコンテナーイメージを取得し、ローカルディレクトリーの tar アーカイブにパックします。
手順
次のコマンドを実行して、指定されたイメージセット設定からディスクにイメージをミラーリングします。
$ oc mirror -c isc.yaml file://<file_path> --v2 1
- 1
- 必要なファイルパスを追加します。
検証
-
生成された
<file_path>
ディレクトリーに移動します。 - アーカイブファイルが生成されたことを確認します。
次のステップ
- oc-mirror プラグイン v2 が生成したリソースを使用するようにクラスターを設定します。
3.5.4.3.2. ディスクからミラーへのミラーリング
oc-mirror
プラグイン v2 を使用して、ディスクからターゲットミラーレジストリーにイメージセットをミラーリングできます。
oc-mirror
プラグイン v2 は、ローカルディスクからコンテナーイメージを取得し、指定されたミラーレジストリーに転送します。
手順
次のコマンドを実行して、ディスク上のイメージセットファイルを処理し、その内容をターゲットミラーレジストリーにミラーリングします。
$ oc mirror -c isc.yaml --from file://<file_path> docker://<mirror_registry_url> --v2 1
- 1
- イメージの保存先であり、そこからイメージを削除する必要があるミラーレジストリーの URL またはアドレスを指定します。
検証
-
<file_path>
ディレクトリーに生成されたworking-dir
ディレクトリー内のcluster-resources
ディレクトリーに移動します。 -
ImageDigestMirrorSet
、ImageTagMirrorSet
、CatalogSource
リソースの YAML ファイルが存在することを確認します。
次のステップ
- oc-mirror プラグイン v2 が生成したリソースを使用するようにクラスターを設定します。
3.5.5. 関連情報
3.5.6. v2 が生成するカスタムリソース
oc-mirror プラグイン v2 では、タグが参照するイメージが 1 つ以上あれば、ImageDigestMirrorSet
(IDMS) と ImageTagMirrorSet
(ITMS) がデフォルトで生成されます。これらのセットには、リリース、Operator カタログ、および追加イメージのダイジェストまたはタグにより参照されるイメージのミラーが含まれています。
ImageDigestMirrorSet
(IDMS) は、ミラーレジストリーをソースレジストリーにリンクし、ダイジェスト仕様を使用してイメージプルリクエストを転送します。ただし、ImagetagMirrorSet
(ITMS) リソースは、イメージタグを使用してイメージプルリクエストをリダイレクトします。
Operator Lifecycle Manager (OLM) は、CatalogSource
リソースを使用して、ミラーレジストリー内の利用可能な Operator に関する情報を取得します。
OSUS サービスは、UpdateService
リソースを使用して非接続環境に Cincinnati グラフを提供します。
3.5.6.1. oc-mirror プラグイン v2 が生成したリソースを使用するためのクラスター設定
イメージセットをミラーレジストリーにミラーリングした後、生成された ImageDigestMirrorSet
(IDMS)、ImageTagMirrorSet
(ITMS)、CatalogSource
、および UpdateService
をクラスターに適用する必要があります。
oc-mirror プラグイン v2 では、oc-mirror プラグイン v1 の ICSP ファイルとは異なり、IDMS ファイルと ITMS ファイルがイメージセット全体をカバーします。したがって、増分ミラーリング中に新しいイメージのみを追加した場合でも、IDMS ファイルと ITMS ファイルにはセットのすべてのイメージが含まれます。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
以下のコマンドを実行して、results ディレクトリーからクラスターに YAML ファイルを適用します。
$ oc apply -f <path_to_oc-mirror_workspace>/working-dir/cluster-resources
検証
次のコマンドを実行して、
ImageDigestMirrorSet
リソースが正常にインストールされたことを確認します。$ oc get imagedigestmirrorset
次のコマンドを実行して、
ImageTagMirrorSet
リソースが正常にインストールされたことを確認します。$ oc get imagetagmirrorset
以下のコマンドを実行して、
CatalogSource
リソースが正常にインストールされたことを確認します。$ oc get catalogsource -n openshift-marketplace
3.5.7. 非接続環境からのイメージ削除
oc-mirror プラグイン v2 を使用する前に、以前にデプロイしたイメージを削除する必要があります。oc-mirror プラグイン v2 では、自動プルーニングは実行されなくなりました。
oc-mirror プラグイン v2 を使用する場合は、イメージ設定を削除するために DeleteImageSetConfiguration
ファイルを作成する必要があります。これにより、ImageSetConfig.yaml
で変更を加えたときに、必要なイメージやデプロイされたイメージの誤削除がなくなります。
次の例では、DeleteImageSetConfiguration
で以下が削除されます。
- OpenShift Container Platform リリース 4.13.3 のすべてのイメージ。
-
カタログイメージ
redhat-operator-index
v4.12
。 -
aws-load-balancer-Operator
v0.0.1 バンドルと関連するすべてのイメージ。 -
対応するダイジェストが参照する追加イメージ
ubi
およびubi-minimal
。
例: DeleteImageSetConfig
apiVersion: mirror.openshift.io/v2alpha1 kind: DeleteImageSetConfiguration delete: platform: channels: - name: stable-4.13 minVersion: 4.13.3 maxVersion: 4.13.3 operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.12 packages: - name: aws-load-balancer-operator minVersion: 0.0.1 maxVersion: 0.0.1 additionalImages: - name: registry.redhat.io/ubi8/ubi@sha256:bce7e9f69fb7d4533447232478fd825811c760288f87a35699f9c8f030f2c1a6 - name: registry.redhat.io/ubi8/ubi-minimal@sha256:8bedbe742f140108897fb3532068e8316900d9814f399d676ac78b46e740e34e
ミラーリングの問題を軽減するために、mirror-to-disk と disk-to-mirror のワークフローの使用を検討してください。
イメージ削除ワークフローでは、oc-mirror プラグイン v2 はイメージのマニフェストのみを削除するため、レジストリーで占有されるストレージは削減されません。
マニフェストが削除されたイメージなど、不要なイメージが使用するストレージ領域を解放するには、コンテナーレジストリーでガベージコレクターを有効にする必要があります。ガベージコレクターを有効にすると、レジストリーはマニフェストへの参照がなくなったイメージ Blob を削除します。そのため、削除された Blob が使用していたストレージが削減されます。ガベージコレクターを有効にする方法は、コンテナーレジストリーにより異なります。
イメージの削除時に Operator カタログイメージの削除をスキップするには、DeleteImageSetConfiguration
ファイル内の Operator カタログイメージの下に特定の Operator をリストする必要があります。そうすることで、カタログイメージではなく、指定された Operator のみが削除されます。
Operator カタログイメージのみを指定した場合、そのカタログ内のすべての Operator とカタログイメージ自体が削除されます。
3.5.7.1. 非接続環境からイメージを削除する
oc-mirror プラグイン v2 を使用して非接続環境からイメージを削除するには、次の手順に従います。
手順
以前のイメージを削除する YAML ファイルを作成します。
$ oc mirror delete --config delete-image-set-config.yaml --workspace file://<previously_mirrored_work_folder> --v2 --generate docker://<remote_registry>
ここでは、以下のようになります。
-
<previously_mirrored_work_folder>
: ミラーリングプロセス中に、イメージが以前にミラーリングまたは保存されたディレクトリーを使用します。 -
<remote_registry>
: 削除するイメージがあるリモートコンテナーレジストリーの URL またはアドレスを挿入します。
-
-
作成された
<previously_mirrored_work_folder>/delete directory
に移動します。 -
delete-images.yaml
ファイルが生成されたことを確認します。 - ファイルにリストされている各イメージがクラスターで不要になり、レジストリーから安全に削除できることを手動で確認します。
delete
YAML ファイルを生成した後に、リモートレジストリーからイメージを削除します。$ oc mirror delete --v2 --delete-yaml-file <previously_mirrored_work_folder>/working-dir/delete/delete-images.yaml docker://<remote_registry>
ここでは、以下のようになります。
<previously_mirrored_work_folder>
: 以前にミラーリングした作業フォルダーを指定します。重要mirror-to-mirror 手順を使用する場合、イメージはローカルにキャッシュされないため、ローカルキャッシュからイメージを削除することはできません。
3.5.8. ミラーリング用に選択したイメージを確認する
oc-mirror プラグイン v2 を使用して、実際にはイメージをミラーリングしないテストラン (ドライラン) を実行できます。これにより、ミラーリングされるイメージのリストを確認できます。ドライランは、イメージセット設定のエラーを早期に検出するためにも使用できます。mirror-to-disk のワークフローでドライランを実行する場合、oc-mirror プラグイン v2 は、イメージセット内のすべてのイメージがキャッシュ内で使用可能か確認します。不足しているイメージは missing.txt
ファイルにリストされます。ミラーリングの前にドライランを実行すると、missing.txt
ファイルと mapping.txt
ファイルには同じイメージリストが含まれています。
3.5.8.1. oc-mirror プラグイン v2 のドライランを実行する
イメージをミラーリングせずにドライランを実行して、イメージセットの設定を確認します。これにより、セットアップが正しいことを確認でき、意図しない変更を防止できます。
手順
テストランを実行するには、
oc mirror
コマンドを実行し、コマンドに--dry-run
引数を追加します。$ oc mirror -c <image_set_config_yaml> --from file://<oc_mirror_workspace_path> docker://<mirror_registry_url> --dry-run --v2
ここでは、以下のようになります。
-
<image_set_config_yaml>
: 先ほど作成したイメージセット設定ファイルを使用します。 -
<oc_mirror_workspace_path>
: ワークスペースパスのアドレスを挿入します。 <mirror_registry_url>
: イメージを削除するリモートコンテナーレジストリーの URL またはアドレスを挿入します。出力例
$ oc mirror --config /tmp/isc_dryrun.yaml file://<oc_mirror_workspace_path> --dry-run --v2 [INFO] : :warning: --v2 flag identified, flow redirected to the oc-mirror v2 version. This is Tech Preview, it is still under development and it is not production ready. [INFO] : :wave: Hello, welcome to oc-mirror [INFO] : :gear: setting up the environment for you... [INFO] : :twisted_rightwards_arrows: workflow mode: mirrorToDisk [INFO] : :sleuth_or_spy: going to discover the necessary images... [INFO] : :mag: collecting release images... [INFO] : :mag: collecting operator images... [INFO] : :mag: collecting additional images... [WARN] : :warning: 54/54 images necessary for mirroring are not available in the cache. [WARN] : List of missing images in : CLID-19/working-dir/dry-run/missing.txt. please re-run the mirror to disk process [INFO] : :page_facing_up: list of all images for mirroring in : CLID-19/working-dir/dry-run/mapping.txt [INFO] : mirror time : 9.641091076s [INFO] : :wave: Goodbye, thank you for using oc-mirror
-
検証
生成されたワークスペースディレクトリーに移動します。
$ cd <oc_mirror_workspace_path>
-
生成された
mapping.txt
ファイルとmissing.txt
ファイルを確認します。これらのファイルには、ミラーリングされるすべてのイメージのリストが含まれています。
3.5.8.2. oc-mirror プラグイン v2 エラーのトラブルシューティング
oc-mirror プラグイン v2 では、すべてのイメージミラーリングエラーが別のファイルに記録されるようになり、障害の追跡と診断が容易になりました。
リリースイメージまたはリリースコンポーネントイメージのミラーリング中にエラーが発生した場合、それは重大なエラーです。これにより、ミラーリングプロセスが直ちに停止します。
Operator、Operator 関連イメージ、または追加イメージのミラーリングに関するエラーが発生しても、ミラーリングプロセスは停止しません。ミラーリングは継続され、oc-mirror プラグイン v2 は 8 イメージごとに更新を記録します。
イメージのミラーリングに失敗し、そのイメージが 1 つ以上の Operator バンドルの一部としてミラーリングされている場合、oc-mirror プラグイン v2 は、どの Operator が不完全であるかをユーザーに通知し、エラーの影響を受ける Operator バンドルを明確に示します。
手順
サーバー関連の問題を確認します。
エラーの例
[ERROR] : [Worker] error mirroring image localhost:55000/openshift/graph-image:latest error: copying image 1/4 from manifest list: trying to reuse blob sha256:edab65b863aead24e3ed77cea194b6562143049a9307cd48f86b542db9eecb6e at destination: pinging container registry localhost:5000: Get "https://localhost:5000/v2/": http: server gave HTTP response to HTTPS client
-
oc-mirror プラグイン v2 出力ディレクトリーにある
working-dir/logs
フォルダー内のmirroring_error_date_time.log
ファイルを開きます。 -
HTTP 500
エラー、期限切れのトークン、タイムアウトなどの、通常はサーバー側の問題を示すエラーメッセージを探します。 - 問題が解決しない場合は、ミラーリングプロセスを再試行するか、サポートにお問い合わせください。
-
oc-mirror プラグイン v2 出力ディレクトリーにある
Operator の不完全なミラーリングを確認します。
エラーの例
error mirroring image docker://registry.redhat.io/3scale-amp2/zync-rhel9@sha256:8bb6b31e108d67476cc62622f20ff8db34efae5d58014de9502336fcc479d86d (Operator bundles: [3scale-operator.v0.11.12] - Operators: [3scale-operator]) error: initializing source docker://localhost:55000/3scale-amp2/zync-rhel9:8bb6b31e108d67476cc62622f20ff8db34efae5d58014de9502336fcc479d86d: reading manifest 8bb6b31e108d67476cc62622f20ff8db34efae5d58014de9502336fcc479d86d in localhost:55000/3scale-amp2/zync-rhel9: manifest unknown error mirroring image docker://registry.redhat.io/3scale-amp2/3scale-rhel7-operator-metadata@sha256:de0a70d1263a6a596d28bf376158056631afd0b6159865008a7263a8e9bf0c7d error: skipping operator bundle docker://registry.redhat.io/3scale-amp2/3scale-rhel7-operator-metadata@sha256:de0a70d1263a6a596d28bf376158056631afd0b6159865008a7263a8e9bf0c7d because one of its related images failed to mirror error mirroring image docker://registry.redhat.io/3scale-amp2/system-rhel7@sha256:fe77272021867cc6b6d5d0c9bd06c99d4024ad53f1ab94ec0ab69d0fda74588e (Operator bundles: [3scale-operator.v0.11.12] - Operators: [3scale-operator]) error: initializing source docker://localhost:55000/3scale-amp2/system-rhel7:fe77272021867cc6b6d5d0c9bd06c99d4024ad53f1ab94ec0ab69d0fda74588e: reading manifest fe77272021867cc6b6d5d0c9bd06c99d4024ad53f1ab94ec0ab69d0fda74588e in localhost:55000/3scale-amp2/system-rhel7: manifest unknown
コンソールまたはログファイルで、どの Operator が不完全であるかを示す警告を確認します。
Operator が不完全としてフラグ付けされている場合、その Operator に関連するイメージのミラーリングに失敗した可能性があります。
- 不足しているイメージを手動でミラーリングするか、ミラーリングプロセスを再試行します。
生成されたクラスターリソースに関連するエラーを確認します。一部のイメージのミラーリングに失敗した場合でも、oc-mirror v2 は、正常にミラーリングされたイメージに対して
IDMS.yaml
ファイルやITMS.yaml
ファイルなどのクラスターリソースを生成します。- 生成されたファイルの出力ディレクトリーを確認します。
- 特定のイメージでこれらのファイルが見つからない場合、ミラーリングプロセス中にそれらのイメージに重大なエラーが発生していないことを確認します。
これらの手順に従うことで、問題をより適切に診断し、よりスムーズにミラーリングを実行できます。
3.5.9. エンクレーブサポートの利点
エンクレーブサポートは、ネットワークの特定部分への内部アクセスを制限します。ファイアウォール境界を通過する受信トラフィックおよび送信トラフィックのアクセスを許可する非武装地帯 (DMZ) ネットワークとは異なり、エンクレーブはファイアウォール境界を越えません。
エンクレーブサポートはテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
新しいエンクレーブサポート機能は、少なくとも 1 つの中間非接続ネットワークの背後で保護された複数のエンクレーブのミラーリングが必要な場合に使用します。
エンクレーブサポートには次の利点があります。
- 複数のエンクレーブのコンテンツをミラーリングし、単一の内部レジストリーに集約できます。ミラーリングされたコンテンツに対してセキュリティーチェックを実行する必要がある場合もありますが、そのようなチェックもこのセットアップですべて一度に実行できます。その後、コンテンツはダウンストリームのエンクレーブにミラーリングされる前に検査されます。
- 各エンクレーブに対してインターネットからミラーリングプロセスを再開することなく、集約された内部レジストリーからエンクレーブにコンテンツを直接ミラーリングできます。
- ネットワークステージ間のデータ転送を最小限に抑え、ステージ間で Blob またはイメージが 1 回だけ転送されるようにできます。
3.5.9.1. エンクレーブへのミラーリングのワークフロー
上の画像は、インターネット接続のある環境とない環境を含むさまざまな環境で oc-mirror プラグインを使用するフローの概要を示しています。
インターネット接続環境:
- ユーザーが oc-mirror プラグイン v2 を実行して、オンラインレジストリーのコンテンツをローカルディスクディレクトリーにミラーリングします。
- ミラーリングしたコンテンツを、オフライン環境への転送用のディスクに保存します。
非接続の企業環境 (インターネットなし):
フロー 1:
-
ユーザーが oc-mirror プラグイン v2 を実行して、オンライン環境から転送されたディスクディレクトリーのミラーリングされたコンテンツを
enterprise-registry.in
レジストリーにロードします。
-
ユーザーが oc-mirror プラグイン v2 を実行して、オンライン環境から転送されたディスクディレクトリーのミラーリングされたコンテンツを
フロー 2:
-
registries.conf
ファイルを更新した後、ユーザーは oc-mirror プラグイン v2 を実行して、enterprise-registry.in
レジストリーのコンテンツをエンクレーブ環境にミラーリングします。 - コンテンツを、エンクレーブへの転送用のディスクディレクトリーに保存します。
-
エンクレーブ環境 (インターネットなし):
-
ユーザーが oc-mirror プラグイン v2 を実行して、ディスクディレクトリーのコンテンツを
enclave-registry.in
レジストリーにロードします。
この画像は、これらの環境全体のデータフローを視覚的に表しており、インターネット接続のない非接続環境やエンクレーブ環境に対応するために oc-mirror を使用することを強調しています。
3.5.9.2. エンクレーブへのミラーリング
エンクレーブにミラーリングする場合は、まず 1 つ以上のエンクレーブから必要なイメージをエンタープライズ集約レジストリーに転送する必要があります。
中央レジストリーは、セキュアなネットワーク内 (具体的には非接続環境内) に配置されており、パブリックインターネットに直接リンクされていません。ただしユーザーは、パブリックインターネットにアクセスできる環境で oc mirror
を実行する必要があります。
手順
非接続環境で oc-mirror プラグイン v2 を実行する前に、
registries.conf
ファイルを作成します。ファイルの TOML 形式は、この仕様で説明されています。注記ファイルは、
$HOME/.config/containers/registries.conf
または/etc/containers/registries.conf
に保存することが推奨されます。registries.conf
の例[[registry]] location="registry.redhat.io" [[registry.mirror]] location="<enterprise-registry.in>" [[registry]] location="quay.io" [[registry.mirror]] location="<enterprise-registry.in>"
ミラーアーカイブを生成します。
すべての OpenShift Container Platform コンテンツを
<file_path>/enterprise-content
配下のディスクのアーカイブに収集するには、次のコマンドを実行します。$ oc mirror --v2 -c isc.yaml file://<file_path>/enterprise-content
isc.yaml の例
apiVersion: mirror.openshift.io/v2alpha1 kind: ImageSetConfiguration mirror: platform: architectures: - "amd64" channels: - name: stable-4.15 minVersion: 4.15.0 maxVersion: 4.15.3
生成されたアーカイブは、非接続環境に転送されます。トランスポートメカニズムは、oc-mirror プラグイン v2 に含まれていません。転送ストラテジーは、エンタープライズネットワーク管理者が決定します。
場合によっては、ディスクをある場所から物理的に取り外し、非接続環境内の別のコンピューターに接続することで、手動で転送します。その他の場合、セキュアファイル転送プロトコル (SFTP) またはその他のプロトコルを使用します。
アーカイブの転送が完了したら、次の例のとおり、oc-mirror プラグイン v2 を再度実行して関連するアーカイブの内容をレジストリー (例では
entrerpise_registry.in
) にミラーリングできます。$ oc mirror --v2 -c isc.yaml --from file://<disconnected_environment_file_path>/enterprise-content docker://<enterprise_registry.in>/
ここでは、以下のようになります。
-
--from
は、アーカイブを含むフォルダーを指します。file://
で始まります。 -
docker://
はミラーリングの宛先であり、最後の引数です。Docker レジストリーであるため、そのようになります。 -
-c
(--config
) は必須の引数です。これにより、oc-mirror プラグイン v2 は最終的にアーカイブのサブ部分のみをレジストリーにミラーリングできます。1 つのアーカイブに複数の OpenShift Container Platform リリースが含まれる場合がありますが、非接続環境またはエンクレーブではそのうちのいくつかのみミラーリングされる可能性があります。
-
エンクレーブにミラーリングするコンテンツを記述する
imageSetConfig
YAML ファイルを準備します。isc-enclave.yaml の例
apiVersion: mirror.openshift.io/v2alpha1 kind: ImageSetConfiguration mirror: platform: architectures: - "amd64" channels: - name: stable-4.15 minVersion: 4.15.2 maxVersion: 4.15.2
非接続レジストリーにアクセスできるマシン上で、oc-mirror プラグイン v2 を実行する必要があります。上記の例では、非接続環境
enterprise-registry.in
にアクセスできます。グラフの URL を更新する
graph:true
を使用している場合、oc-mirror プラグイン v2 はcincinnati
API エンドポイントに到達しようとします。この環境は接続されていないため、OpenShift Update Service (OSUS) の URL を参照するためには環境変数UPDATE_URL_OVERRIDE
をエクスポートする必要があります。$ export UPDATE_URL_OVERRIDE=https://<osus.enterprise.in>/graph
OpenShift クラスターで OSUS を設定する方法の詳細は、「OpenShift Update Service を使用した非接続環境でのクラスターの更新」を参照してください。
OpenShift Container Platform Extended Update Support (EUS) バージョンをアップグレードする場合、現行バージョンとターゲットバージョンの間に中間バージョンが必要になる場合があります。たとえば、最新バージョンが 4.14
で、ターゲットバージョンが 4.16
の場合、oc-mirror プラグイン v2 の使用時に ImageSetConfiguration
に 4.15.8
などのバージョンを含める必要がある場合があります。
oc-mirror プラグイン v2 は必ずしもこれを自動的に検出するとは限りません。Cincinnati graph の Web ページで 必要な中間バージョンを確認し、手動で設定に追加してください。
エンクレーブのエンタープライズレジストリーからミラーアーカイブを生成します。
enclave1
のアーカイブを準備するには、ユーザーはそのエンクレーブ固有のimageSetConfiguration
を使用して、エンタープライズ非接続環境で oc-mirror プラグイン v2 を実行します。これにより、そのエンクレーブに必要なイメージのみがミラーリングされます。$ oc mirror --v2 -c isc-enclave.yaml file:///disk-enc1/
このアクションは、OpenShift Container Platform のすべてのコンテンツをアーカイブに収集し、ディスク上にアーカイブを生成します。
-
生成されたアーカイブは、
enclave1
ネットワークに転送されます。トランスポートメカニズムは、oc-mirror プラグイン v2 の責任にはあたりません。 エンクレーブレジストリーにコンテンツをミラーリングする
アーカイブの転送が完了すると、ユーザーは関連するアーカイブの内容をレジストリーにミラーリングするために、oc-mirror プラグイン v2 を再度実行できます。
$ oc mirror --v2 -c isc-enclave.yaml --from file://local-disk docker://registry.enc1.in
これで、
enclave1
の OpenShift Container Platform クラスターの管理者が、そのクラスターをインストールまたはアップグレードする準備が整いました。
3.5.10. Operator カタログでのフィルタリング
oc-mirror プラグイン v2 は、imageSetConfig
の情報を処理することで、ミラーリングするバンドルのリストを選択します。
oc-mirror プラグイン v2 は、ミラーリングするバンドルを選択するときに、Group Version Kind (GVK) またはバンドルの依存関係を推測せず、それらをミラーリングセットから除外します。代わりに、ユーザーの指示に厳密に従います。必要な依存関係パッケージとそのバージョンを明示的に指定する必要があります。
通常、バンドルバージョンではセマンティックバージョニングの標準 (SemVer) が使用され、チャネル内のバンドルをバージョン別に並べ替えることができます。ImageSetConfig
で特定の範囲内のバンドルを選択できます。
この選択アルゴリズムにより、oc-mirror プラグイン v1 と比較して一貫性のある結果を得ることができます。ただし、replaces
、skip
、skipRange
などのアップグレードグラフの詳細は含まれません。このアプローチは OLM アルゴリズムとは異なります。minVersion
と maxVersion
の間のアップグレードパスが短くなる可能性があるため、クラスターのアップグレードに必要な数よりも多くのバンドルがミラーリングされる可能性があります。
ImageSetConfig Operator のフィルタリング | 予想されるバンドルバージョン |
---|---|
シナリオ 1 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.10 | カタログ内の各パッケージに対し、そのパッケージのデフォルトチャネルのヘッドバージョンに対応する 1 つのバンドル。 |
シナリオ 2 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.10 full: true | 指定されたカタログのすべてのチャネルのすべてのバンドル |
シナリオ 3 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.10 packages: - name: compliance-operator | そのパッケージのデフォルトチャネルのヘッドバージョンに対応する 1 つのバンドル |
シナリオ 4 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.10 full: true - packages: - name: elasticsearch-operator | 指定されたパッケージのすべてのチャネルのすべてのバンドル |
シナリオ 5 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator minVersion: 5.6.0 |
|
シナリオ 6 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator maxVersion: 6.0.0 |
そのパッケージの |
シナリオ 7 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator minVersion: 5.6.0 maxVersion: 6.0.0 |
そのパッケージの |
シナリオ 8 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator channels - name: stable | そのパッケージの選択されたチャネルのヘッドバンドル。 |
シナリオ 9 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.10 full: true - packages: - name: elasticsearch-operator channels: - name: 'stable-v0' | 指定されたパッケージとチャネルのすべてのバンドル。 |
シナリオ 10 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator channels - name: stable - name: stable-5.5 | そのパッケージの選択された各チャネルのヘッドバンドル。 |
シナリオ 11 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator channels - name: stable minVersion: 5.6.0 |
そのパッケージの選択されたチャネル内の、 |
シナリオ 12 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator channels - name: stable maxVersion: 6.0.0 |
そのパッケージの選択されたチャネル内の、 |
シナリオ 13 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator channels - name: stable minVersion: 5.6.0 maxVersion: 6.0.0 |
そのパッケージの選択されたチャネル内の、アップグレードグラフからの最短パスに依存しない、 |
シナリオ 14 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.14 packages: - name: aws-load-balancer-operator bundles: - name: aws-load-balancer-operator.v1.1.0 - name: 3scale-operator bundles: - name: 3scale-operator.v0.10.0-mas | 各パッケージに指定されたバンドルのみがフィルタリングに含まれます。 |
シナリオ 15 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator channels - name: stable minVersion: 5.6.0 maxVersion: 6.0.0 |
このシナリオは使用しないでください。チャネルでのフィルタリング、および |
シナリオ 16 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 packages: - name: compliance-operator channels - name: stable minVersion: 5.6.0 maxVersion: 6.0.0 |
このシナリオは使用しないでください。 |
シナリオ 17 mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.15 full: true packages: - name: compliance-operator channels - name: stable minVersion: 5.6.0 maxVersion: 6.0.0 |
このシナリオは使用しないでください。 |
3.5.11. oc-mirror プラグイン v2 の ImageSet
設定パラメーター
oc-mirror プラグイン v2 には、ミラーリングするイメージを定義するイメージセット設定ファイルが必要です。次の表に、ImageSetConfiguration
リソースで使用可能なパラメーターを示します。
minVersion
および maxVersion
プロパティーを使用して特定の Operator バージョン範囲をフィルターすると、複数のチャネルヘッドエラーが発生する可能性があります。エラーメッセージには、multiple channel heads
があることが示されます。これは、フィルターを適用すると、Operator の更新グラフが切り捨てられるためです。
OLM の要件として、すべての Operator チャネルに、1 つのエンドポイント (つまり最新バージョンの Operator) を持つ更新グラフを構成するバージョンが含まれている必要があります。フィルター範囲を適用すると、更新グラフが 2 つ以上の個別のグラフ、または複数のエンドポイントを持つグラフに変換されることがあります。
このエラーを回避するには、最新バージョンの Operator を除外しないでください。それでもエラーが発生する場合は、Operator に応じて、maxVersion
プロパティーを増やすか、minVersion
プロパティーを減らす必要があります。Operator グラフはそれぞれ異なる可能性があるため、エラーが解決するまでこれらの値を調整する必要がある場合があります。
パラメーター | 説明 | 値 |
---|---|---|
|
|
文字列の例: |
| イメージセット内の各アーカイブファイルの最大サイズ (GiB 単位)。 |
整数の例: |
|
|
ブール値のサンプル apiVersion: mirror.openshift.io/v2alpha1 kind: ImageSetConfiguration mirror: platform: channels: - name: stable-4.16 minVersion: 4.16.0 maxVersion: 4.16.0 kubeVirtContainer: true |
| イメージセットの設定。 | オブジェクト |
| イメージセットの追加のイメージ設定。 | オブジェクトの配列 以下に例を示します。 additionalImages: - name: registry.redhat.io/ubi8/ubi:latest |
| ミラーリングするイメージのタグまたはダイジェスト。 |
文字列の例: |
| ミラーリングからブロックするイメージの完全なタグ、ダイジェスト、またはパターン。 |
文字列配列の例: |
| イメージセットの Operators 設定。 | オブジェクトの配列 以下に例を示します。 operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:4.17 packages: - name: elasticsearch-operator minVersion: '2.4.0' |
| イメージセットに含める Operator カタログ。 |
文字列の例: |
|
|
ブール値。デフォルト値は |
| Operator パッケージ設定 | オブジェクトの配列 以下に例を示します。 operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:4.17 packages: - name: elasticsearch-operator minVersion: '5.2.3-31' |
| イメージセットに含める Operator パッケージ名 |
文字列の例: |
| Operator パッケージのチャネル設定。 | オブジェクト |
| イメージセットに含める、パッケージ内で一意の Operator チャネル名。 |
文字列の例: |
| Operator が存在するすべてのチャネルでミラーリングする最上位バージョンの Operator。 |
文字列の例: |
| 存在するすべてのチャネル間でミラーリングする Operator の最低バージョン。 |
文字列の例: |
| Operator が存在するすべてのチャネルでミラーリングする最上位バージョンの Operator。 |
文字列の例: |
| 存在するすべてのチャネル間でミラーリングする Operator の最低バージョン。 |
文字列の例: |
| 選択したバンドルの設定 | オブジェクトの配列 以下に例を示します。 operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:4.17 packages: - name: 3scale-operator bundles: - name: 3scale-operator.v0.10.0-mas |
| ミラーリング対象として選択されたバンドルの名前 (カタログに表示される名前)。 |
文字列の例: |
| 参照されるカタログをミラーリングするための代替名とオプションの namespace 階層。 |
文字列の例: |
| oc-mirror プラグイン v2 が生成した catalogSource カスタムリソースを完了するために使用するテンプレートのディスク上のパス。 |
文字列の例: apiVersion: operators.coreos.com/v1alpha1 kind: CatalogSource metadata: name: discarded namespace: openshift-marketplace spec: image: discarded sourceType: grpc updateStrategy: registryPoll: interval: 30m0s |
|
|
文字列の例: |
| イメージセットのプラットフォーム設定。 | オブジェクト |
| ミラーリングするプラットフォームリリースペイロードのアーキテクチャー。 | 文字列の配列例: architectures: - amd64 - arm64 - multi - ppc64le - s390x
デフォルト値は |
| イメージセットのプラットフォームチャネル設定。 | オブジェクトの配列の例: channels: - name: stable-4.12 - name: stable-4.17 |
|
|
ブール値。デフォルト値は |
| リリースチャネルの名前。 |
文字列の例: |
| ミラーリングされる参照プラットフォームの最小バージョン。 |
文字列の例: |
| ミラーリングされる参照プラットフォームの最上位バージョン。 |
文字列の例: |
| 最短パスミラーリングまたはフルレンジミラーリングを切り替えます。 |
ブール値。デフォルト値は |
| ミラーリングするプラットフォームのタイプ。 |
文字列の例: |
| OSUS グラフがイメージセットに追加され、その後ミラーに公開されるかどうかを示します。 |
ブール値。デフォルト値は |
3.5.11.1. ImageSet
設定パラメーターを削除する
oc-mirror プラグイン v2 を使用するには、ミラーレジストリーから削除するイメージを定義するイメージセット削除設定ファイルが必要です。次の表は、DeleteImageSetConfiguration
リソースで使用可能なパラメーターを示しています。
パラメーター | 説明 | 値 |
---|---|---|
|
|
文字列の例: |
| 削除するイメージセットの設定。 | オブジェクト |
| 削除イメージセットの追加イメージ設定。 | オブジェクトの配列の例: additionalImages: - name: registry.redhat.io/ubi8/ubi:latest |
| 削除するイメージのタグまたはダイジェスト。 |
文字列の例: |
| 削除イメージセットの Operator の設定。 | オブジェクトの配列の例: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:{product-version} packages: - name: elasticsearch-operator minVersion: '2.4.0' |
| 削除イメージセットに含める Operator カタログ。 |
文字列の例: |
| true の場合、完全なカタログ、Operator パッケージ、または Operator チャネルが削除されます。 |
ブール値。デフォルト値は |
| Operator パッケージ設定 | オブジェクトの配列の例: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:{product-version} packages: - name: elasticsearch-operator minVersion: '5.2.3-31' |
| 削除イメージセットに含める Operator パッケージ名。 |
文字列の例: |
| Operator パッケージのチャネル設定。 | オブジェクト |
| 削除イメージセットに含める、パッケージ内で一意の Operator チャネル名。 |
文字列の例: |
| 選択したチャネル内で削除する Operator の最大バージョン。 |
文字列の例: |
| Operator が存在する選択範囲内で削除する Operator の最小バージョン。 |
文字列の例: |
| Operator が存在するすべてのチャネルで削除する最大バージョンの Operator。 |
文字列の例: |
| Operator が存在するすべてのチャネルで削除する最小バージョンの Operator。 |
文字列の例: |
| 選択したバンドル設定 | オブジェクトの配列 同じ Operator に対してチャネルとバンドルの両方を選択することはできません。 以下に例を示します。 operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:{product-version} packages: - name: 3scale-operator bundles: - name: 3scale-operator.v0.10.0-mas |
| 削除対象として選択したバンドルの名前 (カタログに表示される名前) |
文字列の例: |
| イメージセットのプラットフォーム設定。 | オブジェクト |
| 削除するプラットフォームリリースペイロードのアーキテクチャー。 | 文字列の配列例: architectures: - amd64 - arm64 - multi - ppc64le - s390x
デフォルト値は |
| イメージセットのプラットフォームチャネル設定。 | オブジェクトの配列 以下に例を示します。 channels: - name: stable-4.12 - name: stable-4.17 |
|
|
ブール値。デフォルト値は |
| リリースチャネルの名前。 |
文字列の例: |
| 削除する参照プラットフォームの最小バージョン。 |
文字列の例: |
| 削除する参照プラットフォームの最大バージョン。 |
文字列の例: |
| 最短パスの削除と全範囲の削除を切り替えます。 |
ブール値。デフォルト値は |
| 削除するプラットフォームのタイプ |
文字列の例: |
| ミラーレジストリー上の OSUS グラフも削除するかどうかを指定します。 |
ブール値。デフォルト値は |
3.5.12. oc-mirror プラグイン v2 のコマンドリファレンス
次の表は、oc-mirror プラグイン v2 の oc mirror
サブコマンドとフラグを説明しています。
サブコマンド | 説明 |
---|---|
| サブコマンドに関するヘルプを表示します。 |
| oc-mirror バージョンを出力します。 |
| リモートレジストリーとローカルキャッシュ内のイメージを削除します。 |
フラグ | 説明 |
---|---|
|
認証ファイルの文字列パスを表示します。デフォルトは |
| イメージセット設定ファイルへのパスを指定します。 |
| コンテナーレジストリーまたはデーモンにアクセスするには HTTPS が必要であり、証明書が検証されます。 |
| イメージをミラーリングせずにアクションを出力します。 |
| oc-mirror プラグイン v2 を実行してターゲットレジストリーをロードすることで生成されたイメージセットアーカイブへのパスを指定します。 |
| ヘルプを表示します。 |
|
文字列のログレベルを表示します。サポートされる値には、info、debug、trace、error などがあります。デフォルトは |
|
oc-mirror プラグイン v2 のローカルストレージインスタンスが使用する HTTP ポートを指定します。デフォルトは |
|
ネストされたパスを制限する宛先レジストリーのネストされたパスの最大数を指定します。デフォルトは |
|
デフォルト値は |
|
指定した日付以降のすべての新しいコンテンツが含まれます (形式: |
| コンテナーレジストリーまたはデーモンにアクセスするには HTTPS が必要であり、証明書が検証されます。 |
|
デフォルト値は |
| oc-mirror プラグイン v2 のバージョンを表示します。 |
| リソースと内部アーティファクトが生成される文字列 oc-mirror プラグイン v2 ワークスペースを指定します。 |
第4章 非接続環境でのクラスターのインストール
要件に最適なインストール方法とインフラストラクチャーを選択して、非接続環境に OpenShift Container Platform クラスターをインストールできます。これには、オンプレミスのハードウェアまたは Amazon Web Services (AWS) などのクラウドホスティングサービスへの OpenShift Container Platform のインストールが含まれます。
次のセクションでは、非接続環境にクラスターをインストールする場合にサポートされているすべての方法を説明します。
特定の方法を使用してクラスターをインストールする場合のその他の要件は、ドキュメントで該当する手順のセクションにあるその他のコンテンツを必ず確認してください。
たとえば、installer-provisioned infrastructure を使用して AWS にクラスターをインストールする予定の場合は、AWS アカウントの設定 および AWS にクラスターをインストールするための準備 を参照してください。
4.1. Agent-based Installer を使用したクラスターのインストール
Agent-based Installer を使用して非接続環境にクラスターをインストールする方法の詳細は、次のページを参照してください。
4.2. Amazon Web Services にクラスターをインストールする
非接続環境で Amazon Web Services (AWS) にクラスターをインストールする方法の詳細は、次の手順を参照してください。
- installer-provisioned infrastructure: ネットワークが制限された環境での AWS へのクラスターのインストール
- user-provisioned infrastructure: ネットワークが制限された環境で user-provisioned infrastructure を使用して AWS にクラスターをインストールする
4.3. Microsoft Azure にクラスターをインストールする
非接続環境で Microsoft Azure にクラスターをインストールする方法の詳細は、次の手順を参照してください。
- installer-provisioned infrastructure: ネットワークが制限された環境で Azure にクラスターをインストールする
- user-provisioned infrastructure: ネットワークが制限された環境で user-provisioned infrastructure を使用して Azure にクラスターをインストールする
4.4. Google Cloud Platform にクラスターをインストールする
非接続環境で Google Cloud Platform (GCP) にクラスターをインストールする方法の詳細は、次の手順をご覧ください。
- installer-provisioned infrastructure: ネットワークが制限された環境で GCP にクラスターをインストールする
- user-provisioned infrastructure: ネットワークが制限された環境で user-provisioned infrastructure を使用して GCP にクラスターをインストールする
4.5. IBM Cloud にクラスターをインストールする
非接続環境で IBM Cloud® にクラスターをインストールする方法の詳細は、次の手順を参照してください。
4.6. クラスターの Nutanix へのインストール
非接続環境で Nutanix にクラスターをインストールする方法の詳細は、次の手順を参照してください。
4.7. ベアメタルクラスターのインストール
非接続環境でベアメタルクラスターをインストールする方法の詳細は、次の手順を参照してください。
4.8. IBM Z(R) または IBM(R) LinuxONE にクラスターをインストールする
非接続環境で IBM Z® または IBM® LinuxONE にクラスターをインストールする方法の詳細は、次の手順を参照してください。
4.9. クラスターの IBM Power へのインストール
非接続環境で IBM Power にクラスターをインストールする方法の詳細は、次の手順を参照してください。
4.10. OpenStack にクラスターをインストールする
非接続環境で Red Hat OpenStack Platform (RHOSP) にクラスターをインストールする方法の詳細は、次の手順を参照してください。
4.11. クラスターの vSphere へのインストール
非接続環境で VMware vSphere にクラスターをインストールする方法の詳細は、次の手順を参照してください。
- installer-provisioned infrastructure: ネットワークが制限された環境での vSphere へのクラスターのインストール
- user-provisioned infrastructure: user-provisioned infrastructure のネットワークが制限された環境での vSphere へのクラスターのインストール
第5章 非接続環境での Operator Lifecycle Manager の使用
非接続環境の OpenShift Container Platform クラスターの場合、Operator Lifecycle Manager (OLM) は、リモートレジストリーでホストされている Red Hat 提供の OperatorHub ソースにデフォルトでアクセスできません。このようなリモートソースには、完全なインターネット接続が必要であるためです。
ただし、クラスター管理者は、インターネットに完全にアクセスできるワークステーションがある場合、クラスターが非接続環境で OLM を使用できるようにすることができます。ワークステーションは、リモートソースのローカルミラーを準備するために使用され、コンテンツをミラーレジストリーにプッシュしますが、これにはリモートの OperatorHub コンテンツをプルするのに完全なインターネットアクセスが必要になります。
ミラーレジストリーは bastion ホストに配置することができます。bastion ホストには、ワークステーションと非接続クラスターの両方への接続、または完全に切断されたクラスター、またはミラーリングされたコンテンツを非接続環境に物理的に移動するためにリムーバブルメディアが必要な エアギャップ ホストへの接続が必要です。
このガイドでは、非接続環境で OLM を有効にするために必要な次のプロセスを説明します。
- OLM のデフォルトのリモート OperatorHub ソースを無効にします。
- 完全なインターネットアクセスのあるワークステーションを使用して、OperatorHub コンテンツのローカルミラーを作成し、これをミラーレジストリーにプッシュします。
- OLM を、デフォルトのリモートソースからではなくミラーレジストリーのローカルソースから Operator をインストールし、管理するように設定します。
非接続環境で OLM を有効にしたら、アクセス制限のないワークステーションを引き続き使用して、新しいバージョンの Operator のリリース時にローカルの OperatorHub ソースを継続的に更新できます。
OLM はローカルソースから Operator を管理できますが、特定の Operator が非接続環境で正常に実行されるかどうかは、Operator 自体が次の基準を満たすかどうかに依存します。
-
関連するイメージ、または Operator がそれらの機能を実行するために必要となる可能性のある他のコンテナーイメージを
ClusterServiceVersion
(CSV) オブジェクトのrelatedImages
パラメーターでリスト表示します。 - 指定されたすべてのイメージを、タグではなくダイジェスト (SHA) で参照します。
Red Hat エコシステムカタログ でソフトウェアを検索して、以下の選択肢でフィルタリングすることにより、非接続モードでの実行をサポートする Red Hat Operator のリストを見つけることができます。
タイプ | コンテナー化されたアプリケーション |
デプロイメント方法 | Operator |
インフラストラクチャー機能 | Disconnected |
5.1. 前提条件
-
cluster-admin
権限を持つユーザーとして OpenShift Container Platform クラスターにログインしている。 - IBM Z® 上の非接続環境で OLM を使用している場合は、レジストリーを配置するディレクトリーに少なくとも 12 GB を割り当てる必要があります。
5.2. デフォルトの OperatorHub カタログソースの無効化
Red Hat によって提供されるコンテンツを調達する Operator カタログおよびコミュニティープロジェクトは、OpenShift Container Platform のインストール時にデフォルトで OperatorHub に設定されます。ネットワークが制限された環境では、クラスター管理者としてデフォルトのカタログを無効にする必要があります。その後、OperatorHub をローカルカタログソースを使用するように設定できます。
手順
disableAllDefaultSources: true
をOperatorHub
オブジェクトに追加して、デフォルトカタログのソースを無効にします。$ oc patch OperatorHub cluster --type json \ -p '[{"op": "add", "path": "/spec/disableAllDefaultSources", "value": true}]'
または、Web コンソールを使用してカタログソースを管理できます。Administration → Cluster Settings → Configuration → OperatorHub ページから、Sources タブをクリックして、個別のソースを作成、更新、削除、無効化、有効化できます。
5.3. Operator カタログのミラーリング
非接続クラスターで使用するために Operator カタログをミラーリングする手順は、非接続クラスターで使用する Operator カタログのミラーリング を参照してください。
OpenShift Container Platform 4.11 の時点で、Red Hat が提供するデフォルトの Operator カタログは、ファイルベースのカタログ形式でリリースされます。OpenShift Container Platform 4.6 から 4.10 までの Red Hat が提供するデフォルトの Operator カタログは、非推奨の SQLite データベース形式でリリースされました。
opm
サブコマンド、フラグ、および SQLite データベース形式に関連する機能も非推奨となり、今後のリリースで削除されます。機能は引き続きサポートされており、非推奨の SQLite データベース形式を使用するカタログに使用する必要があります。
opm index prune
などの SQLite データベース形式を使用する opm
サブコマンドおよびフラグの多くは、ファイルベースのカタログ形式では機能しません。ファイルベースのカタログ使用の詳細は、Operator Framework パッケージ形式、カスタムカタログの管理、および oc-mirror プラグインを使用した非接続インストールのイメージのミラーリング を参照してください。
5.4. クラスターへのカタログソースの追加
カタログソースを OpenShift Container Platform クラスターに追加すると、ユーザーの Operator の検出およびインストールが可能になります。クラスター管理者は、インデックスイメージを参照する CatalogSource
オブジェクトを作成できます。OperatorHub はカタログソースを使用してユーザーインターフェイスを設定します。
または、Web コンソールを使用してカタログソースを管理できます。Administration → Cluster Settings → Configuration → OperatorHub ページから、Sources タブをクリックして、個別のソースを作成、更新、削除、無効化、有効化できます。
前提条件
- インデックスイメージをビルドしてレジストリーにプッシュしている。
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
インデックスイメージを参照する
CatalogSource
オブジェクトを作成します。oc adm catalog mirror
コマンドを使用してカタログをターゲットレジストリーにミラーリングする場合、manifests ディレクトリーに生成されるcatalogSource.yaml
ファイルを開始点としてそのまま使用することができます。仕様を以下のように変更し、これを
catalogSource.yaml
ファイルとして保存します。apiVersion: operators.coreos.com/v1alpha1 kind: CatalogSource metadata: name: my-operator-catalog 1 namespace: openshift-marketplace 2 spec: sourceType: grpc grpcPodConfig: securityContextConfig: <security_mode> 3 image: <registry>/<namespace>/redhat-operator-index:v4.17 4 displayName: My Operator Catalog publisher: <publisher_name> 5 updateStrategy: registryPoll: 6 interval: 30m
- 1
- レジストリーにアップロードする前にローカルファイルにコンテンツをミラーリングする場合は、
metadata.name
フィールドからバックスラッシュ (/
) 文字を削除し、オブジェクトの作成時に "invalid resource name" エラーを回避します。 - 2
- カタログソースを全 namespace のユーザーがグローバルに利用できるようにする場合は、
openshift-marketplace
namespace を指定します。それ以外の場合は、そのカタログの別の namespace を対象とし、その namespace のみが利用できるように指定できます。 - 3
legacy
またはrestricted
の値を指定します。フィールドが設定されていない場合、デフォルト値はlegacy
です。今後の OpenShift Container Platform リリースでは、デフォルト値がrestricted
になる予定です。restricted
権限でカタログを実行できない場合は、このフィールドを手動でlegacy
に設定することを推奨します。- 4
- インデックスイメージを指定します。イメージ名の後にタグを指定した場合 (
:v4.17
など)、カタログソース Pod はAlways
のイメージプルポリシーを使用します。これは、Pod が常にコンテナーを起動する前にイメージをプルすることを意味します。@sha256:<id>
などのダイジェストを指定した場合、イメージプルポリシーはIfNotPresent
になります。これは、イメージがノード上にまだ存在しない場合にのみ、Pod がイメージをプルすることを意味します。 - 5
- カタログを公開する名前または組織名を指定します。
- 6
- カタログソースは新規バージョンの有無を自動的にチェックし、最新の状態を維持します。
このファイルを使用して
CatalogSource
オブジェクトを作成します。$ oc apply -f catalogSource.yaml
以下のリソースが正常に作成されていることを確認します。
Pod を確認します。
$ oc get pods -n openshift-marketplace
出力例
NAME READY STATUS RESTARTS AGE my-operator-catalog-6njx6 1/1 Running 0 28s marketplace-operator-d9f549946-96sgr 1/1 Running 0 26h
カタログソースを確認します。
$ oc get catalogsource -n openshift-marketplace
出力例
NAME DISPLAY TYPE PUBLISHER AGE my-operator-catalog My Operator Catalog grpc 5s
パッケージマニフェストを確認します。
$ oc get packagemanifest -n openshift-marketplace
出力例
NAME CATALOG AGE jaeger-product My Operator Catalog 93s
OpenShift Container Platform Web コンソールで、OperatorHub ページから Operator をインストールできるようになりました。
5.5. 次のステップ
第6章 非接続環境でのクラスターの更新
6.1. 非接続環境でのクラスターの更新について
非接続環境とは、クラスターノードがインターネットにアクセスできない環境、またはポリシーやパフォーマンスの観点から更新の推奨事項とイメージリリースをローカルで管理する必要がある場合に使用する環境です。このセクションでは、OpenShift Container Platform イメージのミラーリング、OpenShift Update Service の管理、非接続環境でのクラスター更新の実行を説明します。
6.1.1. OpenShift Container Platform イメージのミラーリング
非接続環境でクラスターを更新するには、クラスター環境がターゲット更新に必要なイメージおよびリソースを持つミラーレジストリーにアクセスできる必要があります。切断されたネットワーク内の複数のクラスターのミラーリングされたイメージをホストするには、1 つのコンテナーイメージレジストリーで十分です。以下のページでは、非接続クラスターのリポジトリーにイメージをミラーリングする手順を説明します。
6.1.2. 非接続環境でのクラスターの更新の実行
以下のいずれかの手順を使用して、切断された OpenShift Container Platform クラスターを更新できます。
6.1.3. クラスターからの OpenShift Update Service のアンインストール
以下の手順を使用して、OpenShift Update Service (OSUS) のローカルコピーをクラスターからアンインストールできます。
6.2. OpenShift Container Platform イメージのミラーリング
非接続環境でクラスターを更新する前に、コンテナーイメージをミラーレジストリーにミラーリングする必要があります。接続された環境でこの手順を使用して、外部コンテンツに関する組織の制限を満たしている承認済みコンテナーイメージのみをクラスターで実行するようにすることもできます。
ミラーレジストリーは、クラスターの実行中に常に実行されている必要があります。
以下に示す手順は、ミラーレジストリーにイメージをミラーリングする大まかなワークフローです。
-
リリースイメージの取得およびプッシュに使用されるすべてのデバイスに OpenShift CLI (
oc
) をインストールします。 - レジストリープルシークレットをダウンロードし、クラスターに追加します。
oc-mirror OpenShift CLI (
oc
) プラグイン を使用する場合:- リリースイメージの取得およびプッシュに使用されるすべてのデバイスに oc-mirror プラグインをインストールします。
- ミラーリングするリリースイメージを決定する際に、使用するプラグイン用のイメージセット設定ファイルを作成します。この設定ファイルは後で編集して、プラグインがミラーリングするリリースイメージを変更できます。
- ターゲットのリリースイメージをミラーレジストリーに直接ミラーリングするかリムーバブルメディアにミラーリングしてからミラーレジストリーにミラーリングします。
- oc-mirror プラグインが生成したリソースを使用するようにクラスターを設定します。
- 必要に応じてこれらの手順を繰り返し、ミラーレジストリーを更新します。
oc adm release mirror
コマンド を使用する場合:- 使用している環境とミラーリングするリリースイメージに対応する環境変数を設定します。
- ターゲットのリリースイメージをミラーレジストリーに直接ミラーリングするかリムーバブルメディアにミラーリングしてからミラーレジストリーにミラーリングします。
- 必要に応じてこれらの手順を繰り返し、ミラーレジストリーを更新します。
oc adm release mirror
コマンドを使用する場合と比較して、oc-mirror プラグインには次の利点があります。
- コンテナーイメージ以外のコンテンツをミラーリングできます。
- 初めてイメージをミラーリングした後は、レジストリー内のイメージを簡単に更新できます。
- oc-mirror プラグインは、Quay からリリースペイロードをミラーリングする自動化された方法を提供し、非接続環境で実行されている OpenShift Update Service 用の最新のグラフデータイメージを構築します。
6.2.1. oc-mirror プラグインを使用したリソースのミラーリング
oc-mirror OpenShift CLI (oc
) プラグインを使用して、完全なまたは部分的な非接続環境でイメージをミラーレジストリーにミラーリングできます。公式の Red Hat レジストリーから必要なイメージをダウンロードするには、インターネット接続のあるシステムから oc-mirror を実行する必要があります。
詳細は、oc-mirror プラグインを使用した非接続インストールのイメージのミラーリング を参照してください。
6.2.2. oc adm release mirror コマンドを使用したイメージのミラーリング
oc adm release mirror
コマンドを使用して、イメージをミラーレジストリーにミラーリングできます。
6.2.2.1. 前提条件
Red Hat Quay など、OpenShift Container Platform クラスターをホストする場所に Docker v2-2 をサポートするコンテナーイメージレジストリーを持っている。
注記Red Hat Quay を使用する場合は、oc-mirror プラグインでバージョン 3.6 以降を使用する必要があります。Red Hat Quay のライセンスをお持ちの場合は、概念実証のため に、または Quay Operator を使用 して Red Hat Quay をデプロイする方法を記載したドキュメントを参照してください。レジストリーの選択とインストールについてさらにサポートが必要な場合は、営業担当者または Red Hat サポートにお問い合わせください。
コンテナーイメージレジストリーの既存のソリューションがない場合は、OpenShift Container Platform サブスクリプションに含まれる Red Hat OpenShift のミラーレジストリー を使用できます。Red Hat OpenShift のミラーレジストリー は、非接続インストールおよび更新で OpenShift Container Platform コンテナーイメージをミラーリングするために使用できる小規模なコンテナーレジストリーです。
6.2.2.2. ミラーホストの準備
ミラー手順を実行する前に、ホストを準備して、コンテンツを取得し、リモートの場所にプッシュできるようにする必要があります。
6.2.2.2.1. OpenShift CLI のインストール
コマンドラインインターフェイスを使用して OpenShift Container Platform と対話するために OpenShift CLI (oc
) をインストールすることができます。oc
は Linux、Windows、または macOS にインストールできます。
以前のバージョンの oc
をインストールしている場合、これを使用して OpenShift Container Platform 4.17 のすべてのコマンドを実行することはできません。新しいバージョンの oc
をダウンロードしてインストールしてください。非接続環境でのクラスターを更新する場合は、更新する予定の oc
バージョンをインストールします。
Linux への OpenShift CLI のインストール
以下の手順を使用して、OpenShift CLI (oc
) バイナリーを Linux にインストールできます。
手順
- Red Hat カスタマーポータルの OpenShift Container Platform ダウンロードページ に移動します。
- Product Variant ドロップダウンリストからアーキテクチャーを選択します。
- バージョン ドロップダウンリストから適切なバージョンを選択します。
- OpenShift v4.17 Linux Client エントリーの横にある Download Now をクリックして、ファイルを保存します。
アーカイブを展開します。
$ tar xvf <file>
oc
バイナリーを、PATH
にあるディレクトリーに配置します。PATH
を確認するには、以下のコマンドを実行します。$ echo $PATH
検証
OpenShift CLI のインストール後に、
oc
コマンドを使用して利用できます。$ oc <command>
Windows への OpenShift CLI のインストール
以下の手順を使用して、OpenShift CLI (oc
) バイナリーを Windows にインストールできます。
手順
- Red Hat カスタマーポータルの OpenShift Container Platform ダウンロードページ に移動します。
- バージョン ドロップダウンリストから適切なバージョンを選択します。
- OpenShift v4.17 Windows Client エントリーの横にある Download Now をクリックして、ファイルを保存します。
- ZIP プログラムでアーカイブを展開します。
oc
バイナリーを、PATH
にあるディレクトリーに移動します。PATH
を確認するには、コマンドプロンプトを開いて以下のコマンドを実行します。C:\> path
検証
OpenShift CLI のインストール後に、
oc
コマンドを使用して利用できます。C:\> oc <command>
macOS への OpenShift CLI のインストール
以下の手順を使用して、OpenShift CLI (oc
) バイナリーを macOS にインストールできます。
手順
- Red Hat カスタマーポータルの OpenShift Container Platform ダウンロードページ に移動します。
- バージョン ドロップダウンリストから適切なバージョンを選択します。
OpenShift v4.17 macOS Client エントリーの横にある Download Now をクリックして、ファイルを保存します。
注記macOS arm64 の場合は、OpenShift v4.17 macOS arm64 Client エントリーを選択します。
- アーカイブを展開し、解凍します。
oc
バイナリーをパスにあるディレクトリーに移動します。PATH
を確認するには、ターミナルを開き、以下のコマンドを実行します。$ echo $PATH
検証
oc
コマンドを使用してインストールを確認します。$ oc <command>
6.2.2.2.2. イメージのミラーリングを可能にする認証情報の設定
Red Hat からミラーにイメージをミラーリングできるコンテナーイメージレジストリー認証情報ファイルを作成します。
クラスターのインストール時に、このイメージレジストリー認証情報ファイルをプルシークレットとして使用しないでください。クラスターのインストール時にこのファイルを指定すると、クラスター内のすべてのマシンにミラーレジストリーへの書き込みアクセスが付与されます。
このプロセスでは、ミラーレジストリーのコンテナーイメージレジストリーへの書き込みアクセスがあり、認証情報をレジストリープルシークレットに追加する必要があります。
前提条件
- 非接続環境で使用するミラーレジストリーを設定しました。
- イメージをミラーリングするミラーレジストリー上のイメージリポジトリーの場所を特定している。
- イメージのイメージリポジトリーへのアップロードを許可するミラーレジストリーアカウントをプロビジョニングしている。
手順
インストールホストで以下の手順を実行します。
-
registry.redhat.io
プルシークレットを Red Hat OpenShift Cluster Manager からダウンロードします。 JSON 形式でプルシークレットのコピーを作成します。
$ cat ./pull-secret | jq . > <path>/<pull_secret_file_in_json> 1
- 1
- プルシークレットを保存するフォルダーへのパスおよび作成する JSON ファイルの名前を指定します。
ファイルの内容は以下の例のようになります。
{ "auths": { "cloud.openshift.com": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "quay.io": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "registry.connect.redhat.com": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" }, "registry.redhat.io": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" } } }
-
オプション: oc-mirror プラグインを使用している場合は、ファイルを
~/.docker/config.json
または$XDG_RUNTIME_DIR/containers/auth.json
として保存します。 ミラーレジストリーの base64 でエンコードされたユーザー名およびパスワードまたはトークンを生成します。
$ echo -n '<user_name>:<password>' | base64 -w0 1 BGVtbYk3ZHAtqXs=
- 1
<user_name>
および<password>
には、レジストリーに設定したユーザー名およびパスワードを指定します。
JSON ファイルを編集し、レジストリーを記述するセクションをこれに追加します。
"auths": { "<mirror_registry>": { 1 "auth": "<credentials>", 2 "email": "you@example.com" } },
ファイルは以下の例のようになります。
{ "auths": { "registry.example.com": { "auth": "BGVtbYk3ZHAtqXs=", "email": "you@example.com" }, "cloud.openshift.com": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "quay.io": { "auth": "b3BlbnNo...", "email": "you@example.com" }, "registry.connect.redhat.com": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" }, "registry.redhat.io": { "auth": "NTE3Njg5Nj...", "email": "you@example.com" } } }
6.2.2.3. ミラーレジストリーへのイメージのミラーリング
OpenShift Update Service アプリケーションによる過度のメモリー使用を回避するには、以下の手順で説明するように、リリースイメージを別のリポジトリーにミラーリングする必要があります。
前提条件
- 非接続環境で使用するミラーレジストリーを設定し、設定した証明書と認証情報にアクセスできるようになりました。
- Red Hat OpenShift Cluster Manager からプルシークレット をダウンロードし、ミラーリポジトリーへの認証を組み込むように変更している。
- 自己署名証明書を使用する場合は、証明書にサブジェクトの別名を指定しています。
手順
- Red Hat OpenShift Container Platform Update Graph visualizer および update planner を使用して、あるバージョンから別のバージョンへの更新を計画します。OpenShift Update Graph はチャネルのグラフと、現行バージョンと意図されるクラスターのバージョン間に更新パスがあることを確認する方法を提供します。
必要な環境変数を設定します。
リリースバージョンをエクスポートします。
$ export OCP_RELEASE=<release_version>
<release_version>
について、更新する OpenShift Container Platform のバージョンに対応するタグを指定します (例:4.5.4
)。ローカルレジストリー名とホストポートをエクスポートします。
$ LOCAL_REGISTRY='<local_registry_host_name>:<local_registry_host_port>'
<local_registry_host_name>
については、ミラーレジストリーのレジストリードメイン名を指定し、<local_registry_host_port>
については、コンテンツの送信に使用するポートを指定します。ローカルリポジトリー名をエクスポートします。
$ LOCAL_REPOSITORY='<local_repository_name>'
<local_repository_name>
については、ocp4/openshift4
などのレジストリーに作成するリポジトリーの名前を指定します。OpenShift Update Service を使用している場合は、追加のローカルリポジトリー名をエクスポートして、リリースイメージを含めます。
$ LOCAL_RELEASE_IMAGES_REPOSITORY='<local_release_images_repository_name>'
<local_release_images_repository_name>
については、ocp4/openshift4-release-images
などのレジストリーに作成するリポジトリーの名前を指定します。ミラーリングするリポジトリーの名前をエクスポートします。
$ PRODUCT_REPO='openshift-release-dev'
実稼働環境のリリースの場合には、
openshift-release-dev
を指定する必要があります。パスをレジストリープルシークレットにエクスポートします。
$ LOCAL_SECRET_JSON='<path_to_pull_secret>'
<path_to_pull_secret>
については、作成したミラーレジストリーのプルシークレットの絶対パスおよびファイル名を指定します。注記クラスターが
ImageContentSourcePolicy
オブジェクトを使用してリポジトリーのミラーリングを設定する場合、ミラーリングされたレジストリーにグローバルプルシークレットのみを使用できます。プロジェクトにプルシークレットを追加することはできません。リリースミラーをエクスポートします。
$ RELEASE_NAME="ocp-release"
実稼働環境のリリースは、
ocp-release
を指定する必要があります。クラスターのアーキテクチャーのタイプをエクスポートします。
$ ARCHITECTURE=<cluster_architecture> 1
- 1
x86_64
、aarch64
、s390x
、またはppc64le
など、クラスターのアーキテクチャーを指定します。
ミラーリングされたイメージをホストするためにディレクトリーへのパスをエクスポートします。
$ REMOVABLE_MEDIA_PATH=<path> 1
- 1
- 最初のスラッシュ (/) 文字を含む完全パスを指定します。
ミラーリングするイメージおよび設定マニフェストを確認します。
$ oc adm release mirror -a ${LOCAL_SECRET_JSON} --to-dir=${REMOVABLE_MEDIA_PATH}/mirror quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} --dry-run
バージョンイメージをミラーレジストリーにミラーリングします。
ミラーホストがインターネットにアクセスできない場合は、以下の操作を実行します。
- リムーバブルメディアをインターネットに接続しているシステムに接続します。
イメージおよび設定マニフェストをリムーバブルメディア上のディレクトリーにミラーリングします。
$ oc adm release mirror -a ${LOCAL_SECRET_JSON} --to-dir=${REMOVABLE_MEDIA_PATH}/mirror quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE}
注記このコマンドは、ミラーリングされたリリースイメージ署名 config map も、リムーバブルメディアに保存します。
メディアを非接続環境に移動し、イメージをローカルコンテナーレジストリーにアップロードします。
$ oc image mirror -a ${LOCAL_SECRET_JSON} --from-dir=${REMOVABLE_MEDIA_PATH}/mirror "file://openshift/release:${OCP_RELEASE}*" ${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} 1
- 1
REMOVABLE_MEDIA_PATH
の場合、イメージのミラーリング時に指定した同じパスを使用する必要があります。
-
oc
コマンドラインインターフェイス (CLI) を使用して、更新しているクラスターにログインします。 ミラーリングされたリリースイメージ署名設定マップを接続されたクラスターに適用します。
$ oc apply -f ${REMOVABLE_MEDIA_PATH}/mirror/config/<image_signature_file> 1
- 1
<image_signature_file>
について、ファイルのパスおよび名前を指定します (例:signature-sha256-81154f5c03294534.yaml
)。
OpenShift Update Service を使用している場合は、リリースイメージを別のリポジトリーにミラーリングします。
$ oc image mirror -a ${LOCAL_SECRET_JSON} ${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE} ${LOCAL_REGISTRY}/${LOCAL_RELEASE_IMAGES_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}
ローカルコンテナーレジストリーとクラスターがミラーホストに接続されている場合は、次の操作を行います。
次のコマンドを使用して、リリースイメージをローカルレジストリーに直接プッシュし、config map をクラスターに適用します。
$ oc adm release mirror -a ${LOCAL_SECRET_JSON} --from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} \ --to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} --apply-release-image-signature
注記--apply-release-image-signature
オプションが含まれる場合は、イメージ署名の検証用に設定マップを作成しません。OpenShift Update Service を使用している場合は、リリースイメージを別のリポジトリーにミラーリングします。
$ oc image mirror -a ${LOCAL_SECRET_JSON} ${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE} ${LOCAL_REGISTRY}/${LOCAL_RELEASE_IMAGES_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}
6.3. OpenShift Update Service を使用した非接続環境でのクラスターの更新
接続されたクラスターと同じように更新するには、次の手順を使用して、非接続環境で OpenShift Update Service (OSUS) をインストールおよび設定できます。
以下の手順は、OSUS を使用して非接続環境でクラスターを更新する大まかな方法を示しています。
- セキュアなレジストリーへのアクセスを設定します。
- グローバルクラスタープルシークレットを更新して、ミラーレジストリーにアクセスします。
- OSUS Operator をインストールします。
- OpenShift Update Service のグラフデータコンテナーイメージを作成します。
- OSUS アプリケーションをインストールし、環境内で OpenShift Update Service を使用するようにクラスターを設定します。
- 接続されたクラスターの場合と同様に、ドキュメントに記載されているサポートされている更新手順を実行します。
6.3.1. 非接続環境での OpenShift Update Service の使用
OpenShift Update Service (OSUS) は、OpenShift Container Platform クラスターに更新の推奨事項を提供します。Red Hat は OpenShift Update Service をパブリックにホストし、接続された環境内のクラスターは、パブリック API を介してサービスに接続して更新の推奨事項を取得できます。
ただし、非接続環境のクラスターは、これらのパブリック API にアクセスして更新情報を取得することはできません。非接続環境で同じように更新を行うには、OpenShift Update Service をインストールして設定し、非接続環境で使用できるようにします。
単一の OSUS インスタンスは、数千のクラスターに推奨事項を提供できます。レプリカ値を変更することで、OSUS を水平方向に拡張して、より多くのクラスターに対応できます。したがって、ほとんどの接続されていないユースケースでは、1 つの OSUS インスタンスで十分です。たとえば、Red Hat は、接続されたクラスター全体に対して 1 つの OSUS インスタンスだけをホストします。
更新の推奨事項を異なる環境で個別に保持したい場合は、環境ごとに 1 つの OSUS インスタンスを実行できます。たとえば、テスト環境とステージ環境が別々にある場合、バージョン A がテスト環境でまだテストされていない場合、ステージ環境のクラスターがバージョン A への更新推奨を受け取らないようにすることができます。
次のセクションでは、OSUS インスタンスをインストールし、更新の推奨事項をクラスターに提供するように設定する方法を説明します。
6.3.2. 前提条件
-
oc
コマンドツールインターフェイス (CLI) ツールがインストールされている。 - OpenShift Container Platform イメージのミラーリング で説明されているように、更新用のコンテナーイメージを使用して、環境内にコンテナーイメージレジストリーをプロビジョニングする必要があります。
6.3.3. OpenShift Update Service 向けのセキュリティー保護されたレジストリーへのアクセス設定
リリースイメージが、HTTPS X.509 証明書がカスタム認証局により署名されたレジストリーに含まれている場合は、イメージレジストリーアクセスのトラストストアの追加設定 の手順を完了し、更新サービスに以下の変更を加えます。
OpenShift Update Service Operator では、設定マップのキー名 updateservice-registry
がレジストリー CA 証明書に必要です。
更新サービス向けのイメージレジストリー CA の設定マップの例
apiVersion: v1 kind: ConfigMap metadata: name: my-registry-ca data: updateservice-registry: | 1 -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- registry-with-port.example.com..5000: | 2 -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----
6.3.4. グローバルクラスターのプルシークレットの更新
現在のプルシークレットを置き換えるか、新しいプルシークレットを追加することで、クラスターのグローバルプルシークレットを更新できます。
ユーザーがインストール中に使用したレジストリーとは別のレジストリーを使用してイメージを保存する場合は、この手順が必要です。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
オプション: 既存のプルシークレットに新しいプルシークレットを追加するには、以下の手順を実行します。
以下のコマンドを入力してプルシークレットをダウンロードします。
$ oc get secret/pull-secret -n openshift-config --template='{{index .data ".dockerconfigjson" | base64decode}}' ><pull_secret_location> 1
- 1
- プルシークレットファイルへのパスを指定します。
以下のコマンドを実行して、新しいプルシークレットを追加します。
$ oc registry login --registry="<registry>" \ 1 --auth-basic="<username>:<password>" \ 2 --to=<pull_secret_location> 3
または、プルシークレットファイルを手動で更新することもできます。
以下のコマンドを実行して、クラスターのグローバルプルシークレットを更新します。
$ oc set data secret/pull-secret -n openshift-config --from-file=.dockerconfigjson=<pull_secret_location> 1
- 1
- 新規プルシークレットファイルへのパスを指定します。
この更新はすべてのノードにロールアウトされます。これには、クラスターのサイズに応じて多少時間がかかる場合があります。
注記OpenShift Container Platform 4.7.4 の時点で、グローバルプルシークレットへの変更によってノードドレインまたは再起動がトリガーされなくなりました。
6.3.5. OpenShift Update Service のインストール
OpenShift Update Service をインストールするには、まず OpenShift Container Platform Web コンソールまたは CLI を使用して OpenShift Update Service Operator をインストールする必要があります。
非接続環境 (非接続クラスターとして知られる) にインストールされているクラスターの場合には、デフォルトで Operator Lifecycle Manager はリモートレジストリーでホストされる Red Hat が提供する OperatorHub ソースにアクセスできません。それらのリモートソースには完全なインターネット接続が必要であるためです。詳細は、非接続環境での Operator Lifecycle Manager の使用 を参照してください。
6.3.5.1. Web コンソールを使用した OpenShift Update Service Operator のインストール
Web コンソールを使用して、OpenShift Update Service Operator をインストールできます。
手順
Web コンソールで Operators → OperatorHub をクリックします。
注記Update Service
と Filter by keyword… フィールドに入力し、素早く Operator を見つけます。利用可能な Operator のリストから OpenShift Update Service を選択し、Install をクリックします。
- Update channel を選択します。
- Version を選択します。
- A specific namespace on the cluster が Installation Mode で選択します。
-
Installed Namespace の namespace を選択するか、推奨される namespace
openshift-update-service
を受け入れます。 Update approval strategy を選択します。
- Automatic ストラテジーにより、Operator Lifecycle Manager (OLM) は新規バージョンが利用可能になると Operator を自動的に更新できます。
- Manual ストラテジーには、クラスター管理者が Operator の更新を承認する必要があります。
- Install をクリックします。
- Operators → Installed Operators に移動し、OpenShift Update Service Operator がインストールされていることを確認します。
- OpenShift Update Service が選択した namespace に、Status が Succeeded でリストされていることを確認します。
6.3.5.2. CLI を使用した OpenShift Update Service Operator のインストール
OpenShift CLI (oc
) を使用して、OpenShift Update Service Operator をインストールできます。
手順
OpenShift Update Service Operator の namespace を作成します。
OpenShift Update Service Operator の
namespace
オブジェクト YAML ファイル (update-service-namespace.yaml
など) を作成します。apiVersion: v1 kind: Namespace metadata: name: openshift-update-service annotations: openshift.io/node-selector: "" labels: openshift.io/cluster-monitoring: "true" 1
- 1
openshift.io/cluster-monitoring
ラベルを設定して、k この namespace で Operator が推奨するクラスターのモニタリングを有効にします。
namespace を作成します。
$ oc create -f <filename>.yaml
以下に例を示します。
$ oc create -f update-service-namespace.yaml
以下のオブジェクトを作成して OpenShift Update Service Operator をインストールします。
OperatorGroup
オブジェクト YAML ファイルを作成します (例:update-service-operator-group.yaml
)。apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: update-service-operator-group namespace: openshift-update-service spec: targetNamespaces: - openshift-update-service
OperatorGroup
オブジェクトを作成します。$ oc -n openshift-update-service create -f <filename>.yaml
以下に例を示します。
$ oc -n openshift-update-service create -f update-service-operator-group.yaml
Subscription
オブジェクト YAML ファイルを作成します (例:update-service-subscription.yaml
)。Subscription の例
apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: update-service-subscription namespace: openshift-update-service spec: channel: v1 installPlanApproval: "Automatic" source: "redhat-operators" 1 sourceNamespace: "openshift-marketplace" name: "cincinnati-operator"
- 1
- Operator を提供するカタログソースの名前を指定します。カスタム Operator Lifecycle Manager (OLM) を使用しないクラスターの場合には、
redhat-operators
を指定します。OpenShift Container Platform クラスターが非接続環境にインストールされている場合、Operator Lifecycle Manager (OLM) を設定したときに作成されたCatalogSource
オブジェクトの名前を指定します。
Subscription
オブジェクトを作成します。$ oc create -f <filename>.yaml
以下に例を示します。
$ oc -n openshift-update-service create -f update-service-subscription.yaml
OpenShift Update Service Operator は
openshift-update-service
namespace にインストールされ、openshift-update-service
namespace をターゲットにします。
Operator のインストールを確認します。
$ oc -n openshift-update-service get clusterserviceversions
出力例
NAME DISPLAY VERSION REPLACES PHASE update-service-operator.v4.6.0 OpenShift Update Service 4.6.0 Succeeded ...
OpenShift Update Service Operator が記載されている場合には、インストールが成功しています。バージョン番号は表示されているものと異なる場合があります。
6.3.6. OpenShift Update Service グラフデータコンテナーイメージの作成
OpenShift Update Service には、OpenShift Update Service がチャネルメンバーシップに関する情報を取得し、更新エッジをブロックするグラフデータコンテナーイメージが必要です。通常、グラフデータは更新グラフデータリポジトリーから直接取得します。インターネット接続が利用できない場合には、グラフデータを OpenShift Update Service で利用できるようにする別の方法として init コンテナーからこの情報を読み込むことができます。init コンテナーのロールとして、グラフデータのローカルコピーを提供し、Pod の初期化時に init コンテナーはデータをサービスがアクセスできるボリュームにコピーすることが挙げられます。
oc-mirror OpenShift CLI (oc
) プラグインは、ミラーリングするリリースイメージに加えて、このグラフデータコンテナーイメージを作成します。oc-mirror プラグインを使用してリリースイメージをミラーリングした場合は、この手順を省略できます。
手順
以下を含む Dockerfile (
./Dockerfile
など) を作成します。FROM registry.access.redhat.com/ubi9/ubi:latest RUN curl -L -o cincinnati-graph-data.tar.gz https://api.openshift.com/api/upgrades_info/graph-data RUN mkdir -p /var/lib/cincinnati-graph-data && tar xvzf cincinnati-graph-data.tar.gz -C /var/lib/cincinnati-graph-data/ --no-overwrite-dir --no-same-owner CMD ["/bin/bash", "-c" ,"exec cp -rp /var/lib/cincinnati-graph-data/* /var/lib/cincinnati/graph-data"]
上記の手順で作成した docker ファイルを使用して、グラフデータコンテナーイメージ (例:
registry.example.com/openshift/graph-data:latest
) を構築します。$ podman build -f ./Dockerfile -t registry.example.com/openshift/graph-data:latest
前の手順で作成したグラフデータコンテナーイメージを、OpenShift Update Service (例:
registry.example.com/openshift/graph-data:latest
) からアクセスできるリポジトリーにプッシュします。$ podman push registry.example.com/openshift/graph-data:latest
注記非接続環境でグラフデータイメージをレジストリーにプッシュするには、前の手順で作成したグラフデータコンテナーイメージを、OpenShift Update Service からアクセス可能なリポジトリーにコピーします。利用可能なオプションは、
oc image mirror --help
を実行します。
6.3.7. OpenShift Update Service アプリケーションの作成
OpenShift Container Platform Web コンソールまたは CLI を使用し、OpenShift Update Service アプリケーションを作成できます。
6.3.7.1. Web コンソールを使用した OpenShift Update Service アプリケーションの作成
OpenShift Container Platform Web コンソールを使用して、OpenShift Update Service Operator で OpenShift Update Service アプリケーションを作成できます。
前提条件
- OpenShift Update Service Operator がインストールされている。
- OpenShift Update Service のグラフデータコンテナーイメージを作成して、OpenShift Update Service がアクセスできるリポジトリーにプッシュしている。
- 現在のリリースと更新ターゲットリリースは、非接続環境のレジストリーにミラーリングされています。
手順
- Web コンソールで Operators → Installed Operators をクリックします。
- インストールされた Operator のリストから OpenShift Update Service を選択します。
- Update Service タブをクリックします。
- Create UpdateService をクリックします。
-
service
など、Name フィールドに名前を入力します。 -
Graph Data Image フィールドに「OpenShift Update Service グラフデータコンテナーイメージの作成」で作成した graph-data コンテナーイメージにローカルの pullspec を入力します (例:
registry.example.com/openshift/graph-data:latest
)。 -
Releases フィールドに、「OpenShift Container Platform イメージリポジトリーのミラーリング」でリリースイメージを含むように作成したレジストリーとリポジトリー (例:
registry.example.com/ocp4/openshift4-release-images
) を入力します。 -
Replicas フィールドに
2
と入力します。 - Create をクリックして OpenShift Update Service アプリケーションを作成します。
OpenShift Update Service アプリケーションを検証します。
- Update Service タブの UpdateServices リストから、作成した Update Service アプリケーションをクリックします。
- Resources タブをクリックします。
- 各アプリケーションリソースのステータスが Created であることを確認します。
6.3.7.2. CLI を使用した OpenShift Update Service アプリケーションの作成
OpenShift CLI (oc
) を使用して、OpenShift Update Service アプリケーションを作成できます。
前提条件
- OpenShift Update Service Operator がインストールされている。
- OpenShift Update Service のグラフデータコンテナーイメージを作成して、OpenShift Update Service がアクセスできるリポジトリーにプッシュしている。
- 現在のリリースと更新ターゲットリリースは、非接続環境のレジストリーにミラーリングされています。
手順
OpenShift Update Service ターゲット namespace を設定します (例:
openshift-update-service
)。$ NAMESPACE=openshift-update-service
namespace は Operator グループの
targetNamespaces
値と一致する必要があります。OpenShift Update Service アプリケーションの名前 (例:
service
) を設定します。$ NAME=service
「OpenShift Container Platform イメージリポジトリーのミラーリング」と同じ方法で、リリースイメージのレジストリーおよびリポジトリーを設定します (例:
registry.example.com/ocp4/openshift4-release-images
)。$ RELEASE_IMAGES=registry.example.com/ocp4/openshift4-release-images
「OpenShift Update Service グラフデータコンテナーイメージの作成」で作成したグラフデータコンテナーイメージに、ローカルの pullspec を入力します (例:
registry.example.com/openshift/graph-data:latest
)。$ GRAPH_DATA_IMAGE=registry.example.com/openshift/graph-data:latest
OpenShift Update Service アプリケーションオブジェクトを作成します。
$ oc -n "${NAMESPACE}" create -f - <<EOF apiVersion: updateservice.operator.openshift.io/v1 kind: UpdateService metadata: name: ${NAME} spec: replicas: 2 releases: ${RELEASE_IMAGES} graphDataImage: ${GRAPH_DATA_IMAGE} EOF
OpenShift Update Service アプリケーションを検証します。
以下のコマンドを使用してポリシーエンジンルートを取得します。
$ while sleep 1; do POLICY_ENGINE_GRAPH_URI="$(oc -n "${NAMESPACE}" get -o jsonpath='{.status.policyEngineURI}/api/upgrades_info/v1/graph{"\n"}' updateservice "${NAME}")"; SCHEME="${POLICY_ENGINE_GRAPH_URI%%:*}"; if test "${SCHEME}" = http -o "${SCHEME}" = https; then break; fi; done
コマンドが成功するまでポーリングが必要になる場合があります。
ポリシーエンジンからグラフを取得します。
チャネル
に有効なバージョンを指定してください。たとえば、OpenShift Container Platform 4.17 で実行している場合は、stable-4.17
を使用します。$ while sleep 10; do HTTP_CODE="$(curl --header Accept:application/json --output /dev/stderr --write-out "%{http_code}" "${POLICY_ENGINE_GRAPH_URI}?channel=stable-4.6")"; if test "${HTTP_CODE}" -eq 200; then break; fi; echo "${HTTP_CODE}"; done
これにより、グラフ要求が成功するまでポーリングされます。ただし、ミラーリングしたリリースイメージによっては、生成されるグラフが空白の場合があります。
ポリシーエンジンのルート名は、RFC-1123 に基づき、63 文字以上を指定できません。host must conform to DNS 1123 naming convention and must be no more than 63 characters
が原因で、ReconcileCompleted
のステータスが false
、理由が CreateRouteFailed
となっている場合には、更新サービスをもう少し短い名前で作成してみてください。
6.3.8. Cluster Version Operator (CVO) の設定
OpenShift Update Service Operator をインストールして、OpenShift Update Service アプリケーションを作成した後に、Cluster Version Operator (CVO) を更新して、環境にインストールされている OpenShift Update Service からグラフデータを取得できるようになります。
前提条件
- OpenShift Update Service Operator がインストールされている。
- OpenShift Update Service のグラフデータコンテナーイメージを作成して、OpenShift Update Service がアクセスできるリポジトリーにプッシュしている。
- 現在のリリースと更新ターゲットリリースは、非接続環境のレジストリーにミラーリングされています。
- OpenShift Update Service アプリケーションが作成されている。
手順
OpenShift Update Service ターゲット namespace を設定します (例:
openshift-update-service
)。$ NAMESPACE=openshift-update-service
OpenShift Update Service アプリケーションの名前 (例:
service
) を設定します。$ NAME=service
ポリシーエンジンルートを取得します。
$ POLICY_ENGINE_GRAPH_URI="$(oc -n "${NAMESPACE}" get -o jsonpath='{.status.policyEngineURI}/api/upgrades_info/v1/graph{"\n"}' updateservice "${NAME}")"
プルグラフデータのパッチを設定します。
$ PATCH="{\"spec\":{\"upstream\":\"${POLICY_ENGINE_GRAPH_URI}\"}}"
CVO にパッチを適用し、環境で OpenShift Update Service を使用します。
$ oc patch clusterversion version -p $PATCH --type merge
クラスター全体のプロキシーの設定 を参照して、更新サーバーを信頼するように CA を設定してください。
6.3.9. 次のステップ
クラスターを更新する前に、次の条件が満たされていることを確認してください。
- Cluster Version Operator (CVO) が、インストールされた OpenShift Update Service アプリケーションを使用するように設定されている。
新しいリリースのリリースイメージ署名 config map がクラスターに適用されている。
注記Cluster Version Operator (CVO) は、リリースイメージ署名が期待される結果と一致することを検証し、リリースイメージが変更されていないかを確認するためにリリースイメージ署名を使用します。
- 現在のリリースと更新ターゲットリリースのイメージは、非接続環境のレジストリーにミラーリングされている。
- 最近のグラフデータコンテナーイメージがレジストリーにミラーリングされている。
最新バージョンの OpenShift Update Service Operator がインストールされている。
注記OpenShift Update Service Operator を最近インストールまたは更新していない場合は、さらに新しいバージョンが利用できる可能性があります。非接続環境で OLM カタログを更新する方法の詳細は、非接続環境での Operator Lifecycle Manager の使用 を参照してください。
インストールされた OpenShift Update Service とローカルミラーレジストリーを使用するようにクラスターを設定したら、次のいずれかの更新方法を使用できます。
6.4. OpenShift Update Service を使用しない非接続環境でのクラスターの更新
以下の手順を使用して、OpenShift Update Service にアクセスせずに非接続環境でクラスターを更新します。
6.4.1. 前提条件
-
oc
コマンドツールインターフェイス (CLI) ツールがインストールされている。 - OpenShift Container Platform イメージのミラーリング で説明されているように、更新用のコンテナーイメージを使用してローカルのコンテナーイメージレジストリーをプロビジョニングしている。
-
admin
権限を持つユーザーとしてクラスターにアクセスできる。RBAC の使用によるパーミッションの定義および適用 を参照してください。 - 更新が失敗し、クラスターを以前の状態に復元する 必要がある場合に備えて、最新の etcd バックアップ を用意している。
- Operator Lifecycle Manager (OLM) を通じて以前にインストールされたすべての Operator を、ターゲットリリースと互換性のあるバージョンに更新している。Operator を更新することで、デフォルトの OperatorHub カタログが、クラスターの更新時に現行のマイナーバージョンから次のマイナーバージョンに切り替わる際、確実に有効な更新パスがあるようにします。インストール済み Operator の更新 を参照し、互換性を確認する方法の詳細を確認して、インストール済みの Operator を必要に応じて更新してください。
- すべてのマシン設定プール (MCP) が実行中であり、一時停止していないことを確認する。一時停止した MCP に関連付けられたノードは、更新プロセス中にスキップされます。カナリアロールアウト更新ストラテジーを実行している場合は、MCP を一時停止できる。
- クラスターが手動で維持された認証情報を使用している場合は、新しいリリース用にクラウドプロバイダーリソースを更新します。これがクラスターの要件かどうかを判断する方法などの詳細は、手動で維持された認証情報でクラスターを更新する準備 を参照してください。
-
Operator を実行している場合、または Pod 中断バジェットを使用してアプリケーションを設定している場合は、更新プロセス中に中断が発生する可能性があります。
PodDisruptionBudget で minAvailable
が 1 に設定されている場合、削除
プロセスをブロックする可能性がある保留中のマシン設定を適用するためにノードがドレインされます。複数のノードが再起動された場合に、すべての Pod が 1 つのノードでのみ実行される可能性があり、PodDisruptionBudget
フィールドはノードのドレインを防ぐことができます。
Operator を実行している場合、または Pod 中断バジェットを使用してアプリケーションを設定している場合は、更新プロセス中に中断が発生する可能性があります。PodDisruptionBudget で minAvailable
が 1 に設定されている場合、削除
プロセスをブロックする可能性がある保留中のマシン設定を適用するためにノードがドレインされます。複数のノードが再起動された場合に、すべての Pod が 1 つのノードでのみ実行される可能性があり、PodDisruptionBudget
フィールドはノードのドレインを防ぐことができます。
6.4.2. MachineHealthCheck リソースの一時停止
更新プロセスで、クラスター内のノードが一時的に利用できなくなる可能性があります。ワーカーノードの場合、マシンのヘルスチェックにより、このようなノードは正常ではないと識別され、それらが再起動される場合があります。このようなノードの再起動を回避するには、クラスターを更新する前にすべての MachineHealthCheck
リソースを一時停止します。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。
手順
一時停止する利用可能なすべての
MachineHealthCheck
リソースをリスト表示するには、以下のコマンドを実行します。$ oc get machinehealthcheck -n openshift-machine-api
マシンヘルスチェックを一時停止するには、
cluster.x-k8s.io/paused=""
アノテーションをMachineHealthCheck
リソースに追加します。以下のコマンドを実行します。$ oc -n openshift-machine-api annotate mhc <mhc-name> cluster.x-k8s.io/paused=""
アノテーション付きの
MachineHealthCheck
リソースは以下の YAML ファイルのようになります。apiVersion: machine.openshift.io/v1beta1 kind: MachineHealthCheck metadata: name: example namespace: openshift-machine-api annotations: cluster.x-k8s.io/paused: "" spec: selector: matchLabels: role: worker unhealthyConditions: - type: "Ready" status: "Unknown" timeout: "300s" - type: "Ready" status: "False" timeout: "300s" maxUnhealthy: "40%" status: currentHealthy: 5 expectedMachines: 5
重要クラスターの更新後にマシンヘルスチェックを再開します。チェックを再開するには、以下のコマンドを実行して
MachineHealthCheck
リソースから pause アノテーションを削除します。$ oc -n openshift-machine-api annotate mhc <mhc-name> cluster.x-k8s.io/paused-
6.4.3. リリースイメージダイジェストの取得
--to-image
オプションを指定して oc adm upgrade
コマンドを使用することで非接続環境でクラスターを更新する場合、ターゲットリリースイメージに対応する sha256 ダイジェストを参照する必要があります。
手順
インターネットに接続されているデバイスで、以下のコマンドを実行します。
$ oc adm release info -o 'jsonpath={.digest}{"\n"}' quay.io/openshift-release-dev/ocp-release:${OCP_RELEASE_VERSION}-${ARCHITECTURE}
{OCP_RELEASE_VERSION}
では、更新する OpenShift Container Platform のバージョン (例:4.10.16
) を指定します。{ARCHITECTURE}
では、クラスターアーキテクチャー (例:x86_64
、aarch64
、s390x
、ppc64le
) を指定します。出力例
sha256:a8bfba3b6dddd1a2fbbead7dac65fe4fb8335089e4e7cae327f3bad334add31d
- クラスターの更新時に使用する sha256 ダイジェストをコピーします。
6.4.4. 切断されたクラスターの更新
切断されたクラスターを、リリースイメージをダウンロードした OpenShift Container Platform バージョンに更新します。
ローカルの OpenShift Update Service がある場合は、この手順ではなく、接続された Web コンソールまたは CLI の手順を使用して更新できます。
前提条件
- 新規リリースのイメージをレジストリーに対してミラーリングしている。
新規リリースのリリースイメージ署名 ConfigMap をクラスターに適用している。
注記リリースイメージ署名 config map を使用すると、Cluster Version Operator (CVO) は、実際のイメージ署名が想定された署名と一致するか検証し、リリースイメージの整合性を確保できます。
- ターゲットリリースイメージの sha256 ダイジェストを取得している。
-
OpenShift CLI (
oc
) がインストールされている。 -
すべての
MachineHealthCheck
リソースを一時停止している。
手順
クラスターを更新します。
$ oc adm upgrade --allow-explicit-upgrade --to-image <defined_registry>/<defined_repository>@<digest>
ここでは、以下のようになります。
<defined_registry>
- イメージのミラーリング先であるミラーレジストリーの名前を指定します。
<defined_repository>
- ミラーレジストリーで使用するイメージリポジトリーの名前を指定します。
<digest>
-
ターゲットリリースイメージの sha256 ダイジェストを指定します (例:
sha256:81154f5c03294534e1eaf0319bef7a601134f891689ccede5d705ef659aa8c92
)。
注記- ミラーレジストリーとリポジトリー名の定義を確認するには、「OpenShift Container Platform イメージのミラーリング」を参照してください。
-
ImageContentSourcePolicy
またはImageDigestMirrorSet
を使用した場合は、定義した名前の代わりに標準的なレジストリー名とリポジトリー名を使用できます。標準的なレジストリー名はquay.io
、標準的なリポジトリー名はopenshift-release-dev/ocp-release
です。 -
ImageContentSourcePolicy
オブジェクトを持つクラスターのグローバルプルシークレットのみを設定できます。プロジェクトにプルシークレットを追加することはできません。
6.4.5. イメージレジストリーリポジトリーのミラーリングについて
コンテナーレジストリーリポジトリーのミラーリングを設定すると、次のタスクを実行できます。
- ソースイメージのレジストリーのリポジトリーからイメージをプルする要求をリダイレクトするように OpenShift Container Platform クラスターを設定し、これをミラーリングされたイメージレジストリーのリポジトリーで解決できるようにします。
- 各ターゲットリポジトリーに対して複数のミラーリングされたリポジトリーを特定し、1 つのミラーがダウンした場合に別のミラーを使用できるようにします。
OpenShift Container Platform のリポジトリーミラーリングには、以下の属性が含まれます。
- イメージプルには、レジストリーのダウンタイムに対する回復性があります。
- 非接続環境のクラスターは、quay.io などの重要な場所からイメージをプルし、会社のファイアウォールの背後にあるレジストリーに要求されたイメージを提供することができます。
- イメージのプル要求時にレジストリーへの接続が特定の順序で試行され、通常は永続レジストリーが最後に試行されます。
-
入力したミラー情報は、OpenShift Container Platform クラスターの全ノードの
/etc/containers/registries.conf
ファイルに追加されます。 - ノードがソースリポジトリーからイメージの要求を行うと、要求されたコンテンツを見つけるまで、ミラーリングされた各リポジトリーに対する接続を順番に試行します。すべてのミラーで障害が発生した場合、クラスターはソースリポジトリーに対して試行します。成功すると、イメージはノードにプルされます。
リポジトリーミラーリングのセットアップは次の方法で実行できます。
OpenShift Container Platform のインストール時:
OpenShift Container Platform に必要なコンテナーイメージをプルし、それらのイメージを会社のファイアウォールの背後に配置することで、非接続環境にあるデータセンターに OpenShift Container Platform をインストールできます。
OpenShift Container Platform の新規インストール後:
OpenShift Container Platform のインストール中にミラーリングを設定しなかった場合は、以下のカスタムリソース (CR) オブジェクトのいずれかを使用して、インストール後に設定できます。
-
ImageDigestMirrorSet
(IDMS)。このオブジェクトを使用すると、ダイジェスト仕様を使用して、ミラーリングされたレジストリーからイメージを取得できます。IDMS CR を使用すると、イメージのプルが失敗した場合に、ソースレジストリーからのプルの継続的な試行を許可または停止するフォールバックポリシーを設定できます。 -
ImageTagMirrorSet
(ITMS)。このオブジェクトを使用すると、イメージタグを使用して、ミラーリングされたレジストリーからイメージをプルできます。ITMS CR を使用すると、イメージのプルが失敗した場合に、ソースレジストリーからのプルの継続的な試行を許可または停止するフォールバックポリシーを設定できます。 -
ImageContentSourcePolicy
(ICSP)。このオブジェクトを使用すると、ダイジェスト仕様を使用して、ミラーリングされたレジストリーからイメージを取得できます。ミラーが機能しない場合、ICSP CR は必ずソースレジストリーにフォールバックします。
重要ImageContentSourcePolicy
(ICSP) オブジェクトを使用してリポジトリーミラーリングを設定することは、非推奨の機能です。非推奨の機能は依然として OpenShift Container Platform に含まれており、引き続きサポートされますが、本製品の今後のリリースで削除されるため、新規デプロイメントでの使用は推奨されません。ImageContentSourcePolicy
オブジェクトの作成に使用した既存の YAML ファイルがある場合は、oc adm migrate icsp
コマンドを使用して、それらのファイルをImageDigestMirrorSet
YAML ファイルに変換できます。詳細は、次のセクションの「イメージレジストリーリポジトリーミラーリング用の ImageContentSourcePolicy (ICSP) ファイルの変換」を参照してください。-
これらのカスタムリソースオブジェクトはそれぞれ、次の情報を識別します。
- ミラーリングするコンテナーイメージリポジトリーのソース
- ソースリポジトリーから要求されたコンテンツを提供する各ミラーリポジトリーの個別のエントリー。
新しいクラスターの場合は、必要に応じて IDMS、ITMS、および ICSP CR オブジェクトを使用できます。ただし、IDMS と ITMS の使用を推奨します。
クラスターをアップグレードした場合、既存の ICSP オブジェクトは安定を維持し、IDMS オブジェクトと ICSP オブジェクトの両方がサポートされるようになります。ICSP オブジェクトを使用するワークロードは、引き続き期待どおりに機能します。一方、IDMS CR で導入されたフォールバックポリシーを利用する場合は、oc adm migrate icsp
コマンドを使用して、現在のワークロードを IDMS オブジェクトに移行できます。これについては、後述の イメージレジストリーリポジトリーミラーリング用の ImageContentSourcePolicy (ICSP) ファイルの変換 セクションで説明しています。IDMS オブジェクトへの移行に、クラスターの再起動は必要ありません。
クラスターで ImageDigestMirrorSet
、ImageTagMirrorSet
、または ImageContentSourcePolicy
オブジェクトを使用してリポジトリーミラーリングを設定する場合、ミラーリングされたレジストリーにはグローバルプルシークレットのみを使用できます。プロジェクトにプルシークレットを追加することはできません。
6.4.5.1. イメージレジストリーのリポジトリーミラーリングの設定
インストール後のミラー設定カスタムリソース (CR) を作成して、ソースイメージレジストリーからミラーリングされたイメージレジストリーにイメージプル要求をリダイレクトできます。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
ミラーリングされたリポジトリーを設定します。以下のいずれかを実行します。
- Repository Mirroring in Red Hat Quay で説明されているように、Red Hat Quay でミラーリングされたリポジトリーを設定します。Red Hat Quay を使用すると、あるリポジトリーから別のリポジトリーにイメージをコピーでき、これらのリポジトリーを一定期間繰り返し自動的に同期することもできます。
skopeo
などのツールを使用して、ソースリポジトリーからミラーリングされたリポジトリーにイメージを手動でコピーします。たとえば、Red Hat Enterprise Linux (RHEL 7 または RHEL 8) システムに skopeo RPM パッケージをインストールした後、以下の例に示すように
skopeo
コマンドを使用します。$ skopeo copy --all \ docker://registry.access.redhat.com/ubi9/ubi-minimal:latest@sha256:5cf... \ docker://example.io/example/ubi-minimal
この例では、
example.io
いう名前のコンテナーイメージレジストリーとexample
という名前のイメージリポジトリーがあり、そこにregistry.access.redhat.com
からubi9/ubi-minimal
イメージをコピーします。ミラーリングされたレジストリーを作成した後、ソースリポジトリーに対する要求をミラーリングされたリポジトリーにリダイレクトするように OpenShift Container Platform クラスターを構成できます。
次の例のいずれかを使用して、インストール後のミラー設定 CR を作成します。
必要に応じて
ImageDigestMirrorSet
またはImageTagMirrorSet
CR を作成し、ソースとミラーを独自のレジストリーとリポジトリーのペアとイメージに置き換えます。apiVersion: config.openshift.io/v1 1 kind: ImageDigestMirrorSet 2 metadata: name: ubi9repo spec: imageDigestMirrors: 3 - mirrors: - example.io/example/ubi-minimal 4 - example.com/example/ubi-minimal 5 source: registry.access.redhat.com/ubi9/ubi-minimal 6 mirrorSourcePolicy: AllowContactingSource 7 - mirrors: - mirror.example.com/redhat source: registry.example.com/redhat 8 mirrorSourcePolicy: AllowContactingSource - mirrors: - mirror.example.com source: registry.example.com 9 mirrorSourcePolicy: AllowContactingSource - mirrors: - mirror.example.net/image source: registry.example.com/example/myimage 10 mirrorSourcePolicy: AllowContactingSource - mirrors: - mirror.example.net source: registry.example.com/example 11 mirrorSourcePolicy: AllowContactingSource - mirrors: - mirror.example.net/registry-example-com source: registry.example.com 12 mirrorSourcePolicy: AllowContactingSource
- 1
- この CR で使用する API を示します。これは
config.openshift.io/v1
である必要があります。 - 2
- プルタイプに応じてオブジェクトの種類を示します。
-
ImageDigestMirrorSet
: ダイジェスト参照イメージをプルします。 -
ImageTagMirrorSet
: タグ参照イメージをプルします。
-
- 3
- 次のいずれかのイメージプルメソッドのタイプを示します。
-
imageDigestMirrors
:ImageDigestMirrorSet
CR に使用します。 -
imageTagMirrors
:ImageTagMirrorSet
CR に使用します。
-
- 4
- ミラーリングされたイメージのレジストリーとリポジトリーの名前を示します。
- 5
- オプション: 各ターゲットリポジトリーのセカンダリーミラーリポジトリーを示します。1 つのミラーがダウンすると、ターゲットリポジトリーはセカンダリーミラーを使用できます。
- 6
- レジストリーとリポジトリーソースを示します。これは、イメージプル仕様で参照されるリポジトリーです。
- 7
- オプション: イメージのプルが失敗した場合のフォールバックポリシーを示します。
-
AllowContactingSource
: ソースリポジトリーからのイメージのプルの継続的な試行を許可します。これはデフォルトになります。 -
NeverContactSource
: ソースリポジトリーからのイメージのプルの継続的な試行を防ぎます。
-
- 8
- オプション: レジストリー内の namespace を示します。これにより、その namespace で任意のイメージを使用できます。レジストリードメインをソースとして使用する場合、オブジェクトはレジストリーからすべてのリポジトリーに適用されます。
- 9
- オプション: レジストリーを示し、そのレジストリー内の任意のイメージを使用できるようにします。レジストリー名を指定すると、ソースレジストリーからミラーレジストリーまでのすべてのリポジトリーにオブジェクトが適用されます。
- 10
- イメージ
registry.example.com/example/myimage@sha256:…
をミラーmirror.example.net/image@sha256:..
からプルします。 - 11
- ミラー
mirror.example.net/image@sha256:…
からソースレジストリー namespace のイメージregistry.example.com/example/image@sha256:…
をプルします。 - 12
- ミラーレジストリー
example.net/registry-example-com/myimage@sha256:…
からイメージregistry.example.com/myimage@sha256
をプルします。
ImageContentSourcePolicy
カスタムリソースを作成し、ソースとミラーを独自のレジストリーとリポジトリーのペアとイメージに置き換えます。apiVersion: operator.openshift.io/v1alpha1 kind: ImageContentSourcePolicy metadata: name: mirror-ocp spec: repositoryDigestMirrors: - mirrors: - mirror.registry.com:443/ocp/release 1 source: quay.io/openshift-release-dev/ocp-release 2 - mirrors: - mirror.registry.com:443/ocp/release source: quay.io/openshift-release-dev/ocp-v4.0-art-dev
新規オブジェクトを作成します。
$ oc create -f registryrepomirror.yaml
オブジェクトの作成後、Machine Config Operator (MCO) は
ImageTagMirrorSet
オブジェクトのみのノードをドレインします。MCO は、ImageDigestMirrorSet
オブジェクトとImageContentSourcePolicy
オブジェクトのノードをドレインしません。ミラーリングされた設定が適用されていることを確認するには、ノードのいずれかで以下を実行します。
ノードの一覧を表示します。
$ oc get node
出力例
NAME STATUS ROLES AGE VERSION ip-10-0-137-44.ec2.internal Ready worker 7m v1.30.3 ip-10-0-138-148.ec2.internal Ready master 11m v1.30.3 ip-10-0-139-122.ec2.internal Ready master 11m v1.30.3 ip-10-0-147-35.ec2.internal Ready worker 7m v1.30.3 ip-10-0-153-12.ec2.internal Ready worker 7m v1.30.3 ip-10-0-154-10.ec2.internal Ready master 11m v1.30.3
デバッグプロセスを開始し、ノードにアクセスします。
$ oc debug node/ip-10-0-147-35.ec2.internal
出力例
Starting pod/ip-10-0-147-35ec2internal-debug ... To use host binaries, run `chroot /host`
ルートディレクトリーを
/host
に変更します。sh-4.2# chroot /host
/etc/containers/registries.conf
ファイルをチェックして、変更が行われたことを確認します。sh-4.2# cat /etc/containers/registries.conf
次の出力は、インストール後のミラー設定 CR が適用された
registries.conf
ファイルを表しています。最後の 2 つのエントリーは、それぞれdigest-only
およびtag-only
とマークされています。出力例
unqualified-search-registries = ["registry.access.redhat.com", "docker.io"] short-name-mode = "" [[registry]] prefix = "" location = "registry.access.redhat.com/ubi9/ubi-minimal" 1 [[registry.mirror]] location = "example.io/example/ubi-minimal" 2 pull-from-mirror = "digest-only" 3 [[registry.mirror]] location = "example.com/example/ubi-minimal" pull-from-mirror = "digest-only" [[registry]] prefix = "" location = "registry.example.com" [[registry.mirror]] location = "mirror.example.net/registry-example-com" pull-from-mirror = "digest-only" [[registry]] prefix = "" location = "registry.example.com/example" [[registry.mirror]] location = "mirror.example.net" pull-from-mirror = "digest-only" [[registry]] prefix = "" location = "registry.example.com/example/myimage" [[registry.mirror]] location = "mirror.example.net/image" pull-from-mirror = "digest-only" [[registry]] prefix = "" location = "registry.example.com" [[registry.mirror]] location = "mirror.example.com" pull-from-mirror = "digest-only" [[registry]] prefix = "" location = "registry.example.com/redhat" [[registry.mirror]] location = "mirror.example.com/redhat" pull-from-mirror = "digest-only" [[registry]] prefix = "" location = "registry.access.redhat.com/ubi9/ubi-minimal" blocked = true 4 [[registry.mirror]] location = "example.io/example/ubi-minimal-tag" pull-from-mirror = "tag-only" 5
ソースからノードにイメージをプルし、ミラーによって解決されるかどうかを確認します。
sh-4.2# podman pull --log-level=debug registry.access.redhat.com/ubi9/ubi-minimal@sha256:5cf...
リポジトリーのミラーリングのトラブルシューティング
リポジトリーのミラーリング手順が説明どおりに機能しない場合は、リポジトリーミラーリングの動作方法に関する以下の情報を使用して、問題のトラブルシューティングを行うことができます。
- 最初に機能するミラーは、プルされるイメージを指定するために使用されます。
- メインレジストリーは、他のミラーが機能していない場合にのみ使用されます。
-
システムコンテキストによって、
Insecure
フラグがフォールバックとして使用されます。 -
/etc/containers/registries.conf
ファイルの形式が最近変更されました。現在のバージョンはバージョン 2 で、TOML 形式です。
6.4.5.2. イメージレジストリーリポジトリーミラーリング用の ImageContentSourcePolicy (ICSP) ファイルの変換
ImageContentSourcePolicy
(ICSP) オブジェクトを使用してリポジトリーミラーリングを設定することは、非推奨の機能です。この機能は引き続き OpenShift Container Platform に含まれており、引き続きサポートされます。ただし、この製品の将来のリリースでは削除される予定であり、新しいデプロイメントには推奨されません。
ICSP オブジェクトは、リポジトリーミラーリングを設定するために ImageDigestMirrorSet
および ImageTagMirrorSet
オブジェクトに置き換えられています。ImageContentSourcePolicy
オブジェクトの作成に使用した既存の YAML ファイルがある場合は、oc adm migrate icsp
コマンドを使用して、それらのファイルを ImageDigestMirrorSet
YAML ファイルに変換できます。このコマンドは、API を現在のバージョンに更新し、kind
値を ImageDigestMirrorSet
に変更し、spec.repositoryDigestMirrors
を spec.imageDigestMirrors
に変更します。ファイルの残りの部分は変更されません。
移行によって registries.conf
ファイルは変更されないため、クラスターを再起動する必要はありません。
ImageDigestMirrorSet
または ImageTagMirrorSet
オブジェクトの詳細は、前のセクションの「イメージレジストリーリポジトリーミラーリングの設定」を参照してください。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。 -
クラスターに
ImageContentSourcePolicy
オブジェクトがあることを確認します。
手順
次のコマンドを使用して、1 つ以上の
ImageContentSourcePolicy
YAML ファイルをImageDigestMirrorSet
YAML ファイルに変換します。$ oc adm migrate icsp <file_name>.yaml <file_name>.yaml <file_name>.yaml --dest-dir <path_to_the_directory>
ここでは、以下のようになります。
<file_name>
-
ソース
ImageContentSourcePolicy
YAML の名前を指定します。複数のファイル名をリストできます。 --dest-dir
-
オプション: 出力
ImageDigestMirrorSet
YAML のディレクトリーを指定します。設定されていない場合、ファイルは現在のディレクトリーに書き込まれます。
たとえば、次のコマンドは
icsp.yaml
およびicsp-2.yaml
ファイルを変換し、新しい YAML ファイルをidms-files
ディレクトリーに保存します。$ oc adm migrate icsp icsp.yaml icsp-2.yaml --dest-dir idms-files
出力例
wrote ImageDigestMirrorSet to idms-files/imagedigestmirrorset_ubi8repo.5911620242173376087.yaml wrote ImageDigestMirrorSet to idms-files/imagedigestmirrorset_ubi9repo.6456931852378115011.yaml
次のコマンドを実行して CR オブジェクトを作成します。
$ oc create -f <path_to_the_directory>/<file-name>.yaml
ここでは、以下のようになります。
<path_to_the_directory>
-
--dest-dir
フラグを使用した場合は、ディレクトリーへのパスを指定します。 <file_name>
-
ImageDigestMirrorSet
YAML の名前を指定します。
- IDMS オブジェクトがロールアウトされた後、ICSP オブジェクトを削除します。
6.4.6. クラスターノードの再起動の頻度を減らすために、ミラーイメージカタログの範囲を拡大
リポジトリーレベルまたはより幅広いレジストリーレベルでミラーリングされたイメージカタログのスコープを設定できます。幅広いスコープの ImageContentSourcePolicy
リソースにより、リソースの変更に対応するためにノードが再起動する必要のある回数が減ります。
ImageContentSourcePolicy
リソースのミラーイメージカタログの範囲を拡大するには、以下の手順を実行します。
前提条件
-
OpenShift Container Platform CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてログインしている。 - 非接続クラスターで使用するようにミラーリングされたイメージカタログを設定する。
手順
<local_registry>
,<pull_spec>
, and<pull_secret_file>
の値を指定して、以下のコマンドを実行します。$ oc adm catalog mirror <local_registry>/<pull_spec> <local_registry> -a <pull_secret_file> --icsp-scope=registry
ここでは、以下のようになります。
- <local_registry>
-
非接続クラスター (例:
local.registry:5000
) 用に設定したローカルレジストリーです。 - <pull_spec>
-
非接続レジストリーで設定されるプル仕様です (例:
redhat/redhat-operator-index:v4.17
)。 - <pull_secret_file>
-
.json
ファイル形式のregistry.redhat.io
プルシークレットです。プルシークレットは、Red Hat OpenShift Cluster Manager からダウンロードできます。
oc adm catalog mirror
コマンドは、/redhat-operator-index-manifests
ディレクトリーを作成し、imageContentSourcePolicy.yaml
、catalogSource.yaml
、およびmapping.txt
ファイルを生成します。新しい
ImageContentSourcePolicy
リソースをクラスターに適用します。$ oc apply -f imageContentSourcePolicy.yaml
検証
oc apply
がImageContentSourcePolicy
に変更を正常に適用していることを確認します。$ oc get ImageContentSourcePolicy -o yaml
出力例
apiVersion: v1 items: - apiVersion: operator.openshift.io/v1alpha1 kind: ImageContentSourcePolicy metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"operator.openshift.io/v1alpha1","kind":"ImageContentSourcePolicy","metadata":{"annotations":{},"name":"redhat-operator-index"},"spec":{"repositoryDigestMirrors":[{"mirrors":["local.registry:5000"],"source":"registry.redhat.io"}]}} ...
ImageContentSourcePolicy
リソースを更新した後に、OpenShift Container Platform は新しい設定を各ノードにデプロイし、クラスターはソースリポジトリーへの要求のためにミラーリングされたリポジトリーの使用を開始します。
6.4.7. 関連情報
6.5. クラスターからの OpenShift Update Service のアンインストール
OpenShift Update Service (OSUS) のローカルコピーをクラスターから削除するには、最初に OSUS アプリケーションを削除してから、OSUS Operator をアンインストールする必要があります。
6.5.1. OpenShift Update Service アプリケーションの削除
OpenShift Container Platform Web コンソールまたは CLI を使用して OpenShift Update Service アプリケーションを削除できます。
6.5.1.1. Web コンソールを使用した OpenShift Update Service アプリケーションの削除
OpenShift Container Platform Web コンソールを使用して、OpenShift Update Service Operator で OpenShift Update Service アプリケーションを削除できます。
前提条件
- OpenShift Update Service Operator がインストールされている。
手順
- Web コンソールで Operators → Installed Operators をクリックします。
- インストールされた Operator のリストから OpenShift Update Service を選択します。
- Update Service タブをクリックします。
- インストールされた OpenShift Update Service アプリケーションのリストから、削除するアプリケーションを選択して、Delete UpdateService をクリックします。
- Delete UpdateService? 確認ダイアログで、Delete をクリックし、削除を確定します。
6.5.1.2. CLI を使用した OpenShift Update Service アプリケーションの削除
OpenShift CLI (oc
) を使用して、OpenShift Update Service アプリケーションを削除できます。
手順
OpenShift Update Service アプリケーションを作成した namespace を使用して OpenShift Update Service アプリケーション名を取得します (例:
openshift-update-service
)。$ oc get updateservice -n openshift-update-service
出力例
NAME AGE service 6s
直前の手順の
NAME
の値を使用して OpenShift Update Service アプリケーションと、OpenShift Update Service アプリケーションを作成した namespace (例:openshift-update-service
) を削除します。$ oc delete updateservice service -n openshift-update-service
出力例
updateservice.updateservice.operator.openshift.io "service" deleted
6.5.2. OpenShift Update Service Operator のアンインストール
OpenShift Container Platform Web コンソールまたは CLI を使用して、OpenShift Update Service Operator をアンインストールできます。
6.5.2.1. Web コンソールを使用した OpenShift Update Service Operator のアンインストール
OpenShift Container Platform Web コンソールを使用して OpenShift Update Service Operator をアンインストールすることができます。
前提条件
- OpenShift Update Service アプリケーションがすべて削除されている。
手順
- Web コンソールで Operators → Installed Operators をクリックします。
- インストールされた Operator のリストから OpenShift Update Service を選択し、Uninstall Operator をクリックします。
- Uninstall Operator? 確認ダイアログから Uninstall をクリックし、アンインストールを確定します。
6.5.2.2. CLI を使用した OpenShift Update Service Operator のアンインストール
OpenShift CLI (oc
) を使用して、OpenShift Update Service Operator をアンインストールできます。
前提条件
- OpenShift Update Service アプリケーションがすべて削除されている。
手順
OpenShift Update Service Operator (例:
openshift-update-service
) が含まれるプロジェクトに切り替えます。$ oc project openshift-update-service
出力例
Now using project "openshift-update-service" on server "https://example.com:6443".
OpenShift Update Service Operator Operator グループの名前を取得します。
$ oc get operatorgroup
出力例
NAME AGE openshift-update-service-fprx2 4m41s
Operator グループを削除します (例:
openshift-update-service-fprx2
)。$ oc delete operatorgroup openshift-update-service-fprx2
出力例
operatorgroup.operators.coreos.com "openshift-update-service-fprx2" deleted
OpenShift Update Service Operator サブスクリプションの名前を取得します。
$ oc get subscription
出力例
NAME PACKAGE SOURCE CHANNEL update-service-operator update-service-operator updateservice-index-catalog v1
直前の手順で
Name
の値を使用して、currentCSV
フィールドで、サブスクライブされた OpenShift Update Service Operator の現行バージョンを確認します。$ oc get subscription update-service-operator -o yaml | grep " currentCSV"
出力例
currentCSV: update-service-operator.v0.0.1
サブスクリプション (例:
update-service-operator
) を削除します。$ oc delete subscription update-service-operator
出力例
subscription.operators.coreos.com "update-service-operator" deleted
直前の手順の
currentCSV
値を使用し、OpenShift Update Service Operator の CSV を削除します。$ oc delete clusterserviceversion update-service-operator.v0.0.1
出力例
clusterserviceversion.operators.coreos.com "update-service-operator.v0.0.1" deleted
Legal Notice
Copyright © 2024 Red Hat, Inc.
OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).
Modified versions must remove all Red Hat trademarks.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.