動かざることバグの如し

近づきたいよ 君の理想に

Service、Gateway、VirtualServiceの違い

k8sリソースの種類多すぎ問題

紛らわしいService、Gateway、VirtualServiceについてそれぞれメモ

Service

Serviceは、Kubernetesクラスタ内のマイクロサービス間の通信を制御するために使用されるリソースです。Serviceは、1つ以上のPodをグループ化し、グループ内のPodに対する一意のDNS名とIPアドレスを提供します。また、Serviceは、クラスタ内の他のマイクロサービスからアクセス可能なポートを公開することができます。Serviceは、ClusterIP、NodePort、LoadBalancer、ExternalNameの4つのタイプがあります。

Serviceがない場合、マイクロサービスは直接IPアドレスを使用して通信する必要があります。これは、スケーラビリティやメンテナンス性の観点から好ましくなく、また、Serviceが提供するDNS名とIPアドレスを利用することで、より柔軟なリソース管理が可能となります。Serviceを使用することで、マイクロサービス間の通信の可用性や耐久性を向上させることができます。

Gateway

Gatewayは、IstioなどのService Meshにおいて使用されるリソースで、外部からService Meshにアクセスするための入り口を提供するために使用されます。Gatewayは、ホスト名、ポート、プロトコルなどを指定し、Service Mesh内のServiceに接続するためのルールを定義します。

Gatewayがない場合、外部からService Meshへのアクセスが制限されます。これは、Service Mesh内のマイクロサービスを外部に公開する必要がある場合に不便です。Gatewayを使用することで、Service Mesh内のマイクロサービスを外部に公開し、外部からのアクセスを制御することができます。

VirtualService

VirtualServiceは、IstioなどのService Meshにおいて使用されるリソースで、リクエストルーティングを制御するために使用されます。VirtualServiceは、マッチ条件とアクションを定義し、リクエストを対応するServiceにルーティングするためのルールを設定します。VirtualServiceは、ヘッダー、パス、HTTPメソッドなどのマッチ条件を指定できます。

VirtualServiceがない場合、リクエストのルーティングが固定されてしまい、マイクロサービスの可用性やメンテナンス性の向上が困難となります。VirtualServiceを使用することで、リクエストのルーティングを柔軟に制御し、マイクロサービスの可用性やメンテナンス性を向上させることができます。