Skip to content

Instantly share code, notes, and snippets.

@salrashid123
Created May 24, 2022 20:41
Show Gist options
  • Save salrashid123/5dae1564920636be9452dd06c983306d to your computer and use it in GitHub Desktop.
Save salrashid123/5dae1564920636be9452dd06c983306d to your computer and use it in GitHub Desktop.
GCP Authentication filter client (https://blog.salrashid.dev/articles/2022/envoy_gcp_authn/ )
admin:
access_log_path: /dev/null
address:
socket_address:
address: 127.0.0.1
port_value: 19000
node:
cluster: service_greeter
id: test-id
static_resources:
listeners:
- name: listener_0
address:
socket_address: { address: 0.0.0.0, port_value: 8080 }
filter_chains:
- filters:
- name: envoy.http_connection_manager
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
stat_prefix: ingress_http
codec_type: AUTO
route_config:
name: local_route
virtual_hosts:
- name: backend
domains:
- "server.c.$PROJECT_ID.internal"
routes:
- match:
prefix: "/get"
route:
cluster: service_b
http_filters:
- name: envoy.filters.http.gcp_authn
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.http.gcp_authn.v3.GcpAuthnFilterConfig
http_uri:
uri: "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=[AUDIENCE]"
cluster: metadata_server
timeout: 1s
- name: envoy.filters.http.router
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
clusters:
- name: metadata_server
type: STRICT_DNS
dns_lookup_family: V4_ONLY
connect_timeout: 2s
lb_policy: ROUND_ROBIN
load_assignment:
cluster_name: metadata_server
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: metadata.google.internal
port_value: 80
- name: service_b
type: LOGICAL_DNS
dns_lookup_family: V4_ONLY
connect_timeout: 2s
lb_policy: ROUND_ROBIN
metadata:
typed_filter_metadata:
envoy.filters.http.gcp_authn:
"@type": type.googleapis.com/envoy.extensions.filters.http.gcp_authn.v3.Audience
url: "server.c.$PROJECT_ID.internal"
load_assignment:
cluster_name: service_b
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: server.c.$PROJECT_ID.internal
port_value: 10000
transport_socket:
name: envoy.transport_sockets.alts
typed_config:
"@type": type.googleapis.com/envoy.extensions.transport_sockets.alts.v3.Alts
handshaker_service: "169.254.169.254:8080"
peer_service_accounts:
- "$SERVER_SERVICE_ACCOUNT"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment