第4章 OpenShift Serverless アプリケーションの設定
4.1. Serving のマルチコンテナーサポート
単一の Knative サービスを使用してマルチコンテナー Pod をデプロイできます。この方法は、アプリケーションの役割を小さく特化した部分に分離する場合に便利です。
4.1.1. マルチコンテナーサービスの設定
マルチコンテナーのサポートはデフォルトで有効になっています。サービス内の複数のコンテナーを指定してマルチコンテナー Pod を作成できます。
手順
サービスを変更して、追加のコンテナーを追加します。リクエストを処理できるコンテナーは 1 つだけであるため、
ポート
は 1 つのコンテナーにのみ指定してください。以下は、2 つのコンテナーの設定例です。複数のコンテナー設定
apiVersion: serving.knative.dev/v1 kind: Service ... spec: template: spec: containers: - name: first-container 1 image: gcr.io/knative-samples/helloworld-go ports: - containerPort: 8080 2 - name: second-container 3 image: gcr.io/knative-samples/helloworld-java
4.1.2. マルチコンテナーサービスの調査
複数のコンテナーに対して Readines プローブと Liveness プローブを指定できます。この機能はデフォルトでは有効になっていないため、KnativeServing
カスタムリソース (CR) を使用して設定する必要があります。
手順
KnativeServing
CR でmulti-container-probing
機能を有効にして、サービスのマルチコンテナープローブを設定します。マルチコンテナープロービング設定
... spec: config: features: "multi-container-probing": enabled 1 ...
- 1
- マルチコンテナープローブ機能が有効になる
更新された
KnativeServing
CR を適用します。$ oc apply -f <filename>
指定されたプローブが含まれるようにマルチコンテナーサービスを変更します。
マルチコンテナープロービング
apiVersion: serving.knative.dev/v1 kind: Service ... spec: template: spec: containers: - name: first-container image: ghcr.io/knative/helloworld-go:latest ports: - containerPort: 8080 readinessProbe: 1 httpGet: port: 8080 - name: second-container image: gcr.io/knative-samples/helloworld-java readinessProbe: 2 httpGet: port: 8090