第11章 ビルドワーカーを使用した Dockerfile の自動ビルド
Red Hat Quay は、OpenShift または Kubernetes 上のワーカーノードのセットを使用した Dockerfile のビルドをサポートしています。GitHub Webhook などのビルドトリガーを設定することで、新しいコードがコミットされたときに自動的に新しいバージョンのリポジトリーを構築できます。
このドキュメントでは、Red Hat Quay インストールでビルドを有効にし、Red Hat Quay からのビルドを受け入れるように OpenShift Container Platform または Kubernetes クラスターをもう 1 つセットアップする方法を説明します。
11.1. OpenShift Container Platform を使用した Red Hat Quay ビルダーのセットアップ リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay ビルダーを OpenShift Container Platform で使用する前に、事前設定する必要があります。
11.1.1. OpenShift Container Platform TLS コンポーネントの設定 リンクのコピーリンクがクリップボードにコピーされました!
tls
コンポーネントを使用すると、TLS 設定を制御できます。
TLS コンポーネントが Red Hat Quay Operator によって管理されている場合、Red Hat Quay は Builders をサポートしません。
tls
を unmanaged
に設定する場合は、独自の ssl.cert
ファイルと ssl.key
ファイルを提供します。このとき、クラスターで Builder をサポートする場合は、Quay
ルート名と Builder ルート名の両方を証明書の SAN リストに追加する必要があります。あるいは、ワイルドカードを使用することもできます。
ビルダールートを追加するには、次の形式を使用します。
[quayregistry-cr-name]-quay-builder-[ocp-namespace].[ocp-domain-name]
[quayregistry-cr-name]-quay-builder-[ocp-namespace].[ocp-domain-name]
11.1.2. Red Hat Quay ビルダー用の OpenShift Container Platform の準備 リンクのコピーリンクがクリップボードにコピーされました!
次の手順を使用して、OpenShift Container Platform 用に Red Hat Quay ビルダーを準備します。
前提条件
- OpenShift Container Platform TLS コンポーネントが設定されている。
手順
次のコマンドを入力して、ビルドを実行するプロジェクト (
builder
など) を作成します。oc new-project builder
$ oc new-project builder
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、
builder
namespace に新しいServiceAccount
を作成します。oc create sa -n builder quay-builder
$ oc create sa -n builder quay-builder
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、
builder
namespace 内のedit
ロールをユーザーに付与します。oc policy add-role-to-user -n builder edit system:serviceaccount:builder:quay-builder
$ oc policy add-role-to-user -n builder edit system:serviceaccount:builder:quay-builder
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、
builder
namespace のquay-builder
サービスアカウントに関連付けられたトークンを取得します。このトークンは、OpenShift Container Platform クラスターの API サーバーの認証と対話に使用されます。oc sa get-token -n builder quay-builder
$ oc sa get-token -n builder quay-builder
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - OpenShift Container Platform クラスターの API サーバーの URL を特定します。これは、OpenShift Container Platform Web コンソールで確認できます。
ビルド
jobs
をスケジュールするときに使用するワーカーノードラベルを特定します。ビルド pods はベアメタルのワーカーノードで実行する必要があるため、通常、これらは特定のラベルで識別されます。どのノードラベルを使用すべきかは、クラスター管理者に確認してください。
オプション: クラスターが自己署名証明書を使用している場合は、Kube API Server の認証局 (CA) を取得して Red Hat Quay の追加証明書に追加する必要があります。
次のコマンドを入力して、CA を含むシークレットの名前を取得します。
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"))'.name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
OpenShift Container Platform Web コンソールで、シークレットから
ca.crt
キーの値を取得します。値は "-----BEGIN CERTIFICATE-----"` で始まります。 -
CA を Red Hat Quay にインポートします。このファイルの名前が
K8S_API_TLS_CA
と一致することを確認します。
ServiceAccount
に対して次のSecurityContextConstraints
リソースを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.1.3. Red Hat Quay ビルダーの設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay ビルダーを有効にするには、次の手順を実行します。
手順
Red Hat Quay の
config.yaml
ファイルでビルドが有効になっていることを確認します。次に例を示します。FEATURE_BUILD_SUPPORT: True
FEATURE_BUILD_SUPPORT: True
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の情報を Red Hat Quay の
config.yaml
ファイルに追加し、各値をお客様のインストールに関連する情報に置き換えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 各設定フィールドの詳細は、を参照してください。