6.4. 非接続環境で IBM Z に Hosted Control Plane をデプロイする
非接続環境の Hosted Control Plane デプロイメントは、スタンドアロンの OpenShift Container Platform とは異なる動作をします。
Hosted Control Plane には、次の 2 つの異なる環境が関係します。
- コントロールプレーン: 管理クラスターに配置されます。Hosted Control Plane の Pod が Control Plane Operator によって実行および管理される場所です。
- データプレーン: ホステッドクラスターのワーカーに配置されます。ワークロードと他のいくつかの Pod が実行され、Hosted Cluster Config Operator によって管理される場所です。
データプレーンの ImageContentSourcePolicy
(ICSP) カスタムリソースは、ホステッドクラスターのマニフェストの ImageContentSources
API を通じて管理されます。
コントロールプレーンの ICSP オブジェクトは、管理クラスターで管理されます。このオブジェクトは、HyperShift Operator によって解析され、registry-overrides
エントリーとして Control Plane Operator と共有されます。このエントリーは、Hosted Control Plane の namespace 内の利用可能なデプロイメントのいずれかに引数として挿入されます。
Hosted Control Plane 内の非接続レジストリーを操作するには、まず管理クラスターに適切な ICSP を作成する必要があります。その後、非接続ワークロードをデータプレーンにデプロイするために、ホステッドクラスターのマニフェストの ImageContentSources
フィールドに必要なエントリーを追加する必要があります。
6.4.1. 非接続環境で IBM Z に Hosted Control Plane をデプロイするための前提条件
- ミラーレジストリー。詳細は、「mirror registry for Red Hat OpenShift を使用したミラーレジストリーの作成」を参照してください。
- 非接続インストールのミラーイメージ。詳細は、「oc-mirror プラグインを使用した非接続インストールのイメージのミラーリング」参照してください。
6.4.2. 管理クラスターに認証情報とレジストリー認証局を追加する
管理クラスターからミラーレジストリーイメージをプルするには、まずミラーレジストリーの認証情報と認証局を管理クラスターに追加する必要があります。以下の手順を使用してください。
手順
次のコマンドを実行して、ミラーレジストリーの証明書を含む
ConfigMap
を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f registry-config.yaml
$ oc apply -f registry-config.yaml
registry-config.yaml ファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: v1 kind: ConfigMap metadata: name: registry-config namespace: openshift-config data: <mirror_registry>: | -----BEGIN CERTIFICATE----- -----END CERTIFICATE-----
apiVersion: v1 kind: ConfigMap metadata: name: registry-config namespace: openshift-config data: <mirror_registry>: | -----BEGIN CERTIFICATE----- -----END CERTIFICATE-----
image.config.openshift.io
クラスター全体のオブジェクトにパッチを適用して、次のエントリーを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow spec: additionalTrustedCA: - name: registry-config
spec: additionalTrustedCA: - name: registry-config
管理クラスターのプルシークレットを更新して、ミラーレジストリーの認証情報を追加します。
次のコマンドを実行して、クラスターからプルシークレットを JSON 形式で取得します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get secret/pull-secret -n openshift-config -o json \ | jq -r '.data.".dockerconfigjson"' \ | base64 -d > authfile
$ oc get secret/pull-secret -n openshift-config -o json \ | jq -r '.data.".dockerconfigjson"' \ | base64 -d > authfile
取得したシークレットの JSON ファイルを編集して、認証局の認証情報を含むセクションを追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow "auths": { "<mirror_registry>": { "auth": "<credentials>", "email": "you@example.com" } },
"auths": { "<mirror_registry>": {
1 "auth": "<credentials>",
2 "email": "you@example.com" } },
次のコマンドを実行して、クラスター上のプルシークレットを更新します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc set data secret/pull-secret -n openshift-config \ --from-file=.dockerconfigjson=authfile
$ oc set data secret/pull-secret -n openshift-config \ --from-file=.dockerconfigjson=authfile
6.4.3. AgentServiceConfig リソースのレジストリー認証局をミラーレジストリーで更新する
イメージのミラーレジストリーを使用する場合、イメージをセキュアにプルできるように、エージェントがレジストリーの証明書を信頼する必要があります。ConfigMap
を作成することにより、ミラーレジストリーの認証局を AgentServiceConfig
カスタムリソースに追加できます。
前提条件
- multicluster engine for Kubernetes Operator をインストールした。
手順
multicluster engine Operator をインストールしたのと同じ namespace で、ミラーレジストリーの詳細を含む
ConfigMap
リソースを作成します。このConfigMap
リソースにより、ホステッドクラスターのワーカーに、ミラーレジストリーからイメージを取得する権限が付与されます。ConfigMap ファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: v1 kind: ConfigMap metadata: name: mirror-config namespace: multicluster-engine labels: app: assisted-service data: ca-bundle.crt: | -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- registries.conf: | [[registry]] location = "registry.stage.redhat.io" insecure = false blocked = false mirror-by-digest-only = true prefix = "" [[registry.mirror]] location = "<mirror_registry>" insecure = false [[registry]] location = "registry.redhat.io/multicluster-engine" insecure = false blocked = false mirror-by-digest-only = true prefix = "" [[registry.mirror]] location = "<mirror_registry>/multicluster-engine" insecure = false
apiVersion: v1 kind: ConfigMap metadata: name: mirror-config namespace: multicluster-engine labels: app: assisted-service data: ca-bundle.crt: | -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- registries.conf: | [[registry]] location = "registry.stage.redhat.io" insecure = false blocked = false mirror-by-digest-only = true prefix = "" [[registry.mirror]] location = "<mirror_registry>" insecure = false [[registry]] location = "registry.redhat.io/multicluster-engine" insecure = false blocked = false mirror-by-digest-only = true prefix = "" [[registry.mirror]] location = "<mirror_registry>/multicluster-engine"
1 insecure = false
- 1
<mirror_registry>
はミラーレジストリーの名前です。
AgentServiceConfig
リソースにパッチを適用して、作成したConfigMap
リソースを含めます。AgentServiceConfig
リソースが存在しない場合は、次の内容を埋め込んだAgentServiceConfig
リソースを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow spec: mirrorRegistryRef: name: mirror-config
spec: mirrorRegistryRef: name: mirror-config
6.4.4. ホステッドクラスターにレジストリー認証局を追加する
非接続環境で IBM Z に Hosted Control Plane をデプロイする場合は、additional-trust-bundle
リソースと image-content-sources
リソースを含めます。これらのリソースにより、ホステッドクラスターがデータプレーンのワーカーに認証局を注入して、イメージをレジストリーからプルできるようになります。
image-content-sources
の情報を含むicsp.yaml
ファイルを作成します。image-content-sources
の情報は、oc-mirror
を使用してイメージをミラーリングした後に生成されるImageContentSourcePolicy
の YAML ファイルで入手できます。ImageContentSourcePolicy ファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat icsp.yaml - mirrors: - <mirror_registry>/openshift/release source: quay.io/openshift-release-dev/ocp-v4.0-art-dev - mirrors: - <mirror_registry>/openshift/release-images source: quay.io/openshift-release-dev/ocp-release
# cat icsp.yaml - mirrors: - <mirror_registry>/openshift/release source: quay.io/openshift-release-dev/ocp-v4.0-art-dev - mirrors: - <mirror_registry>/openshift/release-images source: quay.io/openshift-release-dev/ocp-release
ホステッドクラスターを作成し、
additional-trust-bundle
証明書を指定して、コンピュートノードを証明書で更新します。次に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow hcp create cluster agent \ --name=<hosted_cluster_name> \ --pull-secret=<path_to_pull_secret> \ --agent-namespace=<hosted_control_plane_namespace> \ --base-domain=<basedomain> \ --api-server-address=api.<hosted_cluster_name>.<basedomain> \ --etcd-storage-class=<etcd_storage_class> \ --ssh-key <path_to_ssh_public_key> \ --namespace <hosted_cluster_namespace> \ --control-plane-availability-policy SingleReplica \ --release-image=quay.io/openshift-release-dev/ocp-release:<ocp_release_image> \ --additional-trust-bundle <path for cert> \ --image-content-sources icsp.yaml
$ hcp create cluster agent \ --name=<hosted_cluster_name> \
1 --pull-secret=<path_to_pull_secret> \
2 --agent-namespace=<hosted_control_plane_namespace> \
3 --base-domain=<basedomain> \
4 --api-server-address=api.<hosted_cluster_name>.<basedomain> \ --etcd-storage-class=<etcd_storage_class> \
5 --ssh-key <path_to_ssh_public_key> \
6 --namespace <hosted_cluster_namespace> \
7 --control-plane-availability-policy SingleReplica \ --release-image=quay.io/openshift-release-dev/ocp-release:<ocp_release_image> \
8 --additional-trust-bundle <path for cert> \
9 --image-content-sources icsp.yaml
- 1
<hosted_cluster_name>
は、ホステッドクラスターの名前に置き換えます。- 2
- プルシークレットへのパスを置き換えます (例:
/user/name/pullsecret
)。 - 3
<hosted_control_plane_namespace>
は、Hosted Control Plane の namespace の名前 (例:clusters-hosted
) に置き換えます。- 4
- 名前をベースドメインに置き換えます (例:
example.com
)。 - 5
- etcd ストレージクラス名を置き換えます (例:
lvm-storageclass
)。 - 6
- SSH 公開鍵へのパスを置き換えます。デフォルトのファイルパスは
~/.ssh/id_rsa.pub
です。 - 7 8
- 使用するサポート対象の OpenShift Container Platform バージョン (例:
4.18.0-multi
) に置き換えます。 - 9
- ミラーレジストリーの認証局へのパスを置き換えます。