Install App Mesh Controller

Now the CRDs have been installed we can install the controller that understands them.

The AWS App Mesh Controller is available as a Helm package from the EKS Chart Repository. We can use the Helm Operator along with this chart to install the controller.

To install a chart using the Helm Operator we need to define a HelmRelease. A HelmRelease is a way to declare the desired state of a Helm release. The HelmRelease can be applied to a cluster using GitOps.

Create a new file called appmesh-controller.yaml in the appmesh-system folder. Add the following as contents to the file:

---
apiVersion: helm.fluxcd.io/v1
kind: HelmRelease
metadata:
  name: appmesh-controller
  namespace: appmesh-system
spec:
  releaseName: appmesh-controller
  chart:
    repository: https://aws.github.io/eks-charts/
    name: appmesh-controller
    version: 0.6.1

This HelmRelease is declaring that we want to create a Helm release for a chart called appmesh-controller with a version 0.6.1 that is available in the EKS chart repository https://aws.github.io/eks-charts/. The name of the release is appmesh-controller.

For full details on the elements of the HelmRelease please head to the documentation.

You folder structure should look like this now:

.
├── appmesh-system
│   ├── appmesh-controller.yaml
│   └── crds.yaml
├── namespaces
│   └── appmesh-system.yaml
└── README.md

Add and then commit the appmesh-controller.yaml file and push the the changes to your GitHub repo.

Flux will now see that the desired state of the appmesh-system namespace has changed in Git and will apply the CRDs to our cluster. This will take up to 1 minute to apply.

Check that the App Mesh Controller is up & running by running the following command:

kubectl get pods -n appmesh-system

You should see the controller pod in a Running state:

NAME                                  READY   STATUS    RESTARTS   AGE
appmesh-controller-54dd6bdfd8-n8zlq   1/1     Running   0          43s