第3章 Red Hat Quay on OpenShift Container Platform を使用したベアメタルビルド
このセクションの手順では、OpenShift Container Platform 上で Red Hat Quay の ベアメタルビルド 環境を作成する方法を説明します。
3.1. Red Hat Quay on OpenShift Container Platform のベアメタルビルドの設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay on OpenShift Container Platform の ベアメタルビルド を設定するには、次の手順に従います。
QuayRegistry CRD でマネージド route コンポーネントを使用して Red Hat Quay Operator on OpenShift Container Platform を使用している場合は、「自己管理 ルート を使用した Red Hat Quay on OpenShift Container Platform ビルド 制限」を参照してください。
前提条件
- Red Hat Quay Operator が実行されている状態でプロビジョニングされた OpenShift Container Platform クラスターがある。
-
tlsコンポーネントをunmanagedに設定し、カスタム SSL/TLS 証明書を Red Hat Quay Operator にアップロードしている。詳細は、Red Hat Quay の SSL および TLS を参照してください。 - クラスター管理者として OpenShift Container Platform にログインしている。
手順
ビルドが実行されるプロジェクト (例:
bare-metal-builder) を作成するには、次のコマンドを入力します。oc new-project bare-metal-builder
$ oc new-project bare-metal-builderCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、
bare-metal-buildernamespace に新しいServiceAccountを作成します。oc create sa -n bare-metal-builder quay-builder
$ oc create sa -n bare-metal-builder quay-builderCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、ユーザーに
bare-metal-buildernamespace 内でのeditロールを付与します。oc policy add-role-to-user -n bare-metal-builder edit system:serviceaccount:bare-metal-builder:quay-builder
$ oc policy add-role-to-user -n bare-metal-builder edit system:serviceaccount:bare-metal-builder:quay-builderCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、
bare-metal-buildernamespace のquay-builderサービスアカウントに関連付けられたトークンを取得します。このトークンは、OpenShift Container Platform クラスターの API サーバーの認証と対話に使用されます。OpenShift Container Platform クラスターのバージョンが 4.11 以上の場合は、次のコマンドを入力します。
oc create token quay-builder -n bare-metal-builder --duration 24h
oc create token quay-builder -n bare-metal-builder --duration 24hCopy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Container Platform クラスターがバージョン 4.11 より前 (たとえばバージョン 4.10) の場合は、次のコマンドを入力します。
oc sa get-token -n bare-metal-builder quay-builder
$ oc sa get-token -n bare-metal-builder quay-builderCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- OpenShift Container Platform クラスターの API サーバーの URL を特定します。これは、OpenShift Container Platform Web コンソールで確認できます。
ビルドジョブ をスケジュールするときに使用するワーカーノードラベルを識別します。ビルド Pod はベアメタルワーカーノード上で実行する必要があるため、これらは通常、特定のラベルで識別されます。
どのノードラベルを使用すべきかは、クラスター管理者に確認してください。
Red Hat Quay の追加証明書に追加するには、Kube API Server の認証局 (CA) を取得します。
OpenShift Container Platform バージョン 4.15 以降では、次のコマンドを入力して、CA を含むシークレットの名前を取得します。
oc extract cm/kube-root-ca.crt -n openshift-apiserver
$ oc extract cm/kube-root-ca.crt -n openshift-apiserverCopy to Clipboard Copied! Toggle word wrap Toggle overflow mv ca.crt build_cluster.crt
$ mv ca.crt build_cluster.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Container Platform バージョン 4.15 より前 (例: 4.14) の場合は、次のコマンドを入力します。
oc get sa openshift-apiserver-sa --namespace=openshift-apiserver -o json | jq '.secrets[] | select(.name | contains("openshift-apiserver-sa-token"))'.name$ oc get sa openshift-apiserver-sa --namespace=openshift-apiserver -o json | jq '.secrets[] | select(.name | contains("openshift-apiserver-sa-token"))'.nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
OpenShift Container Platform Web コンソールで、シークレットから
ca.crtキーの値を取得します。値は "-----BEGIN CERTIFICATE-----"` で始まります。 -
CA を Red Hat Quay にインポートします。このファイルの名前が、手順 9 で使用した
K8S_API_TLS_CAフィールドと一致していることを確認します。
ServiceAccountに対して次のSecurityContextConstraintsリソースを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Container Platform Web コンソールを使用して、Red Hat Quay on OpenShift Container Platform デプロイメントの
config.yamlファイルを更新し、適切な ベアメタルビルド 設定を含めます。-
Operators
Installed Operators Red Hat Quay Quay Registry をクリックします。 - レジストリーの名前 (例: example-registry) をクリックします。
- Config Bundle Secret の下で、設定バンドルの名前 (例: extra-ca-certificate-config-bundle-secret) をクリックします。
-
Actions
Edit Secret をクリックします。 以下の情報を Red Hat Quay の
config.yamlファイルに追加し、各値をお客様のインストールに関連する情報に置き換えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 次のコマンドを実行して取得します:
$ oc get route quayregistry-quay-builder -n ${QUAY_PROJECT} -o jsonpath='{.spec.host}' - 2
- Redis サービスのホスト名。
- 3
- ベアメタルビルド namespace の名前と一致するように設定します。この例では
bare-metal-builderを使用しました。 - 4
K8S_API_SERVERは、$ oc cluster-infoを実行して取得します。- 5
- カスタム CA 証明書を手動で作成して追加する必要があります (例
K8S_API_TLS_CA: /conf/stack/extra_ca_certs/build-cluster.crt)。 - 6
- 指定しないと、デフォルトは
5120Miです。 - 7
- 指定しないと、デフォルトは
1000mです。 - 8
- 指定しないと、デフォルトは
3968Miです。 - 9
- 指定しないと、デフォルトは
500mです。 - 10
$ oc create saの実行時に取得します。- 11
- リモートトラブルシューティングアクセス用に、ビルド環境に公開 SSH キーを追加できるようにします。このキーは、管理者または開発者がデバッグの目的でビルドワーカーに SSH 接続するために使用する秘密鍵に対応している必要があります。このキーは、特定の SSH キーとポートを使用してリモートホストへの SSH 接続を確立することによって取得できます。例:
$ ssh -i /path/to/ssh/key/set/in/ssh_authorized_keys -p 9999 core@localhost
-
Operators
- ビルド 機能を有効にするには、Red Hat Quay レジストリーを再起動します。
3.1.1. 自己管理 ルート を使用した Red Hat Quay on OpenShift Container Platform ビルド 制限 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform 上で Red Hat Quay Operator をマネージド route コンポーネントとともに使用する場合、次の制限が適用されます。
- 現在、OpenShift Container Platform の ルート は、単一ポートへのトラフィックのみを処理できます。Red Hat Quay ビルドをセットアップするには追加の手順が必要です。
-
Red Hat Quay Operator がインストールされているクラスターで
kubectlまたはocCLI ツールが動作するように設定されていること、およびQuayRegistryが存在することを確認します。QuayRegistryは、ビルダー が実行されるのと同じベアメタルクラスター上にある必要はありません。 - こちらの手順 に従って、OpenShift クラスター上で HTTP/2 ingress が有効になっていることを確認します。
Red Hat Quay Operator は、既存の
QuayPod 内で実行されているビルドマネージャーサーバーに gRPC トラフィックを送信するRouteリソースを作成します。カスタムホスト名、または<builder-registry.example.com>などのサブドメインを使用する場合は、作成したRouteリソースのstatus.ingress[0].hostを参照する DNS プロバイダーで CNAME レコードを作成してください。以下に例を示します。kubectl get -n <namespace> route <quayregistry-name>-quay-builder -o jsonpath={.status.ingress[0].host}$ kubectl get -n <namespace> route <quayregistry-name>-quay-builder -o jsonpath={.status.ingress[0].host}Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Container Platform UI または CLI を使用して、
QuayRegistryのspec.configBundleSecretによって参照されるSecretを ビルド クラスター CA 証明書で更新します。キーにextra_ca_cert_build_cluster.certという名前を付けます。Red Hat Quay ビルド の設定時に作成した ビルド 設定で参照されている正しい値でconfig.yamlファイルのエントリーを更新し、BUILDMAN_HOSTNAMECONFIGURATION FIELD を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- ビルドジョブ が ビルドマネージャー と通信するために使用する、外部からアクセス可能なサーバーホスト名です。デフォルトは
SERVER_HOSTNAMEと同じです。OpenShiftrouteリソースの場合、これはstatus.ingress[0].hostか、カスタムホスト名を使用している場合は CNAME エントリーのいずれかになります。BUILDMAN_HOSTNAMEには、ポート番号を含める必要があります (例: OpenShift Container Platformrouteの場合はsomehost:443)。これは、ビルドマネージャー との通信に使用される gRPC クライアントが、ポートを省略すると推測しないためです。