検索

7.8. OpenShift Ingress シャーディングでの Serving の使用

download PDF

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 に対するクラスターまたは専用管理者権限がある。

7.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
      # ...

    1
    最初の Ingress シャードの名前。
    2
    ingress-dev シャードに一致するラベルセレクター。
    3
    ingress-dev シャードのカスタムドメイン。
    4
    2 番目の Ingress シャードの名前。
    5
    ingress-prod シャードと一致するラベルセレクター。
    6
    ingress-prod シャードのカスタムドメイン。

7.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 シャード設定の値と一致させる必要があります。

7.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
      # ...

    1 2
    ラベルは KnativeServing CR の設定と一致させる必要があります。

7.8.4. OpenShift Ingress シャーディング設定を使用したサービスの検証

Ingress シャーディング、Knative Serving、サービスを設定した後、サービスが正しいルートと選択したイングレスシャードを使用していることを確認できます。

手順

  1. 次のコマンドを実行して、クラスター内のサービスに関する情報を出力します。

    $ 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

  2. 次のコマンドを実行して、サービスが正しいルートと選択した 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

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.