---
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:
        virtualServiceARN: colorapp-service-ARN
---
apiVersion: appmesh.k8s.aws/v1beta2
kind: VirtualRouter
metadata:
  namespace: ${APP_NAMESPACE}
  name: front-router
spec:
  listeners:
    - portMapping:
        port: 8080
        protocol: http
  routes:
    - name: color-route
      httpRoute:
        match:
          prefix: /color
        action:
          weightedTargets:
            - virtualNodeRef:
                name: front
              weight: 1
---
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_HOST"
              value: "colorapp.${APP_NAMESPACE}.svc.cluster.local:8080"
---
apiVersion: v1
kind: Service
metadata:
  name: colorapp
  namespace: howto-k8s-cross-cluster
spec:
  ports:
    - protocol: TCP
      port: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: front
  namespace: ${APP_NAMESPACE}
spec:
  type: LoadBalancer
  ports:
  - port: 80
    protocol: TCP
    name: http
    targetPort: 8080
  selector:
    app: front