6.5. OpenShiftルートの制限

注記

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

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

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

    $ 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クライアントは、ポートを省略すると推測しないためです。