Flagger Install on EKS App Mesh
This guide walks you through setting up Flagger and AWS App Mesh on EKS.
App Mesh
The App Mesh integration with EKS is made out of the following components:
Kubernetes custom resources
mesh.appmesh.k8s.aws
defines a logical boundary for network traffic between the servicesvirtualnode.appmesh.k8s.aws
defines a logical pointer to a Kubernetes workloadvirtualservice.appmesh.k8s.aws
defines the routing rules for a workload inside the mesh
CRD controller - keeps the custom resources in sync with the App Mesh control plane
Admission controller - injects the Envoy sidecar and assigns Kubernetes pods to App Mesh virtual nodes
Telemetry service - Prometheus instance that collects and stores Envoy's metrics
Create a Kubernetes cluster
In order to create an EKS cluster you can use eksctl. Eksctl is an open source command-line utility made by Weaveworks in collaboration with Amazon.
On MacOS you can install eksctl with Homebrew:
Create an EKS cluster with:
The above command will create a two nodes cluster with App Mesh IAM policy attached to the EKS node instance role.
Verify the install with:
Install Helm
Install the Helm v3 command-line tool:
Add the EKS repository to Helm:
Enable horizontal pod auto-scaling
Install the Horizontal Pod Autoscaler (HPA) metrics provider:
After a minute, the metrics API should report CPU and memory usage for pods. You can very the metrics API with:
Install the App Mesh components
Install the App Mesh CRDs:
Create the appmesh-system
namespace:
Install the App Mesh controller:
In order to collect the App Mesh metrics that Flagger needs to run the canary analysis, you'll need to setup a Prometheus instance to scrape the Envoy sidecars.
Install the App Mesh Prometheus:
Install Flagger
Add Flagger Helm repository:
Install Flagger's Canary CRD:
Deploy Flagger in the appmesh-system namespace:
Install Grafana
Deploy App Mesh Grafana that comes with a dashboard for monitoring Flagger's canary releases:
You can access Grafana using port forwarding:
Now that you have Flagger running, you can try the App Mesh canary deployments tutorial.
Last updated