Ruta y redirección con envoy
Un ejemplo de envoy.yaml que muestra cómo enrutar y redirigir.
Hay diferentes opciones, ver aquí
https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/route/route.proto#route-redirectaction
Este envoy.yaml enruta /taxgod y /taxgod/ (el segundo probablemente podría omitirse porque el primero también debería coincidir, creo) a un nuevo puerto y un protocolo diferente.
/picockpit es simplemente redirigido a /
y finalmente / se dirige al backend target_picockpit
static_resources: oyentes: - address: socket_address: address: 0.0.0.0 valor_puerto: 80 cadenas_de_filtro: - filters: - nombre: envoy.http_connection_manager config: codec_type: auto stat_prefix: ingress_http route_config: virtual_hosts: - name: backend dominios: ["*"] rutas: - match: { prefijo: "/" } redirección: path_redirect: "/" https_redirect: true http_filtros: - nombre: envoy.router config: {} - dirección: socket_address: dirección: 0.0.0.0 valor_de_puerto: 443 filter_chains: - tls_context: common_tls_context: tls_certificados: - certificate_chain: { filename: "/etc/example-com.crt" } private_key: { nombre de archivo: "/etc/ejemplo-com.key" } alpn_protocols: [ "h2,http/1.1" ] filtros: - name: envoy.http_connection_manager config: stat_prefix: ingress_https route_config: virtual_hosts: - nombre: backend dominios: ["*"] rutas: - match: { prefijo: "/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: { prefijo: "/picockpit" } redirect: { path_redirect: "/" } - match: { prefijo: "/gagarin" } direct_response: { status: 200, body: { inline_string: "Traer la redención a mi noche oscura. La hermosa rendición es donde quiero estar". } } - ...coinciden..: { prefijo: "/" } ruta: { cluster: target_picockpit } http_filters: - nombre: envoy.router config: {} clusters: - nombre: target_taxgod connect_timeout: 0.25s tipo: strict_dns lb_policy: round_robin hosts: - socket_address: dirección: taxgod valor_puerto: 3000 - nombre: target_picockpit connect_timeout: 0.25s tipo: strict_dns lb_policy: round_robin hosts: - socket_address: dirección: picockpit valor_puerto: 3000 admin: access_log_path: "/tmp/envoy.log" dirección: socket_address: dirección: 0.0.0.0 valor_puerto: 9901