You can follow the steps below to install App Mesh on AWS EKS (Kubernetes).
Step 1 – Prerequisites
1
2
|
curl -o pre_upgrade_check.sh https://raw.githubusercontent.com/aws/eks-charts/master/stable/appmesh-controller/upgrade/pre_upgrade_check.sh
sh ./pre_upgrade_check.sh
|
Step 2 – Add Helm Repo
1
|
helm repo add eks https://aws.github.io/eks-charts
|
Step 3 – Add Custom Resource Definitions (CRDs)
1
|
kubectl apply -k "https://github.com/aws/eks-charts/stable/appmesh-controller/crds?ref=master"
|
Step 4 – Create a Namespace for App Mesh
1
|
kubectl create ns appmesh-system
|
Step 5 – Set Environment Variables
You will need to set a couple of environment variables to make things easier later.
1
2
3
|
export CLUSTER_NAME=cluster-name
export ACCOUNT_ID=111122223333
export AWS_REGION=eu-west-1
|
aws eks list-clusters
will help you get the CLUSTER_NAME
.
aws sts get-caller-identity
will help you get the ACCOUNT_ID
.
AWS_REGION
needs to be the region where your EKS cluster has been setup.
Step 6 – Add an IAM OIDC provider
1
2
3
4
|
eksctl utils associate-iam-oidc-provider \
--region=$AWS_REGION \
--cluster $CLUSTER_NAME \
--approve
|
Step 7 – Create an IAM Service Account
1
2
3
4
5
6
7
|
eksctl create iamserviceaccount \
--cluster $CLUSTER_NAME \
--namespace appmesh-system \
--name appmesh-controller \
--attach-policy-arn arn:aws:iam::aws:policy/AWSCloudMapFullAccess,arn:aws:iam::aws:policy/AWSAppMeshFullAccess,arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess \
--override-existing-serviceaccounts \
--approve
|
Step 8 – Install the App Mesh Controller using Helm
1
2
3
4
5
6
|
helm upgrade -i appmesh-controller eks/appmesh-controller \
--namespace appmesh-system \
--set region=$AWS_REGION \
--set serviceAccount.create=false \
--set serviceAccount.name=appmesh-controller \
--set log.level=debug
|
Step 9 – Note the App Mesh Deployment
1
2
3
|
kubectl get deployment appmesh-controller \
-n appmesh-system \
-o json | jq -r ".spec.template.spec.containers[].image"
|
Step 10 – Create a Fargate Profile in the EKS cluster
1
|
eksctl create fargateprofile --cluster $CLUSTER_NAME --name appmesh-system --namespace appmesh-system
|