1.3. Service Mesh 3.x と OpenShift Serverless の統合


OpenShift Serverless Operator は、Knative のデフォルト Ingress として Kourier を提供します。ただし、Kourier が有効であるかどうかにかかわらず、OpenShift Serverless でサービスメッシュを使用できます。Kourier を無効にして統合すると、mTLS 機能など、Kourier イングレスがサポートしない追加のネットワークおよびルーティングオプションを設定できます。

次の前提条件と制限事項に注意してください。

  • すべての Knative 内部コンポーネントと Knative Services は Service Mesh の一部であり、サイドカーインジェクションが有効になっています。これは、厳密な相互トランスポート層セキュリティー(mTLS)がメッシュ全体で適用されることを意味します。Knative Services へのすべてのリクエストには mTLS 接続が必要で、OpenShift Routing からの呼び出しを除き、クライアントは証明書を送信する必要があります。
  • OpenShift Serverless with Service Mesh の統合では、1 つのサービスメッシュのみをターゲットにできます。クラスター内には複数のメッシュが存在できますが、OpenShift Serverless はそのうちの 1 つでのみ使用できます。

1.3.1. 前提条件

  • クラスター管理者アクセス権を持つ Red Hat OpenShift Serverless アカウントにアクセスできる。
  • OpenShift CLI (oc) がインストールされている。
  • Serverless Operator がインストールされている。
  • Red Hat OpenShift Service Mesh 3.x Operator がインストールされている。
  • 以下の手順の例では、ドメイン example.com を使用します。このドメインの証明書のサンプルは、サブドメイン証明書に署名する認証局 (CA) として使用されます。

    お使いのデプロイメントでこの手順を完了し、検証するには、一般に信頼されているパブリック CA によって署名された証明書、または組織が提供する CA のいずれかが必要です。コマンドの例は、ドメイン、サブドメイン、および CA に合わせて調整する必要があります。

  • ワイルドカード証明書を OpenShift Container Platform クラスターのドメインに一致するように設定する必要があります。たとえば、OpenShift Container Platform コンソールアドレスが https://console-openshift-console.apps.openshift.example.com の場合は、ドメインが *.apps.openshift.example.com になるようにワイルドカード証明書を設定する必要があります。詳細は、着信外部トラフィックを暗号化する証明書の作成 を参照してください。
  • デフォルトの OpenShift Container Platform クラスタードメインのサブドメインではないものを含むドメイン名を使用する必要がある場合は、これらのドメインのドメインマッピングを設定する必要があります。詳細は、Creating a custom domain mapping OpenShift Serverless を参照してください

1.3.2. 着信外部トラフィックを暗号化する証明書の作成

デフォルトでは、サービスメッシュ mTLS 機能は、Ingress ゲートウェイとサイドカーを持つ個々の Pod 間で、サービスメッシュ自体内のトラフィックのみを保護します。OpenShift Container Platform クラスターに流入するトラフィックを暗号化するには、OpenShift Serverless とサービスメッシュの統合を有効にする前に証明書を生成する必要があります。

前提条件

  • OpenShift Container Platform に対するクラスター管理者権限があるか、Red Hat OpenShift Service on AWS または OpenShift Dedicated に対するクラスターまたは専用管理者権限がある。
  • OpenShift Serverless Operator および Knative Serving がインストールされている。
  • OpenShift CLI (oc) がインストールされている。
  • knative-serving-ingress namespace にアクセスできる。この namespace は、インストール時に OpenShift Serverless Operator が自動的に作成されます。
  • アプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションが割り当てられたプロジェクトにアクセスできる。

