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 <gateway_name> -n <gateway_namespace> -p '{"spec": {"type": "ClusterIP"}}'
$ oc patch service <gateway_name> -n <gateway_namespace> -p '{"spec": {"type": "ClusterIP"}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow httpbin
サービスのRoute
を定義するhttpbin-route.yaml
という名前の YAML ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、YAML ファイルを適用します。
oc apply -f httpbin-route.yaml
$ oc apply -f httpbin-route.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ingress ルーターを介してクラスターの外部から
httpbin
サービスにアクセスできることを確認します。クラスターが実行されている環境に合わせて、INGRESS_HOST
変数を適切に設定してください。クラスターが AWS 上で実行されている場合は、次のコマンドを実行して
INGRESS_HOST
変数を設定します。INGRESS_HOST=$(oc get service router-default -n openshift-ingress -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
$ INGRESS_HOST=$(oc get service router-default -n openshift-ingress -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターが GCP または Azure 上で実行されている場合は、次のコマンドを実行して
INGRESS_HOST
変数を設定します。INGRESS_HOST=$(oc get service router-default -n openshift-ingress -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
$ INGRESS_HOST=$(oc get service router-default -n openshift-ingress -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Ingress ルーターのホストを使用して
httpbin
サービスにcurl
リクエストを送信します。curl -s -I -H Host:httpbin.example.com http://$INGRESS_HOST/headers
$ curl -s -I -H Host:httpbin.example.com http://$INGRESS_HOST/headers
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
応答に
HTTP/1.1 200 OK
ステータスがあることを確認します。これは、リクエストが成功したことを示します。