Newer
Older
EnvoyControlPlane / internal / USECASE.md

Append Filter Chain to Listener

curl -X POST http://localhost:8080/append-filter-chain -H "Content-Type: application/json" -d '{ "listener_name": "https_listener", "yaml": "filters:\n - name: envoy.filters.network.http_connection_manager\n typed_config:\n \"@type\": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager\n stat_prefix: ingress_http\n codec_type: AUTO\n route_config:\n virtual_hosts:\n - name: baby_service\n domains: [\"baby.jerxie.com\"]\n routes:\n - match: { prefix: \"/\" }\n route: { cluster: \"_baby_buddy\"}\n http_filters:\n - name: envoy.filters.http.router\n typed_config:\n \"@type\": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router\nfilter_chain_match:\n server_names: [\"baby.jerxie.com\"]\ntransport_socket:\n name: envoy.transport_sockets.tls\n typed_config:\n \"@type\": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext\n common_tls_context:\n tls_certificates:\n - certificate_chain: { filename: \"/etc/certs/downstream/baby.jerxie.com/fullchain.pem\" }\n private_key: { filename: \"/etc/certs/downstream/baby.jerxie.com/privkey.pem\" }" }'

Add a new listener

Update a pre-existing filter chain

curl -X POST http://localhost:8080/add-listener -H "Content-Type: application/json" -d '{ "yaml": "listener yaml..." }'

curl -X POST http://localhost:8080/update-filter-chain -H "Content-Type: application/json" -d '{ "listener_name": "https_listener", "yaml": "filters:\n - name: envoy.filters.network.http_connection_manager\n typed_config:\n \"@type\": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager\n stat_prefix: ingress_http_updated\n codec_type: AUTO\n route_config:\n virtual_hosts:\n - name: baby_service_updated\n domains: [\"baby.jerxie.com\"]\n routes:\n - match: { prefix: \"/\" }\n route: { cluster: \"_baby_buddy_updated\"}\n http_filters:\n - name: envoy.filters.http.router\n typed_config:\n \"@type\": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router\nfilter_chain_match:\n server_names: [\"baby.jerxie.com\"]\ntransport_socket:\n name: envoy.transport_sockets.tls\n typed_config:\n \"@type\": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext\n common_tls_context:\n tls_certificates:\n - certificate_chain: { filename: \"/etc/certs/downstream/baby.jerxie.com/fullchain34.pem\" }\n private_key: { filename: \"/etc/certs/downstream/baby.jerxie.com/privkey43.pem\" }" }'

Delete a filter chain

curl -X POST http://localhost:8080/remove-filter-chain -H "Content-Type: application/json" -d '{ "listener_name": "https_listener", "domains" : ["baby1.jerxie.com"] }'