5.5. OpenShift Route の制限

注記

このセクションは、OpenShift の Quay Operator を管理対象の route コンポーネントと共に使用している場合にのみ適用されます。

OpenShift Routes の制限により、トラフィックを単一ポートしか送信できないため、ビルドのセットアップには追加の手順が必要になります。kubectl または oc CLI ツールが Quay Operator がインストールされているクラスターと共に機能するように設定され、QuayRegistry が存在することを確認します (ビルダーが実行されるベアメタルクラスターと同じであるとは限りません)。

  • 以下の手順に従い、HTTP/2 ingress が OpenShift で有効にされていることを確認します。
  • Quay Operator は、既存の Quay Pod 内で実行されるビルドマネージャーサーバーに gRPC トラフィックを転送する Route を作成します。カスタムのホスト名 (例: builder.registry.example.com などのサブドメイン)を使用する場合は、作成された Routestatus.ingress[0].host を参照する DNS プロバイダーを使用して CNAME レコードを作成します。

    $ kubectl get -n <namespace> route <quayregistry-name>-quay-builder -o jsonpath={.status.ingress[0].host}
  • OpenShift UI または CLI を使用して、QuayRegistryspec.configBundleSecret によって参照される Secret をビルドクラスター CA 証明書 (キー名に extra_ca_cert_build_cluster.cert を指定する) で更新し、config.yaml エントリーを、BUILDMAN_HOSTNAME フィールドと共に上記のビルダー設定 (使用する実行プログラムによって異なる) で参照される適切な値で更新します。

    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
        BUILDMAN_HOSTNAME: <build-manager-hostname>
        ...

追加の設定フィールドについては、以下で説明します。

BUILDMAN_HOSTNAME
ビルドジョブがビルドマネージャーとの通信に使用する外部アクセス可能なサーバーのホスト名。デフォルトは SERVER_HOSTNAME と同じです。OpenShift Route の場合、カスタムホスト名を使用する場合は status.ingress[0].host または CNAME エントリーのいずれかになります。BUILDMAN_HOSTNAME には、Openshift Route のポート番号 (例: somehost:443) を含める必要 があります。これが省略される場合、ビルドマネージャーとの通信に使用される gRPC クライアントはポートについて推測しないためです。