--- apiVersion: appmesh.k8s.aws/v1beta2 kind: GatewayRoute metadata: name: gateway-route-paths namespace: app labels: gateway: ingress-gw spec: httpRoute: match: prefix: "/canary" action: target: virtualService: virtualServiceRef: name: my-canary-vsvc --- # This service is used by virtual-service to resolve initial dns requests done by app container apiVersion: v1 kind: Service metadata: name: my-canary-svc namespace: app spec: ports: - port: 8080 targetPort: http protocol: TCP name: http selector: app: demo-app-canary --- apiVersion: v1 kind: Service metadata: name: my-svc-canary namespace: app spec: ports: - port: 8080 targetPort: http protocol: TCP name: http selector: # This selector will be updated with the pod-template-hash of the canary ReplicaSet. app: demo-app-canary --- apiVersion: v1 kind: Service metadata: name: my-svc-stable namespace: app spec: ports: - port: 8080 targetPort: http protocol: TCP name: http selector: # This selector will be updated with the pod-template-hash of the stable ReplicaSet. app: demo-app-canary --- apiVersion: appmesh.k8s.aws/v1beta2 kind: VirtualService metadata: name: my-canary-vsvc namespace: app spec: provider: virtualRouter: virtualRouterRef: name: my-canary-vrouter --- apiVersion: appmesh.k8s.aws/v1beta2 kind: VirtualRouter metadata: name: my-canary-vrouter namespace: app spec: listeners: - portMapping: port: 8080 protocol: http routes: - name: primary httpRoute: match: prefix: / action: weightedTargets: - virtualNodeRef: name: my-vn-canary weight: 0 - virtualNodeRef: name: my-vn-stable weight: 100 --- apiVersion: appmesh.k8s.aws/v1beta2 kind: VirtualNode metadata: name: my-vn-canary namespace: app spec: podSelector: matchLabels: app: demo-app-canary rollouts-pod-template-hash: canary-tbd listeners: - portMapping: port: 8080 protocol: http serviceDiscovery: dns: hostname: my-svc-canary.app.svc.cluster.local --- apiVersion: appmesh.k8s.aws/v1beta2 kind: VirtualNode metadata: name: my-vn-stable namespace: app spec: podSelector: matchLabels: app: demo-app-canary rollouts-pod-template-hash: stable-tbd listeners: - portMapping: port: 8080 protocol: http serviceDiscovery: dns: hostname: my-svc-stable.app.svc.cluster.local ---