Route & Redirection avec envoy
Un exemple de envoy.yaml montrant comment router et rediriger.
Il existe différentes options, voir ici
https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/route/route.proto#route-redirectaction
Cet envoy.yaml route /taxgod et /taxgod/ (le second pourrait probablement être omis car le premier devrait aussi correspondre, je pense) vers un nouveau port et un protocole différent.
/picockpit est simplement redirigé vers /
et enfin / est acheminé vers le backend target_picockpit
ressources_statiques : auditeurs : - adresse : adresse_socket : adresse : 0.0.0.0 port_value : 80 chaînes_de_filtres : - filtres : - nom : envoy.http_connection_manager config : codec_type : auto stat_prefix : ingress_http route_config : virtual_hosts : - nom : backend domaines : ["*"] routes : - match : { prefix : "/" } redirect : path_redirect : "/" https_redirect : true http_filters : - nom : envoy.router config : {} - address : 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 : { nom de fichier : "/etc/example-com.key" } alpn_protocols : [ "h2,http/1.1" ] filtres : - nom : envoy.http_connection_manager config : stat_prefix : ingress_https route_config : virtual_hosts : - nom : backend domaines : ["*"] routes : - match : { prefix : "/taxgod" } redirect : { port_redirect : 2080, path_redirect : "/", scheme_redirect : "http"} - match : { préfixe : "/taxgod" } redirect : { port_redirect : 2080, path_redirect : "/", scheme_redirect : "http"} - match : { préfixe : "/picockpit/" } redirect : { path_redirect : "/" } - match : { préfixe : "/picockpit" } redirect : { path_redirect : "/" } - match : { préfixe : "/gagarine" } direct_response : { status : 200, body : { inline_string : "Apporter la rédemption à ma nuit noire. Une belle reddition est l'endroit où je veux être." } } - match : { préfixe : "/" } route : { cluster : target_picockpit } http_filters : - nom : envoy.router config : {} clusters : - nom : target_taxgod connect_timeout : 0.25s type : strict_dns lb_policy : round_robin hôtes : - socket_address : adresse : taxgod port_value : 3000 - nom : target_picockpit connect_timeout : 0.25s type : strict_dns lb_policy : round_robin hôtes : - socket_address : adresse : picockpit port_value : 3000 admin : chemin d'accès_log : " /tmp/envoy.log " adresse : socket_address : adresse : 0.0.0.0 valeur_du_port : 9901