手順

  1. Knative サービスの証明書に署名する root 証明書と秘密鍵を作成します。

    $ openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 \
        -subj '/O=Example Inc./CN=example.com' \
        -keyout root.key \
        -out root.crt
    Copy to Clipboard Toggle word wrap
  2. ワイルドカード証明書を作成します。

    $ openssl req -nodes -newkey rsa:2048 \
        -subj "/CN=*.apps.openshift.example.com/O=Example Inc." \
        -keyout wildcard.key \
        -out wildcard.csr
    Copy to Clipboard Toggle word wrap
  3. ワイルドカード証明書を署名します。

    $ openssl x509 -req -days 365 -set_serial 0 \
        -CA root.crt \
        -CAkey root.key \
        -in wildcard.csr \
        -out wildcard.crt
    Copy to Clipboard Toggle word wrap
  4. Service Mesh のバージョンに応じて、次のコマンドのいずれかを入力して、ワイルドカード証明書を含むシークレットを作成します。

    • オプション A: Service Mesh 2.x の場合は、folloing コマンドを入力して istio-system namespace にシークレットを作成します。

      $ oc create -n istio-system secret tls wildcard-certs \
          --key=wildcard.key \
          --cert=wildcard.crt
      Copy to Clipboard Toggle word wrap
    • オプション B: Service Mesh 3.x の場合は、folloing コマンドを入力して、knative-serving-ingress namespace にシークレットを作成します。

      $ oc create -n knative-serving-ingress secret tls wildcard-certs \
          --key=wildcard.key \
          --cert=wildcard.crt
      Copy to Clipboard Toggle word wrap

      シークレットに使用される namespace はサービスメッシュのバージョンによって異なります。サービスメッシュ 2.x は istio-system namespace の証明書を想定します。Service Mesh 3.x は、OpenShift Serverless Ingress ゲートウェイが実行される専用の knative-serving-ingress namespace を使用します。

1.3.3. Service Mesh 3.x と OpenShift Serverless の統合の設定および検証

Service Mesh 3.x を OpenShift Serverless と統合して、サーバーレスアプリケーションの高度なトラフィック管理、セキュリティー、および可観測性を有効にできます。このセクションでは、前提条件を確認し、両方のコンポーネントをインストールして設定し、統合が期待どおりに機能していることを確認する手順を説明します。

1.3.3.1. インストールの前提条件の確認

Service Mesh と Serverless の統合をインストールして設定する前に、前提条件が満たされていることを確認してください。

手順

  1. 競合するゲートウェイを確認します。

    コマンドの例

    $ oc get gateway -A -o jsonpath='{range .items[*]}{@.metadata.namespace}{"/"}{@.metadata.name}{" "}{@.spec.servers}{"\n"}{end}' | column -t
    Copy to Clipboard Toggle word wrap

    出力例

    knative-serving/knative-ingress-gateway  [{"hosts":["*"],"port":{"name":"https","number":443,"protocol":"HTTPS"},"tls":{"credentialName":"wildcard-certs","mode":"SIMPLE"}}]
    knative-serving/knative-local-gateway    [{"hosts":["*"],"port":{"name":"http","number":8081,"protocol":"HTTP"}}]
    Copy to Clipboard Toggle word wrap

    このコマンドは、knative-serving 内の Gateways と別の Service Mesh インスタンスの一部である Gateways を除き、port: 443hosts: ["*"] をバインドする Gateway を返してはなりません。

    注記

    Serverless が属するメッシュは個別である必要があり、できれば Serverless ワークロード専用に予約されている必要があります。これは、Gateways などの追加設定が Serverless ゲートウェイ knative-local-gateway および knative-ingress-gateway に干渉する可能性があるためです。Red Hat OpenShift Service Mesh では、1 つのゲートウェイのみが同じポート (port: 443) 上でワイルドカードホストバインディング (hosts: ["*"]) を要求できます。別のゲートウェイがすでにこの設定をバインドしている場合は、Serverless ワークロード用に別のメッシュを作成する必要があります。

1.3.3.2. Service Mesh 3.x のインストールおよび設定

必要な Istio コンポーネント、ゲートウェイ、および Knative Serving リソースをインストールおよび設定することで、Service Mesh 3.x を Serverless と統合できます。これらのリソースが設定されると、Istio で Knative Serving インスタンスをデプロイし、サーバーレスワークロードが Service Mesh 環境内で実行されるようにできます。

