--- apiVersion: v1 kind: Namespace metadata: name: ${APP_NAMESPACE} labels: gateway: ingress-gw mesh: ${MESH_NAME} appmesh.k8s.aws/sidecarInjectorWebhook: enabled --- apiVersion: appmesh.k8s.aws/v1beta2 kind: Mesh metadata: name: ${MESH_NAME} spec: namespaceSelector: matchLabels: mesh: ${MESH_NAME} --- apiVersion: appmesh.k8s.aws/v1beta2 kind: VirtualGateway metadata: name: ingress-gw namespace: ${APP_NAMESPACE} spec: namespaceSelector: matchLabels: gateway: ingress-gw podSelector: matchLabels: app: ingress-gw listeners: - portMapping: port: 9111 protocol: grpc --- apiVersion: v1 kind: Service metadata: name: greeter namespace: ${APP_NAMESPACE} spec: ports: - port: 9111 name: grpc selector: app: greeter --- apiVersion: v1 kind: Service metadata: name: ingress-gw namespace: ${APP_NAMESPACE} annotations: service.beta.kubernetes.io/aws-load-balancer-type: "nlb" spec: type: LoadBalancer ports: - port: 80 targetPort: 9111 name: grpc selector: app: ingress-gw --- apiVersion: apps/v1 kind: Deployment metadata: name: ingress-gw namespace: ${APP_NAMESPACE} spec: replicas: 1 selector: matchLabels: app: ingress-gw template: metadata: labels: app: ingress-gw spec: containers: - name: envoy image: 840364872350.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/aws-appmesh-envoy ports: - containerPort: 9111 --- apiVersion: appmesh.k8s.aws/v1beta2 kind: VirtualService metadata: name: greeter namespace: ${APP_NAMESPACE} spec: awsName: greeter.${APP_NAMESPACE}.svc.cluster.local provider: virtualNode: virtualNodeRef: name: greeter --- apiVersion: appmesh.k8s.aws/v1beta2 kind: VirtualNode metadata: name: greeter namespace: ${APP_NAMESPACE} spec: podSelector: matchLabels: app: greeter listeners: - portMapping: port: 9111 protocol: grpc healthCheck: port: 9111 protocol: grpc path: '/ping' healthyThreshold: 2 unhealthyThreshold: 3 timeoutMillis: 2000 intervalMillis: 5000 serviceDiscovery: dns: hostname: greeter.${APP_NAMESPACE}.svc.cluster.local --- apiVersion: apps/v1 kind: Deployment metadata: name: greeter namespace: ${APP_NAMESPACE} spec: replicas: 1 selector: matchLabels: app: greeter template: metadata: labels: app: greeter spec: containers: - name: app image: ${SERVER_APP_IMAGE} ports: - containerPort: 9111 --- apiVersion: appmesh.k8s.aws/v1beta2 kind: GatewayRoute metadata: name: metadata-match namespace: ${APP_NAMESPACE} spec: grpcRoute: match: serviceName: Hello action: target: virtualService: virtualServiceRef: name: greeter