Istio は、VirtualService や Gateway などのカスタムリソースを使用して Kubernetes API を拡張します。Alibaba Cloud Service Mesh (ASM) SDK を使用すると、Java または Go のコードでこれらのリソースを直接作成、照会、更新、削除できます。
前提条件
開始する前に、次の前提条件を満たしていることを確認してください。
ASM インスタンスを作成済みであること
ASM インスタンスに Container Service for Kubernetes (ACK) クラスターを追加済みであること
ACK クラスターに Bookinfo サンプルアプリケーションをデプロイ済みであること
ACK クラスターにイングレスゲートウェイサービスをデプロイ済みであること
VirtualService と Gateway の定義
ASM SDK を統合する前に、Bookinfo アプリケーションへの外部トラフィックをルーティングする Istio リソースを定義します。
VirtualService
virtualService.yaml という名前のファイルを作成します:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: bookinfo
spec:
hosts:
- "*"
gateways:
- bookinfo-gateway
http:
- match:
- uri:
exact: /productpage
- uri:
prefix: /static
- uri:
exact: /login
- uri:
exact: /logout
- uri:
prefix: /api/v1/products
route:
- destination:
host: productpage
port:
number: 9080この VirtualService は、受信した HTTP リクエストをポート 9080 の productpage Service にルーティングします。製品ページ本体、静的アセット、ログインおよびログアウトエンドポイント、製品 API の 5 つの URI パターンにマッチします。
Gateway
gateway.yaml というファイルを作成します:
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: bookinfo-gateway
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*"この Gateway は、ポート 80 のイングレスゲートウェイにバインドし、すべてのホストからの HTTP トラフィックを受け入れます。VirtualService は、この Gateway を名前 (bookinfo-gateway) で参照します。
ASM SDK の統合
VirtualService と Gateway を定義したら、ASM SDK を使用してコードでこれらのリソースを管理します。
言語 | ガイド |
Java | |
Go |