手順

  1. 次の設定で、istio-system namespace に Istio リソースを作成します。

    apiVersion: sailoperator.io/v1
    kind: Istio
    metadata:
      name: default
    spec:
      values:
        meshConfig:
          defaultConfig:
            terminationDrainDuration: 35s
      updateStrategy:
        inactiveRevisionDeletionGracePeriodSeconds: 30
        type: InPlace
      namespace: istio-system
      version: v1.26-latest
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行して、istio-system というプロジェクトを作成します。

    $ oc new-project istio-system
    Copy to Clipboard Toggle word wrap
  3. 次のコマンドを実行して、Istio カスタムリソース (CR) を適用します。

    $ oc apply -f istio.yaml
    Copy to Clipboard Toggle word wrap
  4. 次の設定で、istio-cni namespace に IstioCNI リソースを作成します。

    apiVersion: sailoperator.io/v1
    kind: IstioCNI
    metadata:
      name: default
    spec:
      namespace: istio-cni
      version: v1.26-latest
    Copy to Clipboard Toggle word wrap
  5. 以下のコマンドを実行して istio-cni というプロジェクトを作成します。

    $ oc new-project istio-cni
    Copy to Clipboard Toggle word wrap
  6. 次のコマンドを実行して、IstioCNI CR を適用します。

    $ oc apply -f istio-cni.yaml
    Copy to Clipboard Toggle word wrap
  7. 次の設定で、gateway-deploy.yaml という名前のファイルを作成します。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: knative-istio-ingressgateway
      namespace: knative-serving-ingress
    spec:
      selector:
        matchLabels:
          knative: ingressgateway
      template:
        metadata:
          annotations:
            inject.istio.io/templates: gateway
          labels:
            knative: ingressgateway
            sidecar.istio.io/inject: "true"
        spec:
          containers:
            - name: istio-proxy
              image: auto
    
    ---
    # Set up roles to allow reading credentials for TLS
    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: istio-ingressgateway-sds
      namespace: knative-serving-ingress
    rules:
      - apiGroups: [""]
        resources: ["secrets"]
        verbs: ["get", "watch", "list"]
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: istio-ingressgateway-sds
      namespace: knative-serving-ingress
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: Role
      name: istio-ingressgateway-sds
    subjects:
      - kind: ServiceAccount
        name: default
    Copy to Clipboard Toggle word wrap
    • spec.template.metadata.annotations.inject.istio.io/templates は、デフォルトのサイドカーテンプレートではなく、ゲートウェイインジェクションテンプレートを指定します。
    • spec.template.metadata.labels.knative は、ゲートウェイの一意のラベルを定義します。これは、ゲートウェイがこのワークロードを選択できるようにするために必要です。
    • spec.template.metadata.labels.sidecar.istio.io/inject は、ゲートウェイの挿入を有効にします。
    • spec.template.spec.containers.image は、Pod が起動するたびにイメージが自動的に更新されるようにします。
  8. 次のコマンドを実行して、リソースを適用します。

    $ oc apply -f gateway-deploy.yaml
    Copy to Clipboard Toggle word wrap
  9. 次の設定で serving-gateways.yaml という名前のファイルを作成し、Knative Serving コンポーネントのゲートウェイリソースを作成します。

    ###########################################################
    # cluster external
    ###########################################################
    apiVersion: v1
    kind: Service
    metadata:
      name: knative-istio-ingressgateway
      namespace: knative-serving-ingress
    spec:
      type: ClusterIP
      selector:
        knative: ingressgateway
      ports:
        - name: http2
          port: 80
          targetPort: 8080
        - name: https
          port: 443
          targetPort: 8443
    ---
    apiVersion: networking.istio.io/v1beta1
    kind: Gateway
    metadata:
      name: knative-ingress-gateway
      namespace: knative-serving
    spec:
      selector:
        knative: ingressgateway
      servers:
        - hosts:
            - '*'
          port:
            name: https
            number: 443
            protocol: HTTPS
          tls:
            credentialName: wildcard-certs
            mode: SIMPLE
    ---
    ###########################################################
    # cluster local
    ###########################################################
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        experimental.istio.io/disable-gateway-port-translation: "true"
      name: knative-local-gateway
      namespace: knative-serving-ingress
    spec:
      ports:
        - name: http2
          port: 80
          protocol: TCP
          targetPort: 8081
      selector:
        knative: ingressgateway
      type: ClusterIP
    ---
    apiVersion: networking.istio.io/v1beta1
    kind: Gateway
    metadata:
      name: knative-local-gateway
      namespace: knative-serving
    spec:
      selector:
        knative: ingressgateway
      servers:
        - hosts:
            - '*'
          port:
            name: http
            number: 8081
            protocol: HTTP
    Copy to Clipboard Toggle word wrap
  10. 次のコマンドを実行して、リソースを適用します。

    $ oc apply -f serving-gateways.yaml
    Copy to Clipboard Toggle word wrap
  11. 次の設定で、istio-system namespace に PeerAuthentication リソースを作成し、メッシュ全体で mTLS を適用します。

    apiVersion: security.istio.io/v1
    kind: PeerAuthentication
    metadata:
      name: mesh-mtls
      namespace: istio-system
    spec:
      mtls:
        mode: STRICT
    Copy to Clipboard Toggle word wrap
  12. 次のコマンドを実行して、リソースを適用します。

    $ oc apply -f peerauth.yaml
    Copy to Clipboard Toggle word wrap

