We assume that we have already have the following setup before we start this chapter.
eksworkshop-eksctl
and Nodegroup created from EKS WorkshopCheck that Helm is installed.
helm list
This command should either return a list of helm charts that have already been deployed or nothing.
If you get an error message, see installing helm for instructions.
Add EKS Helm Repo The AWS App Mesh Controller for Kubernetes is easily installed using Helm. To get started, add the EKS Charts repository.
helm repo add eks https://aws.github.io/eks-charts
Create the namespace appmesh-system
, enable OIDC and create IRSA (IAM for Service Account) for AWS App Mesh installation
# Create the namespace
kubectl create ns appmesh-system
# Install the App Mesh CRDs
kubectl apply -k "github.com/aws/eks-charts/stable/appmesh-controller//crds?ref=master"
# Create your OIDC identity provider for the cluster
eksctl utils associate-iam-oidc-provider \
--cluster eksworkshop-eksctl \
--approve
# Download the IAM policy for AWS App Mesh Kubernetes Controller
curl -o controller-iam-policy.json https://raw.githubusercontent.com/aws/aws-app-mesh-controller-for-k8s/master/config/iam/controller-iam-policy.json
# Create an IAM policy called AWSAppMeshK8sControllerIAMPolicy
aws iam create-policy \
--policy-name AWSAppMeshK8sControllerIAMPolicy \
--policy-document file://controller-iam-policy.json
# Create an IAM role for the appmesh-controller service account
eksctl create iamserviceaccount --cluster eksworkshop-eksctl \
--namespace appmesh-system \
--name appmesh-controller \
--attach-policy-arn arn:aws:iam::$ACCOUNT_ID:policy/AWSAppMeshK8sControllerIAMPolicy \
--override-existing-serviceaccounts \
--approve
Install App Mesh Controller into the appmesh-system namespace
helm upgrade -i appmesh-controller eks/appmesh-controller \
--namespace appmesh-system \
--set region=$AWS_REGION \
--set serviceAccount.create=false \
--set serviceAccount.name=appmesh-controller
Confirm that the controller version is v1.0.0 or later.
kubectl get deployment appmesh-controller \
-n appmesh-system \
-o json | jq -r ".spec.template.spec.containers[].image" | cut -f2 -d ':'
Confirm all the App Mesh CRDs are created in the Cluster
kubectl get crds | grep appmesh
Get all the resources created in appmesh-system Namespace
kubectl -n appmesh-system get all
Congratulations on installing the AWS App Mesh Controller in your EKS Cluster!