--- apiVersion: v1 kind: Namespace metadata: name: ${APP_NAMESPACE} labels: 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: VirtualNode metadata: name: front namespace: ${APP_NAMESPACE} spec: podSelector: matchLabels: app: front listeners: - portMapping: port: 8080 protocol: http serviceDiscovery: awsCloudMap: namespaceName: ${CLOUDMAP_NAMESPACE} serviceName: front backends: - virtualService: virtualServiceRef: name: colorapp --- apiVersion: appmesh.k8s.aws/v1beta2 kind: VirtualNode metadata: name: colorapp namespace: ${APP_NAMESPACE} spec: podSelector: matchLabels: app: colorapp listeners: - portMapping: port: 8080 protocol: http outlierDetection: maxServerErrors: 5 maxEjectionPercent: 50 interval: value: 10 unit: s baseEjectionDuration: value: 10 unit: s serviceDiscovery: awsCloudMap: namespaceName: ${CLOUDMAP_NAMESPACE} serviceName: colorapp --- apiVersion: appmesh.k8s.aws/v1beta2 kind: VirtualService metadata: name: colorapp namespace: ${APP_NAMESPACE} spec: awsName: colorapp.${APP_NAMESPACE}.svc.cluster.local provider: virtualNode: virtualNodeRef: name: colorapp --- apiVersion: appmesh.k8s.aws/v1beta2 kind: VirtualService metadata: name: front namespace: ${APP_NAMESPACE} spec: awsName: front.${APP_NAMESPACE}.svc.cluster.local provider: virtualNode: virtualNodeRef: name: front --- apiVersion: apps/v1 kind: Deployment metadata: name: front namespace: ${APP_NAMESPACE} spec: replicas: 1 selector: matchLabels: app: front version: v1 template: metadata: labels: app: front version: v1 spec: containers: - name: front image: ${FRONT_APP_IMAGE} ports: - containerPort: 8080 env: - name: "PORT" value: "8080" - name: "COLOR_SERVICE_ENDPOINT" value: "colorapp.${APP_NAMESPACE}.svc.cluster.local:8080" --- apiVersion: apps/v1 kind: Deployment metadata: name: colorapp namespace: ${APP_NAMESPACE} spec: replicas: 4 selector: matchLabels: app: colorapp template: metadata: labels: app: colorapp spec: containers: - name: colorapp image: ${COLOR_APP_IMAGE} ports: - containerPort: 8080 env: - name: "SERVER_PORT" value: "8080" --- apiVersion: apps/v1 kind: Deployment metadata: name: vegeta-trafficgen namespace: default spec: replicas: 1 selector: matchLabels: app: vegeta-trafficgen template: metadata: labels: app: vegeta-trafficgen spec: containers: - args: - /bin/sh image: ${VEGETA_IMAGE} name: vegeta stdin: true tty: true --- apiVersion: v1 kind: Service metadata: name: colorapp namespace: ${APP_NAMESPACE} spec: ports: - protocol: TCP port: 8080 --- apiVersion: v1 kind: Service metadata: name: front namespace: ${APP_NAMESPACE} spec: ports: - port: 8080 name: http selector: app: front