1.3.3.3. Serverless のインストールと設定

Service Mesh をインストールした後、特定の設定で Serverless をインストールする必要があります。

手順

  1. 次の KnativeServing カスタムリソースを使用して Knative Serving をインストールします。これにより、Istio 統合が有効になります。

    knative-serving-config.yaml 設定ファイルの例

    apiVersion: operator.knative.dev/v1beta1
    kind: KnativeServing
    metadata:
      name: knative-serving
      namespace: knative-serving
      annotations:
        serverless.openshift.io/disable-istio-net-policies-generation: "true"
    spec:
      ingress:
        istio:
          enabled: true 
    1
    
      deployments: 
    2
    
      - name: activator
        labels:
          "sidecar.istio.io/inject": "true"
        annotations:
          "sidecar.istio.io/rewriteAppHTTPProbers": "true"
      - name: autoscaler
        labels:
          "sidecar.istio.io/inject": "true"
        annotations:
          "sidecar.istio.io/rewriteAppHTTPProbers": "true"
      config:
        istio: 
    3
    
          gateway.knative-serving.knative-ingress-gateway: istio-ingressgateway.<your-istio-namespace>.svc.cluster.local
          local-gateway.knative-serving.knative-local-gateway: knative-local-gateway.<your-istio-namespace>.svc.cluster.local
    Copy to Clipboard Toggle word wrap

    1
    Istio 統合を有効にします。
    2
    Knative Serving データプレーン Pod のサイドカーの注入を有効にします。
    3
    istio が istio-system namespace で実行されていない場合は、これら 2 つのフラグを正しい namespace で設定する必要があります。
  2. KnativeServing リソースを適用します。

    $ oc apply -f knative-serving-config.yaml
    Copy to Clipboard Toggle word wrap
  3. 次の KnativeEventing オブジェクトを使用して Knative Eventing をインストールします。これにより、Istio 統合が有効になります。

    knative-eventing-config.yaml 設定ファイルの例

    apiVersion: operator.knative.dev/v1beta1
    kind: KnativeEventing
    metadata:
      name: knative-eventing
      namespace: knative-eventing
      annotations:
        serverless.openshift.io/disable-istio-net-policies-generation: "true"
    spec:
      config:
        features:
          istio: enabled
      workloads:
        - name: pingsource-mt-adapter
          labels:
            sidecar.istio.io/inject: "true"
          annotations:
            sidecar.istio.io/rewriteAppHTTPProbers: "true"
    
        - name: imc-dispatcher
          labels:
            sidecar.istio.io/inject: "true"
          annotations:
            sidecar.istio.io/rewriteAppHTTPProbers: "true"
    
        - name: mt-broker-ingress
          labels:
            sidecar.istio.io/inject: "true"
          annotations:
            sidecar.istio.io/rewriteAppHTTPProbers: "true"
    
        - name: mt-broker-filter
          labels:
            sidecar.istio.io/inject: "true"
          annotations:
            sidecar.istio.io/rewriteAppHTTPProbers: "true"
    
        - name: job-sink
          labels:
            sidecar.istio.io/inject: "true"
          annotations:
            sidecar.istio.io/rewriteAppHTTPProbers: "true"
    Copy to Clipboard Toggle word wrap

    • spec.config.features.istio は、Eventing Istio コントローラーが、InMemoryChannel または KafkaChannel サービスごとに DestinationRule を作成できるようにします。
    • spec.workload は、Knative Eventing Pod のサイドカー挿入を有効にします。
  4. KnativeEventing リソースを適用します。

    $ oc apply -f knative-eventing-config.yaml
    Copy to Clipboard Toggle word wrap
  5. 次の KnativeKafka カスタムリソースを使用して Knative Kafka をインストールします。これにより、Istio 統合が有効になります。

    knative-kafka-config.yaml 設定ファイルの例

    apiVersion: operator.serverless.openshift.io/v1alpha1
    kind: KnativeKafka
    metadata:
      name: knative-kafka
      namespace: knative-eventing
    spec:
      channel:
        enabled: true
        bootstrapServers: <bootstrap_servers> 
    1
    
      source:
        enabled: true
      broker:
        enabled: true
        defaultConfig:
          bootstrapServers: <bootstrap_servers> 
    2
    
          numPartitions: <num_partitions>
          replicationFactor: <replication_factor>
        sink:
          enabled: true
      workloads: 
    3
    
      - name: kafka-controller
        labels:
          "sidecar.istio.io/inject": "true"
        annotations:
          "sidecar.istio.io/rewriteAppHTTPProbers": "true"
      - name: kafka-broker-receiver
        labels:
          "sidecar.istio.io/inject": "true"
        annotations:
          "sidecar.istio.io/rewriteAppHTTPProbers": "true"
      - name: kafka-broker-dispatcher
        labels:
          "sidecar.istio.io/inject": "true"
        annotations:
          "sidecar.istio.io/rewriteAppHTTPProbers": "true"
      - name: kafka-channel-receiver
        labels:
          "sidecar.istio.io/inject": "true"
        annotations:
          "sidecar.istio.io/rewriteAppHTTPProbers": "true"
      - name: kafka-channel-dispatcher
        labels:
          "sidecar.istio.io/inject": "true"
        annotations:
          "sidecar.istio.io/rewriteAppHTTPProbers": "true"
      - name: kafka-source-dispatcher
        labels:
          "sidecar.istio.io/inject": "true"
        annotations:
          "sidecar.istio.io/rewriteAppHTTPProbers": "true"
      - name: kafka-sink-receiver
        labels:
          "sidecar.istio.io/inject": "true"
        annotations:
          "sidecar.istio.io/rewriteAppHTTPProbers": "true"
    Copy to Clipboard Toggle word wrap

    1 2
    Apache Kafka クラスター URL (例: my-cluster-kafka-bootstrap.kafka:9092)。
    3
    Knative Kafka Pod のサイドカーインジェクションを有効にします。
  6. KnativeEventing オブジェクトを適用します。

    $ oc apply -f knative-kafka-config.yaml
    Copy to Clipboard Toggle word wrap
  7. ServiceEntry をインストールして、KnativeKafka コンポーネントと Apache Kafka クラスターとの間の通信を Service Mesh に通知します。

    kafka-cluster-serviceentry.yaml 設定ファイルの例

    apiVersion: networking.istio.io/v1alpha3
    kind: ServiceEntry
    metadata:
      name: kafka-cluster
      namespace: knative-eventing
    spec:
      hosts: 
    1
    
        - <bootstrap_servers_without_port>
      exportTo:
        - "."
      ports: 
    2
    
        - number: 9092
          name: tcp-plain
          protocol: TCP
        - number: 9093
          name: tcp-tls
          protocol: TCP
        - number: 9094
          name: tcp-sasl-tls
          protocol: TCP
        - number: 9095
          name: tcp-sasl-tls
          protocol: TCP
        - number: 9096
          name: tcp-tls
          protocol: TCP
      location: MESH_EXTERNAL
      resolution: NONE
    Copy to Clipboard Toggle word wrap

    1
    Apache Kafka クラスターホストのリスト (例: my-cluster-kafka-bootstrap.kafka)。
    2
    Apache Kafka クラスターリスナーポート。
    注記

    spec.ports にリストされているポートは、TPC ポートの例です。実際の値は、Apache Kafka クラスターの設定方法によって異なります。

  8. ServiceEntry リソースを適用します。

    $ oc apply -f kafka-cluster-serviceentry.yaml
    Copy to Clipboard Toggle word wrap

