OpenShift Service Mesh 3.0 is a Technology Preview feature only
Technology Preview features are not supported with Red Hat production service level agreements (SLAs) and might not be functionally complete. Red Hat does not recommend using them in production. These features provide early access to upcoming product features, enabling customers to test functionality and provide feedback during the development process. This documentation is a work in progress and might not be complete or fully tested.2.2. クラスター外のトラフィックにサービスを公開することについて
OpenShift クラスターの外部からのトラフィックがメッシュ内のサービスにアクセスできるようにするには、Service
タイプを LoadBalancer
に設定するか、OpenShift Router を使用して、ゲートウェイプロキシーを公開する必要があります。
Kubernetes ロードバランシングを使用して、受信トラフィックを受信ゲートウェイ経由で直接処理すると、データ暗号化に関連するレイテンシーを削減できます。受信ゲートウェイで暗号化を管理することで、メッシュ内で発生しがちな中間的な復号化と再暗号化の処理を回避し、レイテンシーを削減できます。このアプローチにより、メッシュトラフィックは 1 回だけ暗号化および復号化できるため、一般的にはより効率的となります。
OpenShift Router は Ingress トラフィックを管理するための標準的なアプローチを提供し、ルーターを使用して同じ方法ですべてのクラスター Ingress トラフィックの証明書を管理できます。ただし、OpenShift Router は、受信トラフィックとメッシュアプリケーションの間に追加のホップを導入します。通常、トラフィックをルーターで復号し、サービスメッシュ Ingress ゲートウェイで再暗号化することでルーティングしますが、これによりレイテンシーが発生します。
2.2.1. OpenShift Routes を使用してゲートウェイをクラスター外のトラフィックに公開する
OpenShift Routes を使用すると、ゲートウェイをクラスター外部のトラフィックに公開できます。このアプローチは、ゲートウェイをクラスター外部のトラフィックに公開する必要がある場合に、Kubernetes ロードバランサーサービスの代わりに使用できます。
前提条件
- Istio Gateway と VirtualService リソースを使用してサービスを公開する の手順を完了している。
手順
次のコマンドを実行して、
Service
タイプがClusterIP
に設定されていることを確認します。$ oc patch service -n -p '{"spec": {"type": "ClusterIP"}}'
httpbin
サービスのRoute
を定義するhttpbin-route.yaml
という名前の YAML ファイルを作成します。apiVersion: route.openshift.io/v1 kind: Route metadata: name: httpbin namespace: <gateway_namespace> spec: host: httpbin.example.com port: targetPort: http2 to: kind: Service name: <gateway_name> weight: 100 wildcardPolicy: None
以下のコマンドを実行して、YAML ファイルを適用します。
$ oc apply -f httpbin-route.yaml
Ingress ルーターを介してクラスターの外部から
httpbin
サービスにアクセスできることを確認します。クラスターが実行されている環境に合わせて、INGRESS_HOST
変数を適切に設定してください。クラスターが AWS 上で実行されている場合は、次のコマンドを実行して
INGRESS_HOST
変数を設定します。$ INGRESS_HOST=$(oc get service router-default -n openshift-ingress -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
クラスターが GCP または Azure 上で実行されている場合は、次のコマンドを実行して
INGRESS_HOST
変数を設定します。$ INGRESS_HOST=$(oc get service router-default -n openshift-ingress -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
次のコマンドを実行して、Ingress ルーターのホストを使用して
httpbin
サービスにcurl
リクエストを送信します。$ curl -s -I -H Host:httpbin.example.com http://$INGRESS_HOST/headers
-
応答に
HTTP/1.1 200 OK
ステータスがあることを確認します。これは、リクエストが成功したことを示します。
関連情報