# Copyright 2021 DoiT International.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

#
# --
# @spec: https://kubernetes.io/docs/reference/kubernetes-api/service-resources/ingress-v1/
#        https://kubernetes.io/docs/reference/kubernetes-api/service-resources/ingress-class-v1/
# @info: https://kubernetes.io/docs/concepts/services-networking/service/
#        https://kubernetes.io/docs/concepts/services-networking/ingress/
#        https://github.com/kubernetes/ingress-gce/blob/master/pkg/annotations/service.go
#
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: static-web-app-ingress-fanout
  namespace: doit-lab-07
  labels:
    k8s-app: static-web-app-fanout
    k8s-scope: gke-ws-doit-lab-07
spec:
  #  We have three deployments with three replica sets (so 9 pods). Each deployment hosts a different version of the app.
  # These rules define which routes take us to a paricular version of the app.
  rules:
    - http:
        paths:
          #
          # @info: This is our path to web-app-static:1.0.6 (v1/default)
          # --
          - path: /*
            pathType: ImplementationSpecific
            backend:
              service:
                name: static-web-app-service-v1
                port:
                  number: 8080

          #
          # @info: This is our path to web-app-static-blue:1.0.6 (v2/blue)
          # --
          - path: /v2/*
            pathType: ImplementationSpecific
            backend:
              service:
                name: static-web-app-service-v2
                port:
                  number: 8080

          #
          # @info: This is our path to web-app-static-green:1.0.6 (v3/green)
          # --
          - path: /v3/*
            pathType: ImplementationSpecific
            backend:
              service:
                name: static-web-app-service-v3
                port:
                  number: 8080