1.3.3.4. Service Mesh 3.x の統合設定の確認

Serverless で Service Mesh 3.x をインストールして設定した後に、統合が正常に動作していることを確認できます。この検証により、Service Mesh コンポーネント、ゲートウェイ、および Knative Serving 設定が適切に設定され、サーバーレスワークロードがメッシュ内で安全に通信できるようになります。

folloiwng テストは、単純な Knative サービスをデプロイし、サイドカーインジェクション、相互トランスポート層セキュリティー(mTLS)の互換性、および Ingress ゲートウェイを介したパススルーを検証します。

手順

  1. 次のコマンドを入力して、Istio コンポーネントが実行されていることを確認します。

    $ oc get pods -n istio-system
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを入力して、Istio CNI コンポーネントが実行されていることを確認します。

    $ oc get pods -n istio-cni
    Copy to Clipboard Toggle word wrap
  3. 次のコマンドを入力して、Knative コンポーネントが実行されていることを確認します。

    $ oc get pods -n knative-serving
    Copy to Clipboard Toggle word wrap
  4. 以下のコマンドを入力して、ゲートウェイサービスが存在することを確認します。

    $ oc get svc -n knative-serving-ingress
    Copy to Clipboard Toggle word wrap
  5. 次のコマンドを入力して、テスト namespace を作成します。

    $ oc new-project demo
    Copy to Clipboard Toggle word wrap
  6. サンプル Knative サービスマニフェストを作成し、以下の設定で hello-service.yaml として保存します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        serving.knative.openshift.io/enablePassthrough: "true"
      name: hello-service
      namespace: demo
    spec:
      template:
        metadata:
          labels:
            sidecar.istio.io/inject: "true"
          annotations:
            sidecar.istio.io/rewriteAppHTTPProbers: "true"
        spec:
          containers:
            - image: quay.io/openshift-knative/showcase
    Copy to Clipboard Toggle word wrap
    • serving.knative.openshift.io/enablePassthrough: "true" は、Istio ゲートウェイを介した TLS パススルーを許可するように Ingress を設定します。
    • sidecar.istio.io/inject: "true" により、Istio プロキシーが挿入されます。
    • sidecar.istio.io/rewriteAppHTTPProbers: "true" は、Knative ヘルスプローブを mTLS と連携させます。
  7. 以下のコマンドを入力して Knative サービスを適用します。

    $ oc apply -f hello-service.yaml
    Copy to Clipboard Toggle word wrap
  8. 次のコマンドを入力して、サイドカーの挿入および Pod の準備状態を確認します。

    $ oc get pods -n demo
    Copy to Clipboard Toggle word wrap
    $ oc get pod -n demo -l serving.knative.dev/service=hello-service -o jsonpath='{.items[0].spec.containers[*].name}{"\n"}'
    Copy to Clipboard Toggle word wrap
  9. 次のコマンドを入力して、サービス URL を取得します。

    $ oc get ksvc hello-service -n demo -o jsonpath='{.status.url}{"\n"}'
    Copy to Clipboard Toggle word wrap
  10. 以下のコマンドのいずれかを入力して、サービスを呼び出します。

    • オプション A: Ingress ドメインに信頼できる証明書が設定されている場合は、フロングリングコマンドを入力します。

      $ curl https://$(oc get ksvc hello-service -n demo -o jsonpath='{.status.url}' | sed 's#https://##')
      Copy to Clipboard Toggle word wrap
    • オプション B: カスタム証明書または自己署名証明書を使用している場合は、次のコマンドを入力して、-k を使用するか、CA ファイルに --cacert <path> を指定します。

      $ curl  --cacert <path_to_your_CA_file> https://$(oc get ksvc hello-service -n demo -o jsonpath='{.status.url}' | sed 's#https://##')
      Copy to Clipboard Toggle word wrap

      次の例のような出力が表示されます。

      {"artifact":"knative-showcase","greeting":"Welcome"}
      Copy to Clipboard Toggle word wrap

      JSON の正確な値が変わる可能性がありますが、応答では knative-showcase アプリケーションが正常に実行されていることを示すはずです。

