トラフィックルーティングのテスト
実際の環境では、カナリアデプロイメントは定期的に一部のユーザーに機能をリリースするために使用されます。このシナリオでは、人為的にトラフィックの75%を新しいバージョンのチェックアウトサービスにルーテ ィングしています。カートに異なるオブジェクトを入れて複数回チェックアウト手順を完了すると、ユーザーに2つのバージョンのアプリケーションが表示されるはずです。
まず、Kubernetes execを使用して、UIポッドからLatticeサービスURLが機能することを確認しましょう。これはHTTPRouteリソースのアノテーションから取得します:
~$export CHECKOUT_ROUTE_DNS="http://$(kubectl get httproute checkoutroute -n checkout -o json | jq -r '.metadata.annotations["application-networking.k8s.aws/lattice-assigned-domain-name"]')"
~$echo "Checkout Lattice DNS is $CHECKOUT_ROUTE_DNS"
~$POD_NAME=$(kubectl -n ui get pods -o jsonpath='{.items[0].metadata.name}')
~$kubectl exec $POD_NAME -n ui -- curl -s $CHECKOUT_ROUTE_DNS/health
{"status":"ok","info":{},"error":{},"details":{}}次に、UIコンポーネントのConfigMapをパッチして、UIサービスをVPC Latticeサービスエンドポイントに向けるようにします:
- Kustomize Patch
- ConfigMap/ui
- Diff
~/environment/eks-workshop/modules/networking/vpc-lattice/ui/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: ui
namespace: ui
data:
ENDPOINTS_CHECKOUT: "${CHECKOUT_ROUTE_DNS}"
apiVersion: v1
data:
ENDPOINTS_CHECKOUT: ${CHECKOUT_ROUTE_DNS}
RETAIL_UI_ENDPOINTS_CARTS: http://carts.carts.svc:80
RETAIL_UI_ENDPOINTS_CATALOG: http://catalog.catalog.svc:80
RETAIL_UI_ENDPOINTS_CHECKOUT: http://checkout.checkout.svc:80
RETAIL_UI_ENDPOINTS_ORDERS: http://orders.orders.svc:80
kind: ConfigMap
metadata:
name: ui
namespace: ui
apiVersion: v1
data:
+ ENDPOINTS_CHECKOUT: ${CHECKOUT_ROUTE_DNS}
RETAIL_UI_ENDPOINTS_CARTS: http://carts.carts.svc:80
RETAIL_UI_ENDPOINTS_CATALOG: http://catalog.catalog.svc:80
RETAIL_UI_ENDPOINTS_CHECKOUT: http://checkout.checkout.svc:80
RETAIL_UI_ENDPOINTS_ORDERS: http://orders.orders.svc:80