9.8. OpenShift Ingress シャーディングでの Serving の使用
Knative Serving と OpenShift Ingress シャーディングを使用して、ドメインに基づいて Ingress トラフィックを分割できます。これにより、ネットワークトラフィックをより効率的に管理し、クラスターのさまざまな部分にルーティングできるようになります。
OpenShift Ingress シャーディングが導入されていても、OpenShift Serverless トラフィックは、単一の Knative Ingress Gateway と knative-serving
プロジェクトのアクティベーターコンポーネントを介してルーティングされます。
ネットワークトラフィックの分離に関する詳細は、Service Mesh を使用して OpenShift Serverless でネットワークトラフィックを分離する を参照してください。
前提条件
- OpenShift Serverless Operator および Knative Serving がインストールされている。
- OpenShift Container Platform に対するクラスター管理者権限があるか、Red Hat OpenShift Service on AWS または OpenShift Dedicated に対するクラスターまたは専用管理者権限がある。
9.8.1. OpenShift Ingress シャードの設定
Knative Serving を設定する前に、OpenShift Ingress シャードを設定する必要があります。
手順
IngressController
CR のラベルセレクターを使用して、異なるドメインの特定の Ingress シャードと一致させるように OpenShift Serverless を設定します。IngressController
CR の例apiVersion: operator.openshift.io/v1 kind: IngressController metadata: name: ingress-dev 1 namespace: openshift-ingress-operator spec: routeSelector: matchLabels: router: dev 2 domain: "dev.serverless.cluster.example.com" 3 # ... --- apiVersion: operator.openshift.io/v1 kind: IngressController metadata: name: ingress-prod 4 namespace: openshift-ingress-operator spec: routeSelector: matchLabels: router: prod 5 domain: "prod.serverless.cluster.example.com" 6 # ...
9.8.2. KnativeServing CR でのカスタムドメインの設定
OpenShift Ingress シャードを設定した後、それらに一致するように Knative Serving を設定する必要があります。
手順
KnativeServing
CR で、spec.config.domain
フィールドを追加して、Ingress シャードと同じドメインとラベルを使用するように Serving を設定します。KnativeServing
CR の例spec: config: domain: 1 dev.serverless.cluster.example.com: | selector: router: dev prod.serverless.cluster.example.com: | selector: router: prod # ...
- 1
- これらの値は、Ingress シャード設定の値と一致させる必要があります。
9.8.3. Knative サービスの特定の Ingress シャードをターゲットにする
Ingress シャーディングと Knative Serving を設定した後、ラベルを使用して Knative Service リソース内の特定の Ingress シャードをターゲットにすることができます。
手順
Service
CR で、特定のシャードに一致するラベルセレクターを追加します。サービス CR の例
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: hello-dev labels: router: dev 1 spec: template: spec: containers: - image: docker.io/openshift/hello-openshift --- apiVersion: serving.knative.dev/v1 kind: Service metadata: name: hello-prod labels: router: prod 2 spec: template: spec: containers: - image: docker.io/openshift/hello-openshift # ...
9.8.4. OpenShift Ingress シャーディング設定を使用したサービスの検証
Ingress シャーディング、Knative Serving、サービスを設定した後、サービスが正しいルートと選択したイングレスシャードを使用していることを確認できます。
手順
次のコマンドを実行して、クラスター内のサービスに関する情報を出力します。
$ oc get ksvc
出力例
NAME URL LATESTCREATED LATESTREADY READY REASON hello-dev https://hello-dev-default.dev.serverless.cluster.example.com hello-dev-00001 hello-dev-00001 True hello-prod https://hello-prod-default.prod.serverless.cluster.example.com hello-prod-00001 hello-prod-00001 True
次のコマンドを実行して、サービスが正しいルートと選択した Ingress シャードを使用していることを確認します。
$ oc get route -n knative-serving-ingress -o jsonpath='{range .items[*]}{@.metadata.name}{" "}{@.spec.host}{" "}{@.status.ingress[*].routerName}{"\n"}{end}'
出力例
route-19e6628b-77af-4da0-9b4c-1224934b2250-323461616533 hello-prod-default.prod.serverless.cluster.example.com ingress-prod route-cb5085d9-b7da-4741-9a56-96c88c6adaaa-373065343266 hello-dev-default.dev.serverless.cluster.example.com ingress-dev