Since we want to visualize the automated canary deployment, we need an UI for which, we will use frontend
service. This frontend
service will call the backend service detail
to get the vendor information. In order to expose the frontend
service outside the mesh we will use AWS AppMesh VirtualGateway affiliated with Network Load Balancer. Lets deploy the frontend
service.
export APP_VERSION=1.0
envsubst < flagger/frontend.yaml | kubectl apply -f -
helm upgrade -i appmesh-gateway eks/appmesh-gateway \
--namespace flagger \
--set serviceAccount.create=false \
--set serviceAccount.name=flagger-envoy-proxies
In this GatewayRoute, we are routing the traffic coming into the VirtualGateway to frontend
VirtualService.
kubectl apply -f flagger/gateway.yaml
Get all the resources for AppMesh VirtualGateway appmesh-gateway
kubectl get all -n flagger -o wide | grep appmesh-gateway
It takes 3 to 5 minutes to set up the Load Balancer.
Find the AppMesh VirtualGateway public endpoint:
export URL="http://$(kubectl -n flagger get svc/appmesh-gateway -ojson | jq -r ".status.loadBalancer.ingress[].hostname")"
echo $URL
Wait for the NLB to become active:
watch curl -sS $URL
Once the LoadBalancer is active, access the LoadBalancer endpoint in browser
You can see that our frontend
service is exposed via VirtualGateway using Network LoadBalancer. And this frontend
service communicates with backend service detail
to get the vendor information.
Congratulations on exposing the frontend
service via App Mesh VirtualGateway!
Let’s test the Automated Canary Deployment for detail
backend service.