1.3.4. デフォルトのネットワークポリシーを無効にする

OpenShift Serverless Operator はデフォルトでネットワークポリシーを生成します。デフォルトのネットワークポリシー生成を無効にするには、KnativeEventing および KnativeServing カスタムリソース (CR) に serverless.openshift.io/disable-istio-net-policies-generation アノテーションを追加します。

重要

OpenShift Serverless Operator は、必要なネットワークポリシーをデフォルトで生成します。ただし、Service Mesh 3.x のサポートは現在テクノロジープレビューです。これらのデフォルトのネットワークポリシーには、Service Mesh 3.x のネットワークの要件は考慮されていません。その結果、これらのポリシーが適用されると、新しく作成された Knative サービス(ksvc)が Ready 状態にならない場合があります。

この問題を回避するには、KnativeServing および KnativeEventing カスタムリソースの両方で serverless.openshift.io/disable-istio-net-policies-generation アノテーションを true に設定して、Istio 関連のネットワークポリシーの自動生成を無効にする必要があります。

前提条件

  • クラスターにアクセスするための次のいずれかの権限がある。

    • OpenShift Container Platform のクラスター管理者パーミッション
    • Red Hat OpenShift Service on AWS のクラスター管理者パーミッション
    • OpenShift Dedicated の専用管理者権限
  • OpenShift CLI (oc) がインストールされている。
  • アプリケーションやその他のワークロードを作成するための適切なロールと権限を持つプロジェクトにアクセスできます。
  • クラスターに OpenShift Serverless Operator、Knative Serving、および Knative Eventing をインストールしている。
  • mTLS 機能を有効にして Red Hat OpenShift Service Mesh をインストールしている。

