Red Hatの福岡オフィスでソリューションアーキテクトをしている田中司恩です。 今回はOpenShift 4.2で追加された「ネットワークが制限された環境でのインストール」について説明します。
説明に使用する環境構成は以前に書いた記事と同様ですので、合わせてこちらもご参照ください。
本記事の章立てはこのようになります。
(2019/12/7追記。項目にOperatorの利用を追加)
- ネットワークが制限された環境でのインストール概要
- 検証環境解説
- インストール手順解説
- レジストリーホストの構築
- UPIインストールの実行
- アップグレード
- Operatorの利用
- 参考:Podmanコマンド
ネットワークが制限された環境でのインストール概要
ネットワークが制限された環境は、英語ドキュメントではrestricted networkと表記されています。 他の呼び方として、DisconnectedやAir-gappedなどと呼ばれることもあります。 今回取り扱う内容においては、いずれもOpenShiftクラスターがインターネットへの通信ができない環境を指す、とご理解の上読み進めてください。
OpenShift 4はインストールの要件としてインターネットへの接続が必須となっています。 しかしながら、特にオンプレミスの環境では強固に制限されたネットワーク環境があることが多く、またそこへOpenShiftクラスターを展開したいという要望もあると思います。 今回ご紹介する方法により、OpneShiftクラスターをネットワークが制限された環境への導入が可能となります。
[図1]
注意点としては、本来のOpenShift 4で提供できる下記のような機能が使えなくなることをご理解ください
- Over-The-Air Update
- cloud.redhat.comへのクラスターの自動登録、モニタリング(Telemetry)
- Operator HubからのOperatorインストール
- インターネットのソースやイメージを利用したデプロイ
- etc...
検証環境解説
インストール手順の説明の前に、今回の説明に使用する検証環境の説明を行います。 下記の図は4.1 UPIインストール記事からお馴染みの図となりますが、今回はネットワークの制限をより明確にしています。 また、ミラーされたイメージをホストするためのレジストリーホストを追加しています。
[図2]
ネットワークの通信可否は下記のようになっており、検証用ネットワークからは社内ネットワーク側には通信ができません。
- 社内ネットワーク:インターネット通信可能
- 検証用ネットワーク:インターネット通信不可
また、今回の構成においてOpenShiftクラスターへのアクセスは社内ネットワークからとし、片方向からのみのアクセスを許可する構成となっています。
[図3]
踏み台サーバーのfirewalldは下記のように変更します。
# firewall-cmd --zone=block --add-rich-rule='rule family="ipv4" destination address="172.16.0.1/32" accept' --permanent # firewall-cmd --zone=block --add-rich-rule='rule family="ipv4" port port=67 protocol=udp accept' --permanent # firewall-cmd --change-zone=ens224 --zone=block --permanent # firewall-cmd --reload
- 検証用ネットワークからのDHCPパケットに応答するために
UDP:67
のアクセスは許可 - 検証用ネットワークからの各種通信(DNS/Web/LB)に応答するために、
172.16.0.1/32
のアクセスは許可
インストール手順解説
今回もベアメタルへのUPIインストールをベースに説明していきます。 該当するドキュメントは下記です。
インストール 4.2 | Red Hat Customer Portal
- 第9章 ネットワークが制限されたインストール
- 9.1. 接続するネットワークが制限された環境でのインストール用のミラーレジストリーの作成
- 9.3. ネットワークが制限された環境でのクラスターのベアメタルへのインストール
※注意)公式ドキュメント上のbationホストは、本文中ではレジストリーホストを指します。*1
また、下記のblog.openshift.com 記事も参考にし、ドキュメントに足りない情報を付け加えています。
作業項目が多いので、まずは下記の作業サマリをご確認ください。
インストール作業サマリ
- レジストリーホストの構築
- ミラーレジストリーの作成
- ミラーレジストリーのプルシークレットの作成
- イメージリポジトリーのミラーリング
- UPIインストールの実行(4.1/4.2 UPIと同様)
- インストール設定ファイルの手動作成(ネットワーク制限用設定を追加 ※新規設定)
- インストールの実行
- インストール後の作業
- エラー表示への対処
- Samples Operatorの設定
- Cluster Managerの登録
UPIインストール作業自体は4.1/4.2と同様ですが、前後に独自の作業が追加となっています。 次の項目からが実際の作業となります。
レジストリーホストの構築
基本的にはドキュメント通りの作業となります。必要最低限の前提条件は下記です。
- 前提条件
- ocコマンドがインストールされていること(レジストリーホスト用のRHELサーバーが既にある前提)
- レジストリーホストのホスト名がDNSで名前解決できること
1. ミラーレジストリーの作成
ここでの作業の目的は、podmanコマンドを使ってmirror-registry
コンテナを起動することです。
また、コンテナ起動時に必要な証明書の作成も行います。
前提条件は下記の通りです。
- 前提条件
- レジストリーホストとして使用する Red Hat Enterprise Linux (RHEL) サーバーがネットワーク上にある
- レジストリーホストはインターネットにアクセスできる。
今回はレジストリーホストにRHEL8を利用しています*2
1.1 作業に必要なパッケージをインストールします
- インストールパッケージ
podman
: レジストリーを実行する際に使用するコンテナーパッケージを提供しますhttpd-tools
: ユーザーの作成に使用するhtpasswd
ユーティリティーを提供します
# yum -y install podman httpd-tools
1.2 レジストリーのフォルダーを作成します。
# mkdir -p /opt/registry/{auth,certs,data} # tree /opt/registry/ /opt/registry/ ├── auth ├── certs └── data 3 directories, 0 files
これらのフォルダーはレジストリーコンテナー内にマウントされます。
1.3 証明書を作成します
下記は自己署名の証明書生成の例です*3
# cd /opt/registry/certs # openssl req -newkey rsa:4096 -nodes -sha256 -keyout domain.key -x509 -days 365 -out domain.crt
下記は証明書作成時の情報入力のサンプルです。
- Country Name (2 letter code) [XX]:JP
- State or Province Name (full name) :Fukuoka
- Locality Name (eg, city) [Default City]:Fukuoka
- Organization Name (eg, company) [Default Company Ltd]:[改行]
- Organizational Unit Name (eg, section) :[改行]
- Common Name (eg, your name or your server's hostname) :registry.test.example.local
- Email Address :[改行]
※ Common NameはFQDNで指定します
1.4 bcrpt
形式を使用するレジストリー用のユーザー名およびパスワードを生成します。
下記は、/opt/registry/auth/htpasswd
にユーザー名:user
、パスワード:user
のユーザー作成例です。
# htpasswd -bBc /opt/registry/auth/htpasswd user user Adding password for user user
1.5 レジストリーに必要なポートを開きます
ドキュメントの通りにinternalとpublicゾーンに設定を行うため、NICのゾーン変更も合わせて行います。 デフォルト状態からの設定変更についてのみ記載しています。不要なサービスなどは個々の環境に合わせて調整してください。
# firewall-cmd --add-port=5000/tcp --zone=internal --permanent # firewall-cmd --add-port=5000/tcp --zone=public --permanent # firewall-cmd --change-zone=ens224 --zone=internal --permanent # firewall-cmd --change-zone=ens192 --zone=public --permanent # firewall-cmd --reload
ポートの開放後は下記のような状態になります
- internalゾーン
# firewall-cmd --list-all --zone=internal internal (active) target: default icmp-block-inversion: no interfaces: ens224 sources: services: cockpit dhcpv6-client mdns samba-client ssh ports: 5000/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
- publicゾーン
# firewall-cmd --list-all --zone=public public (active) target: default icmp-block-inversion: no interfaces: ens192 sources: services: cockpit dhcpv6-client ssh ports: 5000/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
1.6 信頼された証明書の一覧に自己署名証明書を追加します
システム全体で使用されるトラストストアに作成した自己署名証明書を追加し、この後の作業で証明書が信頼された物として実行できるようにします。*4
# cp /opt/registry/certs/domain.crt /etc/pki/ca-trust/source/anchors/ # update-ca-trust
1.7 レジストリーをホストする mirror-registry
コンテナーを作成します。
<参考/注意> ここで指定するパラメーターに間違いや、環境不備などがあるとコンテナが正常に起動しません。 podmanコマンドを使用したコンテナの簡単な実行/リカバリー方法について記事末尾にまとめましたので、詳細はそちらを参照ください。
下記は待ち受けポートをtcp:5000
で指定し、コンテナをバックグラウンド起動するコマンド例です。*5
この時点でdocker.io
からイメージをダウンロードするので、インターネットへアクセスができる必要があります。
# podman run --name mirror-registry -p 5000:5000 \ -v /opt/registry/data:/var/lib/registry:z \ -v /opt/registry/auth:/auth:z \ -e "REGISTRY_AUTH=htpasswd" \ -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \ -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \ -v /opt/registry/certs:/certs:z \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ -d docker.io/library/registry:2
下記のコマンドを実行し てコンテナが正常に起動しているか確認します
# podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES af99e9675c96 docker.io/library/registry:2 /entrypoint.sh /e... 5 seconds ago Up 5 seconds ago 0.0.0.0:5000->5000/tcp mirror-registry
STATUS
がUpで、PORTS
に指定したポート番号が表示されていることを確認します
1.8 レジストリーが使用できることを確認します
下記のコマンドを実行します。合わせてfirewallの設定を確認する場合は、別のホストから実行してください。
# curl -u user:user -k https://registry.test.example.local:5000/v2/_catalog
下記のように空のリポジトリの情報が表示されれば、正常にレジストリーコンテナが起動しています。
{"repositories":[]}
2. ミラーレジストリーのプルシークレットの作成
ここでは、起動したレジストリーコンテナに登録したユーザー名/パスワードで接続を行い、プルシークレットを入手します。 使用するユーザー名/パスワードは、 1.4で作成した物を使用します。
# podman login --authfile ~/pullsecret_config.json registry.test.example.local:5000 Authenticating with existing credentials... Existing credentials are invalid, please enter valid username and password Username: user Password: Login Succeeded!
入手したプルシークレットの中身を確認します。
# cat ~/pullsecret_config.json { "auths": { "registry.test.example.local:5000": { "auth": "dXNlcjp1c2Vy" } }
なお、auth
に指定されているパラメーターは、ユーザー名:パスワード
をbase64でエンコードした値になっています。
# echo -n 'user:user' | base64 -w0 dXNlcjp1c2Vy
2.1 追加作業
ドキュメントには記載されていませんが、追加で必要な作業を実施します。*6
2.1.1 cloud.redhat.comからpull-secret.txtをダウンロード
- ブラウザで下記へアクセスし、
Download pull secret
を選択*7
https://cloud.redhat.com/openshift/install/metal/user-provisioned
- ブラウザで下記へアクセスし、
2.1.2 プルシークレットのマージ
- 下記のコマンドを実行して、ミラーレジストリーから作成した物と
cloud.redhat.com
からダウンロードした物をマージします - jqコマンドが無い場合は先にインストール
- 下記のコマンドを実行して、ミラーレジストリーから作成した物と
# yum -y install jq
下記のコマンドを実行して、2つのプルシークレットをマージします
# cd ~ # ls pull* pull-secret.txt pullsecret_config.json # jq -s '.[0] * .[1]' pullsecret_config.json pull-secret.txt > pull-secret-2.txt
※ ここから以降は、マージしたプルシークレットpull-secret-2.txt
を使用します
これ以降の手順では、ドキュメント上では一般ユーザーでの実行となっており、同様に行うためにプルシークレットを一般ユーザーディレクトリにコピーします。
# cp pull-secret-2.txt /home/user/
3. イメージリポジトリーのミラーリング
ここでは、インターネット上(quay.io)のインストールに必要なイメージをレジストリーホストにダウンロードします
- 前提条件
- ミラーレジストリーを設定し、設定した証明書および認証情報にアクセスできること
- ミラーレジストリーおよび
cloud.redhat.com
から取得したプルシークレットをマージした物があること*8
3.1 ダウンロードバージョンの確認
下記のページを確認し、インストールする OpenShift Container Platform のバージョンを確認します
https://access.redhat.com/downloads/content/290/
3.2 環境変数を設定します
$ export OCP_RELEASE='4.2.4' $ export LOCAL_REGISTRY='registry.test.example.local:5000' $ export LOCAL_REPOSITORY='ocp4/openshift4' $ export PRODUCT_REPO='openshift-release-dev' $ export LOCAL_SECRET_JSON='/home/user/pull-secret-2.txt' $ export RELEASE_NAME="ocp-release"
各パラメーター解説
- OCP_RELEASE='4.2.4' # バージョンを指定
- LOCAL_REGISTRY='registry.test.example.local:5000' #絶対パス:ポート番号を指定
- LOCAL_REPOSITORY='ocp4/openshift4' # 任意。ここではドキュメント通り。
- PRODUCT_REPO='openshift-release-dev' # 実稼働環境のリリースの場合には、openshift-release-devを指定する必要があり
- LOCAL_SECRET_JSON='/home/user/pull-secret-2.txt' #マージしたプルシークレットを絶対パスで指定。
- RELEASE_NAME="ocp-release" # 実稼働環境のリリースについては、ocp-releaseを指定する必要があり
3.3 リポジトリのミラーリング実行
$ oc adm -a ${LOCAL_SECRET_JSON} release mirror \ --from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE} \ --to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} \ --to-release-image=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}
ミラーリング成功時の結果
〜省略〜 Success Update image: registry.test.example.local:5000/ocp4/openshift4:4.2.4 Mirror prefix: registry.test.example.local:5000/ocp4/openshift4 To use the new mirrored repository to install, add the following section to the install-config.yaml: imageContentSources: - mirrors: - registry.test.example.local:5000/ocp4/openshift4 source: quay.io/openshift-release-dev/ocp-release - mirrors: - registry.test.example.local:5000/ocp4/openshift4 source: quay.io/openshift-release-dev/ocp-v4.0-art-dev 〜省略〜
3.4 imageContentSources セクションを記録
上記の結果に含まれる、imageContentSources
セクションを記録します。この情報は、この後のUPIインストールの設定ファイルの作成時に使用します。
3.5 インストールプログラムの作成
この手順は、ミラーしたイメージからopenshift-install
コマンドを入手する手順となります。*9
$ oc adm release extract --command=openshift-install "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}" -a ${LOCAL_SECRET_JSON} $ ./openshift-install version ./openshift-install v4.2.4 built from commit 425e4ff0037487e32571258640b39f56d5ee5572 release image registry.test.example.local:5000/ocp4/openshift4@sha256:cebce35c054f1fb066a4dc0a518064945087ac1f3637fe23d2ee2b0c433d6ba8
oc
コマンド入手時にopenshift-install
も入手されている場合はこの手順は不要です。*10
参考
ドキュメントではこの後、
9.1.6. ネットワークが制限されたインストールでのイメージストリームサンプルの使用
という手順がありますが、実際にはこの手順はクラスターのインストール実行後に行う作業となります。
詳細は本記事の、
- インストール後の設定
- Samples Operatorの設定
を参照ください。
UPIインストールの実行
UPIインストール方法自体は4.1 UPIインストールと同様です。 本記事では追加となる作業についてのみ記載します。
インストール設定ファイルの手動作成
該当するドキュメントは下記の章になります。
- 第9章 ネットワークが制限されたインストール
- 9.3.6. インストール設定ファイルの手動作成
ここでは、インストール設定ファイルinstall-config.yaml
を作成しますが、その中にミラーレジストリーの情報を追加します。
- install-config.yaml
apiVersion: v1 baseDomain: example.local compute: - hyperthreading: Enabled name: worker replicas: 0 controlPlane: hyperthreading: Enabled name: master replicas: 3 metadata: name: test networking: clusterNetworks: - cidr: 10.128.0.0/14 hostPrefix: 23 networkType: OpenShiftSDN serviceNetwork: - 172.30.0.0/16 platform: none: {} pullSecret: '{"auths":{"registry.test.example.local:5000":{"auth":"dXNlcjp1c2Vy"}}}' sshKey: 'ssh-rsa AAAA...' additionalTrustBundle: | -----BEGIN CERTIFICATE----- 〜省略〜 -----END CERTIFICATE-----
pullSecret:
にはミラーレジストリーから入手したプルシークレットの内容を記載します
。 下記のjqコマンドを使うとプルシークレットの内容を一行で表示できます。
$ jq -c . ~/pullsecret_config.json {"auths":{"registry.test.example.local:5000":{"auth":"dXNlcjp1c2Vy"}}}
additionalTrustBundle:
には作成した自己署名証明書の内容を記載します。証明書の内容は下記のコマンドで確認できます。
$ cat /etc/pki/ca-trust/source/anchors/domain.crt -----BEGIN CERTIFICATE----- 〜省略〜 -----END CERTIFICATE-----
※注意:install-config.yaml
に証明書の内容を記載する際は、各行頭にスペースを追加してインデントしてください
インストールの実行
install-config.yaml
作成後の手順は通常と同じです。4.1 UPIインストールの手順を参考にしてください。
インストール後の作業
エラー表示への対処
インストール後、ダッシュボードおよびMonitoring/Alertingに、TelemeterClientDown
のアラートが表示されます。
クラスターからインターネットへの接続が制限されているためにこのエラーが発生しています。
今回の構成において、クラスターのグローバルクラスタープルシークレットはミラーレジストリーから入手した内容になっていますので、事実上Telemetry機能は無効です。
3.3. リモートヘルスレポートのオプトアウト 4.2 | Red Hat Customer Portal
この状態でもアラートは表示され続けるため、アラートをサイレンスに設定します。
Monitoring > Alerting > Alertタブで、TelemeterClientDownのSilence Alertを選択します。
[図4]
Silence Alertの詳細入力画面になったら、StartとEndの期間を指定し、必要に応じてCreator/Commentを記入してCreateを選択します。
[図5]
その後、TelemeterClientDownのStateがSilencedに変化し、ダッシュボードのアラート表示も消えます。
[図6]
Samples Operatorの設定
インストール前に行ったリポジトリのミラーリングでは、インストールに必要なイメージのミラーリングが行われました。しかしながらイメージストリームで使われるほとんどのイメージは registry.redhat.io
にあり、ミラーリングの作業ではこれらは対象外となります。
そのため、ネットワーク制限環境下のクラスターではこれらのイメージへの参照ができず、各イメージは参照エラーとなります。さらに一定時間経過度、Samples OperatorもDegratedになります。
対処法は二つあります。
- Samples Operatorで全てのイメージの管理を無効化する
- Samples Operatorで管理除外するイメージを個別指定する*11
2019/12/1追記。 Samples Operatorの設定について別記事を書きました。管理除外する方法など詳細はこちら。
本記事では全てのイメージの管理の無効化について説明します。
全てのイメージの管理の無効化
下記のコマンドを実行します。
$ oc edit configs.samples.operator.openshift.io
下記の、managementState:
をRemoved
に変更します
- 変更前
〜省略〜 spec: architectures: - x86_64 managementState: Managed status: architectures: 〜省略〜
- 変更後
〜省略〜 spec: architectures: - x86_64 managementState: Removed status: architectures: 〜省略〜
設定変更後、Builds >Image Streamsに表示されるイメージ数が一気に減ります。
- 変更前
[図7]
- 変更後
[図8]
変更後に残っているものは、インストールペイロードの一部で、ミラーリング時にquay.io
からミラーされたものです。またSamples Operator の管理対象外です。
Cluster Managerの登録
- OpenShift Cluster Managerへアクセスします
- 非接続のクラスターを登録します
Register disconnected cluster
を選択します
[図9]
- クラスターの詳細情報を入力します
[図10]
- Cluster ID:必須 # Dashboards参照
- Display Name: #任意の名前
- Web Console URL: # 例) https://console-openshift-console.apps.test.example.local/dashboards
- Operating System:必須 # 選択(Red Hat Enterprise Linux CoreOS/Red Hat Enterprise Linux)
- System Type:必須 # 選択(Physical/Virtual)
- Number of vCPUs:必須 # Worker Nodeの合計
- Memory Capacity (GiB): # Worker Nodeの合計
- Number of compute nodes: # Worker Nodeの台数
登録が完了すると自動登録された場合と同様の画面が出ますが、MonitoringタブにはDisconnected cluster
と表示され、Telemetryデータの受信が行われていないことが確認できます。
[図11]
アップグレード
ネットワーク制限環境下のクラスターではOTAが使えません。 クラスターのアップグレードを行う場合は、ミラーレジストリーにアップグレードイメージをダウンロードし、そのイメージを指定して実行する必要があります。
アップグレードイメージのダウンロード
手順は本記事の「3. イメージリポジトリーのミラーリング」と同様です。
まず、ダウンロードバージョンの確認を行い、環境変数を設定します。
OCP_RELEASE=
にアップグレード先のバージョンを指定し、リポジトリのミラーリング実行を実行します。
コマンドでのアップグレード
手動でアップグレードを行う場合は下記のocコマンドを使用します。下記はv4.2.7を指定したアップグレードの例です。
--to-image
に指定するイメージ名は、ミラーリング成功結果のUpdate image:
を参照してください。
$ oc adm upgrade --to-image=registry.test.example.local:5000/ocp4/openshift4:4.2.7 --allow-explicit-upgrade --force
コマンド実行後に下記のように表示されたらアップグレードが開始しています。
Updating to release image registry.test.example.local:5000/ocp4/openshift4:4.2.7
以降は、通常のOTAと同様にWebコンソールでアップグレードの進捗を確認します
[図12]
アップグレード完了後、指定したバージョンになっているか確認します。Desired Release Image
にはコマンドで指定したレジストリーミラーのイメージが指定されています。
[図13]
Operatorの利用
ネットワーク制限環境下でのOperatorの利用については、下記のドキュメントに記載があります。
本記事では内容の詳細には触れませんが、ざっと下記のような流れになります。
quay.io
からOperatorのパッケージをプルし、新しくカタログイメージにして、クラスタがアクセスできるローカルレジストリー(OCP内部も可)にプッシュする。クラスタから新規カタログを参照するように変更し、最後にoc image mirror
でソースイメージをローカルレジストリーにプッシュする。
別記事のイメージストリームのミラーと近い内容になっていますので、こちらも合わせて参考にしてみてください。
まとめ
ネットワーク制限環境下でのインストール方法について解説しました。 ここまでに記載した通り、非常に多くの手順がありその上で制限も多くあります。 可能であればこの方法を行う前に、Proxy経由などでクラスターをインターネットに接続する方法をご検討ください。
Let's get Big Ideas!
参考:Podmanコマンド
イメージリポジトリーのミラーリング時にpodman run
を実行したのに、コンテナーが正常に起動しないなどの時に必要なコマンドの解説です。
Podmanコマンドのその他の詳細は、man podman
を実行するか、下記のドキュメントを参考にして下さい。
第7章 コンテナーのコマンドライン参照 Red Hat Enterprise Linux 8 | Red Hat Customer Portal
- コンテナーの確認
podman run
を実行後、正常にコンテナが起動していない例
# podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4ae1ce8416f3 docker.io/library/registry:2 /entrypoint.sh ?... 26 seconds ago Exited (127) 26 seconds ago mirror-registry
- コンテナーの停止
# podman stop mirror-registry 529d1a5c19faf973c1cadc6ce024a69d979c67e2b25527cc014c445a2e085757
- コンテナーの削除
# podman rm mirror-registry 529d1a5c19faf973c1cadc6ce024a69d979c67e2b25527cc014c445a2e085757 # podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- ローカルコンテナーのイメージの確認
# podman images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/library/registry 2 f32a97de94e1 8 months ago 26.4 MB
- ローカルコンテナーのイメージの削除
上記で確認したIMAGE ID
を指定して実行
# podman rmi f32a97de94e1 f32a97de94e13d29835a19851acd6cbc7979d1d50f703725541e44bb89a1ce91 # podman images
ローカルコンテナーのイメージが削除されたことにより、リカバリーが完了です。
- 正常にコンテナーが起動した場合は、
podman stop
podman start
でコンテナーの停止、実行が行えます
# podman stop mirror-registry a51a43a67d82adb46f3c3be3c0846cee59f353850054c569827afa3a94dc3d08 # podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a51a43a67d82 docker.io/library/registry:2 /entrypoint.sh /e... 2 days ago Exited (2) 6 seconds ago 0.0.0.0:5000->5000/tcp mirror-registry # podman start mirror-registry mirror-registry # podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a51a43a67d82 docker.io/library/registry:2 /entrypoint.sh /e... 2 days ago Up 5 seconds ago 0.0.0.0:5000->5000/tcp mirror-registry
*1:本記事ではレジストリーホストの役割を明確にするために、踏み台サーバーとは別に構成しています。
*2:インストールはサーバーGUIを使用。RHELの基本的な設定については、4.1 UPIインストール記事中の踏み台サーバーの構築を参照
*3:既存の認証局などがあればそちらを使っても構いません
*4:システム全体のトラストストアについては、次の記事を参照ください。 https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/security_guide/sec-shared-system-certificates
*5:2019/12/5時点で、英語/日本語の公式ドキュメントがバックグラウンド起動に修正されています。
*6:以降の3.3 リポジトリのミラーリング実行時に、2つのプルシークレット情報が無いとミラーリングに失敗するため。英語のblog記事には手順記載あり。フィードバックは登録されているので、ドキュメント修正待ち。
*7:現在はコマンドで入手する方法が無いためブラウザで実行してください
*8:2.1追加作業を参照
*9:ドキュメントにはオプションにプルシークレットの指定が無いので追加。これもドキュメントの修正待ち。
*10:確認できた違いとしては、Desired Release Imageに表示されるイメージ名がquay.ioなのかローカルレジストリーなのか、程度
*11:これについてだけでも結構なボリュームの内容があるので、別記事にする予定です。→書きました。