---
apiVersion: v1
kind: Namespace
metadata:
  name: gxlb-demo-ns1
---
apiVersion: v1
kind: Namespace
metadata:
  name: gxlb-demo-ns2
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: foo
  namespace: gxlb-demo-ns1
spec:
  replicas: 2
  selector:
    matchLabels:
      app: foo
  template:
    metadata:
      labels:
        app: foo
        version: v1
    spec:
      containers:
      - name: whereami
        image: us-docker.pkg.dev/google-samples/containers/gke/whereami:v1.2.20
        env:
        - name: METADATA
          value: "foo"
        ports:
          - name: http
            containerPort: 8080
        readinessProbe:
          httpGet:
            path: /healthz
            port: 8080
            scheme: HTTP
---
apiVersion: v1
kind: Service
metadata:
  name: foo
  namespace: gxlb-demo-ns1
spec:
  selector:
    app: foo
  ports:
  - port: 8080
    targetPort: 8080
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: bar
  namespace: gxlb-demo-ns2
spec:
  replicas: 2
  selector:
    matchLabels:
      app: bar
  template:
    metadata:
      labels:
        app: bar
        version: v1
    spec:
      containers:
      - name: whereami
        image: us-docker.pkg.dev/google-samples/containers/gke/whereami:v1.2.20
        env:
        - name: METADATA
          value: "bar"
        ports:
          - name: http
            containerPort: 8080
        readinessProbe:
          httpGet:
            path: /healthz
            port: 8080
            scheme: HTTP
---
apiVersion: v1
kind: Service
metadata:
  name: bar
  namespace: gxlb-demo-ns2
spec:
  selector:
    app: bar
  ports:
  - port: 8080
    targetPort: 8080
---
kind: Gateway
apiVersion: networking.x-k8s.io/v1alpha1
metadata:
  name: external-http
spec:
  gatewayClassName: gke-l7-gxlb
  listeners:
  - protocol: HTTPS
    port: 443
    routes:
      kind: HTTPRoute
      namespaces:
        from: "All"
    tls:
      mode: Terminate
      options:
        networking.gke.io/pre-shared-certs: gxlb-cert
  addresses:
  - type: NamedAddress
    value: gke-gxlb-ip
---
kind: HTTPRoute
apiVersion: networking.x-k8s.io/v1alpha1
metadata:
  name: foo
  namespace: gxlb-demo-ns1
spec:
  gateways:
    allow: FromList
    gatewayRefs:
    - name: external-http
      namespace: default
  hostnames:
  - "foo.$DOMAIN"
  rules:
  - forwardTo:
    - serviceName: foo
      port: 8080
---
kind: HTTPRoute
apiVersion: networking.x-k8s.io/v1alpha1
metadata:
  name: bar
  namespace: gxlb-demo-ns2
spec:
  gateways:
    allow: FromList
    gatewayRefs:
    - name: external-http
      namespace: default
  hostnames:
  - "bar.$DOMAIN"
  rules:
  - forwardTo:
    - serviceName: bar
      port: 8080
