Weiterleiten & Umleiten mit envoy

Ein Beispiel envoy.yaml, das zeigt, wie man routen und umleiten kann.

Es gibt verschiedene Möglichkeiten, siehe hier

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

Diese envoy.yaml leitet /taxgod und /taxgod/ (das zweite könnte wahrscheinlich weggelassen werden, da das erste auch dazu passen sollte, denke ich) an einen neuen Port und ein anderes Protokoll weiter.

/picockpit wird einfach auf / umgeleitet.

und schließlich wird / an das target_picockpit-Backend weitergeleitet

statische_Ressourcen:
  Hörer:
  - Adresse:
      socket_address:
        Adresse: 0.0.0.0
        port_wert: 80
    filter_chains:
    - filter:
      - name: envoy.http_connection_manager
        config:
          codec_type: auto
          stat_präfix: ingress_http
          route_config:
            virtual_hosts:
            - name: backend
              domains: ["*"]
              Routen:
              - match: { prefix: "/" }
                redirect:
                  path_redirect: "/"
                  https_redirect: wahr
          http_filters:
          - name: envoy.router
            config: {}
  - Adresse:
      socket_address:
        Adresse: 0.0.0.0
        port_value: 443
    filter_chains:
    - tls_context:
        common_tls_context:
          tls_certificates:
          - certificate_chain: { filename: "/etc/example-com.crt" }
            private_key: { dateiname: "/etc/example-com.key" }
          alpn_protocols: [ "h2,http/1.1" ]
      Filter:
      - name: envoy.http_connection_manager
        config:
          stat_prefix: ingress_https
          route_config:
            virtual_hosts:
            - name: backend
              domains: ["*"]
              Routen:
              - 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: "Bringing redemption to my dark night. Beautiful surrender is where I wanna be." } }
              - match: { prefix: "/" }
                route: { cluster: ziel_picockpit }
          http_filters:
          - name: envoy.router
            config: {}
  clusters:
  - name: target_taxgod
    connect_timeout: 0.25s
    typ: strict_dns
    lb_policy: round_robin
    Hosts:
    - socket_address:
        Adresse: taxgod
        port_value: 3000
  - name: ziel_picockpit
    connect_timeout: 0.25s
    typ: strict_dns
    lb_policy: round_robin
    Hosts:
    - socket_address:
        Adresse: picockpit
        port_wert: 3000
admin:
  access_log_path: "/tmp/envoy.log"
  adresse:
    socket_address:
      Adresse: 0.0.0.0
      port_wert: 9901