6.4.3. サービスメッシュと OpenShift Serverless の統合
Kourier をデフォルトのイングレスとして使用せずに、Service Mesh を OpenShift Serverless と統合できます。このため、以下の手順を完了する前に、Knative Serving コンポーネントをインストールしないでください。Knative Serving をサービスメッシュと統合するために KnativeServing
カスタムリソース定義 (CRD) を作成する際に必要な追加の手順があります。これは、一般的な Knative Serving のインストール手順では説明されていません。この手順は、サービスメッシュをデフォルトとして統合し、OpenShift Serverless インストールの唯一のイングレスとして統合する場合に役立ちます。
前提条件
- クラスター管理者のアクセスを持つ OpenShift Container Platform アカウントを使用できる。
- OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションを持つプロジェクトにアクセスできる。
Red Hat OpenShift Service Mesh Operator をインストールし、
istio-system
namespace にServiceMeshControlPlane
リソースを作成します。mTLS 機能を使用する場合は、ServiceMeshControlPlane
リソースのspec.security.dataPlane.mtls
フィールドもtrue
に設定する必要があります。重要Service Mesh での OpenShift Serverless の使用は、Red Hat OpenShift Service Mesh バージョン 2.0.5 以降でのみサポートされます。
- OpenShift Serverless Operator をインストールします。
-
OpenShift CLI (
oc
) をインストールしている。
手順
サービスメッシュと統合する必要のある namespace をメンバーとして
ServiceMeshMemberRoll
オブジェクトに追加します。apiVersion: maistra.io/v1 kind: ServiceMeshMemberRoll metadata: name: default namespace: istio-system spec: members: 1 - knative-serving - <namespace>
- 1
- サービスメッシュと統合する namespace の一覧。
重要この namespace の一覧には、
knative-serving
namespace が含まれる必要があります。ServiceMeshMemberRoll
リソースを適用します。$ oc apply -f <filename>
サービスメッシュがトラフィックを受け入れることができるように、必要なゲートウェイを作成します。
HTTP を使用した
knative-local-gateway
オブジェクトの例apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: knative-ingress-gateway namespace: knative-serving spec: selector: istio: ingressgateway servers: - port: number: 443 name: https protocol: HTTPS hosts: - "*" tls: mode: SIMPLE credentialName: <wildcard_certs> 1 --- apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: knative-local-gateway namespace: knative-serving spec: selector: istio: ingressgateway servers: - port: number: 8081 name: http protocol: HTTP 2 hosts: - "*" --- apiVersion: v1 kind: Service metadata: name: knative-local-gateway namespace: istio-system labels: experimental.istio.io/disable-gateway-port-translation: "true" spec: type: ClusterIP selector: istio: ingressgateway ports: - name: http2 port: 80 targetPort: 8081
HTTPS を使用した
knative-local-gateway
オブジェクトの例apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: knative-local-gateway namespace: knative-serving spec: selector: istio: ingressgateway servers: - port: number: 443 name: https protocol: HTTPS hosts: - "*" tls: mode: SIMPLE credentialName: <wildcard_certs>
Gateway
リソースを適用します。$ oc apply -f <filename>
以下の
KnativeServing
カスタムリソース定義 (CRD) を作成して Knative Serving をインストールします。これにより、Istio 統合も有効化されます。apiVersion: operator.knative.dev/v1alpha1 kind: KnativeServing metadata: name: knative-serving namespace: knative-serving spec: ingress: istio: enabled: true 1 deployments: 2 - name: activator annotations: "sidecar.istio.io/inject": "true" "sidecar.istio.io/rewriteAppHTTPProbers": "true" - name: autoscaler annotations: "sidecar.istio.io/inject": "true" "sidecar.istio.io/rewriteAppHTTPProbers": "true"
KnativeServing
リソースを適用します。$ oc apply -f <filename>
サイドカー挿入が有効で、パススルールートを使用する Knative サービスを作成します。
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: <service_name> namespace: <namespace> 1 annotations: serving.knative.openshift.io/enablePassthrough: "true" 2 spec: template: metadata: annotations: sidecar.istio.io/inject: "true" 3 sidecar.istio.io/rewriteAppHTTPProbers: "true" spec: containers: - image: <image_url>
Service
リソースを適用します。$ oc apply -f <filename>
検証
CA によって信頼されるようになった安全な接続を使用して、サーバーレスアプリケーションにアクセスします。
$ curl --cacert root.crt <service_url>
コマンドの例
$ curl --cacert root.crt https://hello-default.apps.openshift.example.com
出力例
Hello Openshift!