检查是否安装了Helm:
helm list
此命令返回已部署的Helm charts, 如果收到错误消息,请参阅 安装 helm 。
可以使用 Helm 轻松安装AWS App Mesh Controller for Kubernetes 。 首先,添加 EKS Charts:
helm repo add eks https://aws.github.io/eks-charts
"eks" has been added to your repositories
创建命名空间appmesh-system
,启用 OIDC, 并为 AWS App Mesh 配置 IRSA(IAM for Service Account)
# 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
将 App Mesh Controller 安装到 appmesh-system 命名空间中:
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 tracing.enabled=true \
--set tracing.provider=x-ray
Release "appmesh-controller" has been upgraded. Happy Helming!
NAME: appmesh-controller
LAST DEPLOYED: Wed Jan 20 21:07:01 2021
NAMESPACE: appmesh-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
AWS App Mesh controller installed!
确认Controller版本为 v1.0.0 或更高版本:
kubectl get deployment appmesh-controller \
-n appmesh-system \
-o json | jq -r ".spec.template.spec.containers[].image" | cut -f2 -d ':'
v1.4.0
确认在集群中创建了所有 App Mesh CRD:
kubectl get crds | grep appmesh
gatewayroutes.appmesh.k8s.aws 2020-11-02T16:02:14Z
meshes.appmesh.k8s.aws 2020-11-02T16:02:15Z
virtualgateways.appmesh.k8s.aws 2020-11-02T16:02:15Z
virtualnodes.appmesh.k8s.aws 2020-11-02T16:02:15Z
virtualrouters.appmesh.k8s.aws 2020-11-02T16:02:15Z
virtualservices.appmesh.k8s.aws 2020-11-02T16:02:15Z
获取在 appmesh-system Namespace 中创建的所有资源:
kubectl -n appmesh-system get all
NAME READY STATUS RESTARTS AGE
pod/appmesh-controller-fcc7c4ffc-mldhk 1/1 Running 0 47s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/appmesh-controller-webhook-service ClusterIP 10.100.xx.yy <none> 443/TCP 27m å
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/appmesh-controller 1/1 1 1 27m
NAME D kubectl get crds ESIRED CURRENT READY AGE
replicaset.apps/appmesh-controller-fcc7c4ffc 1 1 1 47s
恭喜您在 EKS 集群中安装成功 AWS App Mesh Controller!