6.4. Red Hat Quay ビルダーと OpenShift のセットアップ


6.4.1. OpenShift TLS コンポーネント

tls コンポーネントを使用すると、TLS 設定を制御できます。

注記

TLS コンポーネントが Operator によって管理されていると、Red Hat Quay 3.7 はビルダーをサポートしません。

tlsunmanaged に設定する場合は、独自の ssl.cert ファイルと ssl.key ファイルを提供します。このとき、クラスターでビルダーをサポートする場合は、Quay ルートとビルダールート名の両方を証明書の SAN リストに追加するか、ワイルドカードを使用する必要があります。ビルダールートを追加するには、次の形式を使用します。

[quayregistry-cr-name]-quay-builder-[ocp-namespace].[ocp-domain-name]

6.4.2. Red Hat Quay のビルド用 OpenShift の準備

OpenShift クラスターが Red Hat Quay からのビルドを受け入れる前に、OpenShift クラスター上で必要なアクションがいくつかあります。

  1. ビルドを実行するプロジェクトを作成します (例: ‘builder')。

    $ oc new-project builder
  2. ビルドの実行に使用する ServiceAccount をこの Project に作成します。JobsPod を作成するのに十分な権限を持っていることを確認してください。後で使用するために、ServiceAccount のトークンをコピーします。

    $ oc create sa -n builder quay-builder
    $ oc policy add-role-to-user -n builder edit system:serviceaccount:builder:quay-builder
    $ oc sa get-token -n builder quay-builder
  3. OpenShift クラスターの API サーバーの URL を特定します。これは、OpenShift Console から確認できます。
  4. Jobs のビルドをスケジューリングする際に使用するワーカーノードのラベルを特定します。ビルド Pod はベアメタルのワーカーノードで実行する必要があるため、通常、これらは特定のラベルで識別されます。どのノードラベルを使用すべきかについては、クラスター管理者に確認してください。
  5. クラスターが自己署名証明書を使用している場合は、kube apiserver の CA を取得して Red Hat Quay の追加証明書に追加します。

    1. CA が含まれるシークレットの名前を取得します。

      $ oc get sa openshift-apiserver-sa --namespace=openshift-apiserver -o json | jq '.secrets[] | select(.name | contains("openshift-apiserver-sa-token"))'.name
    2. OpenShift のコンソールで、secret から ca.crt キーの値を取得します。値は、"-----BEGIN CERTIFICATE-----" で始まります。
    3. ConfigTool を使用して Red Hat Quay に CA をインポートします。このファイルの名前が K8S_API_TLS_CA と一致することを確認してください。
  6. ServiceAccount に必要なセキュリティーコンテキスト/ロールバインディングを作成します。
apiVersion: security.openshift.io/v1
kind: SecurityContextConstraints
metadata:
  name: quay-builder
priority: null
readOnlyRootFilesystem: false
requiredDropCapabilities: null
runAsUser:
  type: RunAsAny
seLinuxContext:
  type: RunAsAny
seccompProfiles:
- '*'
supplementalGroups:
  type: RunAsAny
volumes:
- '*'
allowHostDirVolumePlugin: true
allowHostIPC: true
allowHostNetwork: true
allowHostPID: true
allowHostPorts: true
allowPrivilegeEscalation: true
allowPrivilegedContainer: true
allowedCapabilities:
- '*'
allowedUnsafeSysctls:
- '*'
defaultAddCapabilities: null
fsGroup:
  type: RunAsAny
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: quay-builder-scc
  namespace: builder
rules:
- apiGroups:
  - security.openshift.io
  resourceNames:
  - quay-builder
  resources:
  - securitycontextconstraints
  verbs:
  - use
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: quay-builder-scc
  namespace: builder
subjects:
- kind: ServiceAccount
  name: quay-builder
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: quay-builder-scc

6.4.3. ビルダーの有効化および Red Hat Quay 設定バンドルへのビルド設定の追加

  1. Red Hat Quay の設定で Builds が有効になっていることを確認してください。
FEATURE_BUILD_SUPPORT: True
  1. Red Hat Quay の設定バンドルに以下を追加し、各値をインストールに固有の値で置き換えます。
注記

現在、Red Hat Quay Config Tool を介して有効にできるのは Build 機能自体のみです。Build Manager と Executor の実際の設定は、config.yaml ファイルで手動で行う必要があります。

BUILD_MANAGER:
- ephemeral
- ALLOWED_WORKER_COUNT: 1
  ORCHESTRATOR_PREFIX: buildman/production/
  ORCHESTRATOR:
    REDIS_HOST: quay-redis-host
    REDIS_PASSWORD: quay-redis-password
    REDIS_SSL: true
    REDIS_SKIP_KEYSPACE_EVENT_SETUP: false
  EXECUTORS:
  - EXECUTOR: kubernetes
    BUILDER_NAMESPACE: builder
    K8S_API_SERVER: api.openshift.somehost.org:6443
    K8S_API_TLS_CA: /conf/stack/extra_ca_certs/build_cluster.crt
    VOLUME_SIZE: 8G
    KUBERNETES_DISTRIBUTION: openshift
    CONTAINER_MEMORY_LIMITS: 5120Mi
    CONTAINER_CPU_LIMITS: 1000m
    CONTAINER_MEMORY_REQUEST: 3968Mi
    CONTAINER_CPU_REQUEST: 500m
    NODE_SELECTOR_LABEL_KEY: beta.kubernetes.io/instance-type
    NODE_SELECTOR_LABEL_VALUE: n1-standard-4
    CONTAINER_RUNTIME: podman
    SERVICE_ACCOUNT_NAME: *****
    SERVICE_ACCOUNT_TOKEN: *****
    QUAY_USERNAME: quay-username
    QUAY_PASSWORD: quay-password
    WORKER_IMAGE: <registry>/quay-quay-builder
    WORKER_TAG: some_tag
    BUILDER_VM_CONTAINER_IMAGE: <registry>/quay-quay-builder-qemu-rhcos:v3.4.0
    SETUP_TIME: 180
    MINIMUM_RETRY_THRESHOLD:
    SSH_AUTHORIZED_KEYS:
    - ssh-rsa 12345 someuser@email.com
    - ssh-rsa 67890 someuser2@email.com

各設定項目の説明は以下のとおりです。

ALLOWED_WORKER_COUNT
Red Hat Quay Pod ごとにインスタンス化される Build Worker の数を定義します。通常、これは ‘1' です。
ORCHESTRATOR_PREFIX
すべての Redis キーに追加される一意の接頭辞を定義します (Orchestrator の値を他の Redis キーから分離するのに便利です)。
REDIS_HOST
Redis サービスのホスト名。
REDIS_PASSWORD
Redis サービスに認証されるためのパスワード。
REDIS_SSL
Redis の接続に SSL を使用するかどうかを定義します。
REDIS_SKIP_KEYSPACE_EVENT_SETUP
デフォルトでは、Red Hat Quay はランタイム時のキーイベントに必要なキースペースイベントを設定しません。これを行うには、REDIS_SKIP_KEYSPACE_EVENT_SETUP を false に設定します。
EXECUTOR
このタイプのエグゼキュータの定義を開始します。有効な値は ‘kubernetes' および ‘ec2' です。
BUILDER_NAMESPACE
Red Hat Quay のビルドが行われる Kubernetes 名前空間
K8S_API_SERVER
ビルドが行われる OpenShift クラスターの API サーバーのホスト名
K8S_API_TLS_CA
API 呼び出しの実行時に Quay アプリケーションが信頼するビルドクラスターの CA 証明書の Quay コンテナーのファイルパス。
KUBERNETES_DISTRIBUTION
使用している Kubernetes の種類を示します。有効な値は‘openshift' および ‘k8s' です。
CONTAINER_*
各ビルド Pod のリソース要求および制限を定義します。
NODE_SELECTOR_*
ビルド Pod がスケジューリングされるノードセレクターラベル名と値のペアを定義します。
CONTAINER_RUNTIME
ビルダーが dockerpodman のどちらを実行するかを指定します。Red Hat の quay-builder イメージを使用しているお客様は、これを podman に設定してください。
SERVICE_ACCOUNT_NAME/SERVICE_ACCOUNT_TOKEN
ビルド Pod で使用されるサービスアカウント名/トークンを定義します。
QUAY_USERNAME/QUAY_PASSWORD
WORKER_IMAGE フィールドで指定された Red Hat Quay ビルドワーカーイメージをプルするために必要なレジストリー認証情報を定義します。お客様は、registry.redhat.io に対して https://access.redhat.com/RegistryAuthentication の記事のレジストリーサービスアカウントの作成セクションで定義されている Red Hat Service Account の認証情報を提供する必要があります。
WORKER_IMAGE
Red Hat Quay ビルダーイメージのイメージ参照。registry.redhat.io/quay/quay-builder
WORKER_TAG
希望するビルダーイメージのタグ。最新バージョンは v3.4.0 です。
BUILDER_VM_CONTAINER_IMAGE
各 Red Hat Quay ビルドの実行に必要な内部仮想マシンを保持するコンテナーイメージの完全な参照 (registry.redhat.io/quay/quay-builder-qemu-rhcos:v3.4.0)。
SETUP_TIME
ビルドがまだ Build Manager に登録されていない場合に、タイムアウトする秒数を指定します (デフォルトは 500 秒)。タイムアウトしたビルドは、3 回再起動が試みられます。3 回試してもビルドが登録されない場合は、失敗とみなされます。
MINIMUM_RETRY_THRESHOLD
この設定は、複数のエグゼキューターで使用されます。別のエグゼキューターが選択されるまでに、ビルドの開始を何回再試行するかを示します。0 に設定すると、ビルドジョブの試行回数に制限はありません。この値は意図的に小さく (3 以下) しておくことで、インフラストラクチャーに障害が発生した際にも迅速にフェイルオーバーを行うことができます。たとえば、Kubernetes を第 1 のエグゼキューター、EC2 を第 2 のエグゼキューターとして設定します。ジョブ実行の最後の試行を常に Kubernetes ではなく EC2 で実行したい場合は、Kubernetes のエグゼキューターの MINIMUM_RETRY_THRESHOLD を 1 に、EC2 の MINIMUM_RETRY_THRESHOLD を 0 に設定します (設定していない場合はデフォルトで 0 になります)。この場合、kubernetes の MINIMUM_RETRY_THRESHOLD > retries_remaining(1) は False と評価され、設定された 2 番目のエクゼキュータにフォールバックされます。
SSH_AUTHORIZED_KEYS
ignition 設定でのブートストラップする ssh キーのリスト。これにより、他の鍵を使用して EC2 インスタンスや QEMU 仮想マシンに ssh 接続することができます。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.