手順

  • Knative カスタムリソースに serverless.openshift.io/disable-istio-net-policies-generation: "true" アノテーションを追加します。

    注記

    OpenShift Serverless Operator は、必要なネットワークポリシーをデフォルトで生成します。ServiceMeshControlPlanemanageNetworkPolicy: false で設定する場合は、適切なイベント配信を確保するために、デフォルトのネットワークポリシー生成を無効にする必要があります。デフォルトのネットワークポリシー生成を無効にするには、KnativeEventing および KnativeServing カスタムリソース (CR) に serverless.openshift.io/disable-istio-net-policies-generation アノテーションを追加します。

    1. 次のコマンドを実行して、KnativeEventing CR にアノテーションを付けます。

      $ oc edit KnativeEventing -n knative-eventing
      Copy to Clipboard Toggle word wrap

      KnativeEventing CR の例

      apiVersion: operator.knative.dev/v1beta1
      kind: KnativeEventing
      metadata:
        name: knative-eventing
        namespace: knative-eventing
        annotations:
          serverless.openshift.io/disable-istio-net-policies-generation: "true"
      Copy to Clipboard Toggle word wrap

    2. 次のコマンドを実行して、KnativeServing CR にアノテーションを付けます。

      $ oc edit KnativeServing -n knative-serving
      Copy to Clipboard Toggle word wrap

      KnativeServing CR の例

      apiVersion: operator.knative.dev/v1beta1
      kind: KnativeServing
      metadata:
        name: knative-serving
        namespace: knative-serving
        annotations:
          serverless.openshift.io/disable-istio-net-policies-generation: "true"
      Copy to Clipboard Toggle word wrap

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat