Rota e Redirecionamento com o Enviado

Um exemplo envoy.yaml mostrando como rotear e redirecionar.

Há diferentes opções, veja aqui

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

Este envoy.yaml rotas /taxgod e /taxgod/ (o segundo provavelmente poderia ser omitido porque o primeiro também deveria combiná-lo, eu acho) para um novo porto e um protocolo diferente.

/picockpit é simplesmente redireccionado para /

e então finalmente / é encaminhado para o backend do target_picockpit

estática_recursos:
  ouvintes:
  - endereço:
      endereço_do_saco:
        endereço: 0.0.0.0
        valor_da_porto: 80
    filter_chains:
    - filtros:
      - nome: envoy.http_connection_manager
        configurar:
          codec_type: auto
          stat_prefix: ingresso_http
          route_config:
            virtual_hosts:
            - nome: backend
              domínios: ["*"]
              rotas:
              - correspondência: { prefixo: "/" }
                redireccionar:
                  path_redirect: "/"
                  https_redirect: true
          http_filters:
          - nome: envoy.router
            configurar: {}
  - morada:
      endereço_do_soquete:
        endereço: 0.0.0.0
        valor_da_porto: 443
    filter_chains:
    - tls_context:
        texto_comum_tls_context:
          tls_certificates:
          - cadeia_de_certificados: { nome_do_filtro: "/etc/example-com.crt" }
            private_key: { filename: "/etc/example-com.key" }
          alpn_protocols: ["h2,http/1.1" ]
      filtros:
      - nome: envoy.http_connection_manager
        configurar:
          stat_prefix: ingresso_https
          route_config:
            virtual_hosts:
            - nome: backend
              domínios: ["*"]
              rotas:
              - correspondência: { prefixo: "/taxgod" }
                redirect: { port_redirect: 2080, path_redirect: "/", scheme_redirect: "http"}
              - partida: Prefixo: "/taxgod" }
                redirect: { port_redirect: 2080, path_redirect: "/", scheme_redirect: "http"}
              - partida: Prefixo: "/picockpit/" }
                redireccionar: { path_redirect: "/" }
              - partida: Prefixo: "/picockpit" }
                redireccionar: { path_redirect: "/" }
              - partida: Prefixo: "/gagarin" }
                resposta_directa: { status: 200, corpo: { inline_string: "Trazendo a redenção para a minha noite escura. A bela rendição é onde eu quero estar." } }
              - partida: Prefixo: "/" }
                rota: { cluster: target_picockpit }
          http_filters:
          - nome: envoy.router
            configurar: {}
  grupos:
  - nome: target_taxgod
    connect_timeout: 0.25s
    tipo: strict_dns
    lb_policy: round_robin
    anfitriões:
    - endereço_do_saco:
        endereço: taxgod
        port_value: 3000
  - nome: target_picockpit
    connect_timeout: 0.25s
    tipo: strict_dns
    lb_policy: round_robin
    anfitriões:
    - endereço_do_saco:
        endereço: picockpit
        port_value: 3000
administração:
  access_log_path: "/tmp/envoy.log"
  morada:
    endereço_do_soquete:
      endereço: 0.0.0.0
      valor_da_porta: 9901