--- apiVersion: appmesh.k8s.aws/v1beta2 kind: VirtualNode metadata: name: ${MICROSERVICE_NAME}-${CANARY_VERSION} namespace: ${KUBERNETES_NAMESPACE} spec: awsName: ${MICROSERVICE_NAME}-${CANARY_VERSION}-virtual-node podSelector: matchLabels: app: ${MICROSERVICE_NAME} version: "${CANARY_VERSION}" listeners: - portMapping: port: 5432 protocol: tcp healthCheck: healthyThreshold: 2 intervalMillis: 5000 port: 5432 protocol: tcp timeoutMillis: 2000 unhealthyThreshold: 2 logging: accessLog: file: path: /dev/stdout serviceDiscovery: dns: hostname: ${MICROSERVICE_NAME}-${CANARY_VERSION}.${KUBERNETES_NAMESPACE}.svc.cluster.local --- apiVersion: appmesh.k8s.aws/v1beta2 kind: VirtualRouter metadata: namespace: ${KUBERNETES_NAMESPACE} name: ${MICROSERVICE_NAME} spec: awsName: ${MICROSERVICE_NAME}-virtual-router listeners: - portMapping: port: 5432 protocol: tcp routes: - name: route-to-${MICROSERVICE_NAME} tcpRoute: action: weightedTargets: [${CANARY_ROUTES}] --- apiVersion: appmesh.k8s.aws/v1beta2 kind: VirtualService metadata: name: ${MICROSERVICE_NAME} namespace: ${KUBERNETES_NAMESPACE} spec: awsName: ${MICROSERVICE_NAME} provider: virtualRouter: virtualRouterRef: name: ${MICROSERVICE_NAME} --- apiVersion: v1 kind: Service metadata: namespace: ${KUBERNETES_NAMESPACE} name: ${MICROSERVICE_NAME}-${CANARY_VERSION} labels: app: ${MICROSERVICE_NAME} version: "${CANARY_VERSION}" tier: backenddb spec: type: ClusterIP ports: - port: 5432 name: tcp selector: app: ${MICROSERVICE_NAME} version: "${CANARY_VERSION}" tier: backenddb --- apiVersion: apps/v1 kind: Deployment metadata: namespace: ${KUBERNETES_NAMESPACE} name: ${MICROSERVICE_NAME}-${CANARY_VERSION} spec: replicas: 1 selector: matchLabels: app: ${MICROSERVICE_NAME} version: "${CANARY_VERSION}" tier: backenddb template: metadata: labels: app: ${MICROSERVICE_NAME} version: "${CANARY_VERSION}" tier: backenddb spec: containers: - name: ${MICROSERVICE_NAME} image: ${CONTAINER_IMAGE} ports: - containerPort: 5432 --- apiVersion: v1 kind: Service metadata: namespace: ${KUBERNETES_NAMESPACE} name: ${MICROSERVICE_NAME} # used to provide a DNS entry for ${MICROSERVICE_NAME} VS spec: ports: - port: 5432 name: tcp