ルートの設定
このセクションでは、ブルー/グリーンデプロイメントやカナリアスタイルのデプロイメントのための重み付けルーティングを使用した、高度なトラフィック管理にAmazon VPC Latticeを使用する方法を示します。
配送オプションに「Lattice」というプレフィックスを追加したcheckoutマイクロサービスの修正版をデプロイしましょう。Kustomizeを使用して、この新しいバージョンを新しい名前空間(checkoutv2)にデプロイします。
checkoutv2名前空間には、アプリケーションの2番目のバージョンが含まれるようになりましたが、checkout名前空間の同じredisインスタンスを使用しています。
NAME READY STATUS RESTARTS AGE
checkout-854cd7cd66-s2blp 1/1 Running 0 26s
次に、HTTPRouteリソースを作成して重み付けルーティングがどのように機能するかを実演しましょう。まず、Latticeが私たちのcheckoutサービスで適切なヘルスチェックを実行する方法を指示するTargetGroupPolicyを作成します:
apiVersion: application-networking.k8s.aws/v1alpha1
kind: TargetGroupPolicy
metadata:
name: checkout-policy
namespace: checkout
spec:
targetRef:
group: ""
kind: Service
name: checkout
protocol: HTTP
protocolVersion: HTTP1
healthCheck:
enabled: true
intervalSeconds: 10
timeoutSeconds: 1
healthyThresholdCount: 3
unhealthyThresholdCount: 2
path: "/health"
port: 8080
protocol: HTTP
protocolVersion: HTTP1
statusMatch: "200"
targetRefはこのポリシーをcheckoutサービスに適用します
healthCheckセクションの設定はVPC Latticeがサービスの健全性をどのように監視するかを定義します
intervalSeconds: 10:10秒ごとにチェック
timeoutSeconds: 1:チェックごとに1秒のタイムアウト
healthyThresholdCount: 3:3回連続成功=健全
unhealthyThresholdCount: 2:2回連続失敗=不健全
path: "/health":ヘルスチェックエンドポイントのパス
port: 8080:ヘルスチェックエンドポイントのポート
protocol: HTTP:ヘルスチェックエンドポイントのプロトコル
statusMatch: "200":HTTP 200レスポンスを期待
このリソースを適用します:
次に、checkoutv2に75%のトラフィックを、残りの25%のトラフィックをcheckoutに分散するKubernetes HTTPRouteルートを作成します:
apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
metadata:
name: checkoutroute
namespace: checkout
spec:
parentRefs:
- name: ${EKS_CLUSTER_NAME}
sectionName: http
rules:
- backendRefs:
- name: checkout
namespace: checkout
kind: Service
port: 80
weight: 25
- name: checkout
namespace: checkoutv2
kind: Service
port: 80
weight: 75
parentRefsはこのHTTPRouteルートを${EKS_CLUSTER_NAME}という名前のゲートウェイのhttpリスナーに接続します
このbackendRefsルールはトラフィックの25%をcheckout名前空間のcheckoutサービスのポート80に送信します
このbackendRefsルールはトラフィックの75%をcheckoutv2名前空間のcheckoutサービスのポート80に送信します
このリソースを適用します:
関連するリソースの作成には2〜3分かかることがあります。完了を待つために次のコマンドを実行してください:
完了すると、HTTPRouteのDNS名をHTTPRouteアノテーションapplication-networking.k8s.aws/lattice-assigned-domain-nameから見つけることができます:
Name: checkoutroute
Namespace: checkout
Labels: <none>
Annotations: application-networking.k8s.aws/lattice-assigned-domain-name:
checkoutroute-checkout-0d8e3f4604a069e36.7d67968.vpc-lattice-svcs.us-east-2.on.aws
API Version: gateway.networking.k8s.io/v1beta1
Kind: HTTPRoute
...
これで、VPC LatticeコンソールのLatticeリソースの下に作成された関連サービスを確認できます。
Amazon VPC Latticeは、異なるVPCを含む任意のソースからこのサービスへのトラフィックを自動的にリダイレクトできるようになりました!また、他のVPC Latticeの機能も十分に活用できます。