This tutorial guides you through the installation and use of the open source AWS App Mesh Controller for Kubernetes. AWS App Mesh Controller For K8s is a controller to help manage AWS App Mesh resources for a Kubernetes cluster and injecting sidecars to Kubernetes Pods.
The controller maintains the custom resources (CRDs): Mesh, VirtualNode, VirtualService, VirtualRouter, VirtualGateway and GatewayRoute. When using the App Mesh Controller, you manage these App Mesh custom resources such as
VirtualNode through the Kubernetes API the same way you manage native Kubernetes resources such as
The controller monitors your Kubernetes objects, and when App Mesh resources are created or changed it reflects those changes in AWS App Mesh for you. Specification of your App Mesh resources is done through the use of Custom Resource Definitions (CRDs) provided by the App Mesh Controller project. These custom resources map to below App Mesh API objects.
For a pod in your application to join a mesh, it must have an open source Envoy proxy container running as sidecar container within the pod. This establishes the data plane that AWS App Mesh controls. So we must run an Envoy container within each pod of the Product Catalog App deployment. App Mesh uses the Envoy sidecar container as a proxy for all ingress and egress traffic to the primary microservice. Using this sidecar pattern with Envoy we create the backbone of the service mesh, without impacting our applications.
The controller will handle routine App Mesh tasks such as creating and injecting Envoy proxy containers into your application pods. Automated sidecar injection is controlled by enabling a webhook on a per-namespace basis.
Our Product Catalog Application services uses the below App Mesh Configuration and we will explore how to create these in detail.