Route & Omleiding met Gezant

Een voorbeeld van envoy.yaml die toont hoe te routeren en door te sturen.

Er zijn verschillende opties, zie hier

https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/route/route.proto#route-redirectaction

Deze envoy.yaml routeert /taxgod en /taxgod/ (de tweede kan waarschijnlijk weggelaten worden omdat de eerste er ook mee overeen zou moeten komen, denk ik) naar een nieuwe poort en een ander protocol.

/picockpit wordt gewoon doorverwezen naar /

en dan uiteindelijk / wordt gerouteerd naar de target_picockpit backend

static_resources:
  luisteraars:
  - adres:
      socket_address:
        adres: 0.0.0.0
        port_value: 80
    filter_chains:
    - filters:
      - naam: envoy.http_connection_manager
        config:
          codec_type: auto
          stat_prefix: ingress_http
          route_config:
            virtual_hosts:
            - name: backend
              domains: ["*"]
              routes:
              - match: { prefix: "/" }
                redirect:
                  path_redirect: "/"
                  https_redirect: true
          http_filters:
          - naam: envoy.router
            config: {}
  - adres:
      socket_address:
        adres: 0.0.0.0
        port_value: 443
    filter_chains:
    - tls_context:
        common_tls_context:
          tls_certificates:
          - certificate_chain: { bestandsnaam: "/etc/example-com.crt" }
            private_key: { bestandsnaam: "/etc/voorbeeld-com.key" }
          alpn_protocols: [ "h2,http/1.1" ]
      filters:
      - name: envoy.http_connection_manager
        config:
          stat_prefix: ingress_https
          route_config:
            virtual_hosts:
            - naam: backend
              domains: ["*"]
              routes:
              - match: { prefix: "/taxgod" }
                redirect: { port_redirect: 2080, path_redirect: "/", scheme_redirect: "http"}
              - match: { prefix: "/taxgod" }
                redirect: { port_redirect: 2080, path_redirect: "/", scheme_redirect: "http"}
              - match: { prefix: "/picockpit/" }
                redirect: { path_redirect: "/" }
              - match: { prefix: "/picockpit" }
                redirect: { path_redirect: "/" }
              - match: { prefix: "/gagarin" }
                direct_response: { status: 200, body: { inline_string: "Verlossing brengen in mijn donkere nacht. Mooie overgave is waar ik wil zijn." } }
              - match: { prefix: "/" }
                route: { cluster: target_picockpit }
          http_filters:
          - naam: envoy.router
            config: {}
  clusters:
  - naam: target_taxgod
    connect_timeout: 0.25s
    type: strict_dns
    lb_policy: round_robin
    hosts:
    - socket_address:
        adres: taxgod
        port_value: 3000
  - naam: target_picockpit
    connect_timeout: 0.25s
    type: strict_dns
    lb_policy: round_robin
    hosts:
    - socket_address:
        adres: picockpit
        port_value: 3000
admin:
  access_log_path: "/tmp/envoy.log"
  adres:
    socket_address:
      adres: 0.0.0.0
      poort_waarde: 9901