Google Kubernetes Engine Gateway Collector Load Balancer
Use a Google Cloud Load Balancer to proxy traffic to your Gateway Collector.
Google Kubernetes Engine Gateway Collector Load Balancer
Use a Kubernetes LoadBalancer Service to expose the Bindplane Gateway Collector to external clients on Google Kubernetes Engine (GKE). This guide provides production-ready examples for creating an external TCP load balancer that mirrors your existing ClusterIP Service, optional configuration for a static public IP, and an internal load balancer (ILB) for private access. Validation steps and troubleshooting guidance are included.
A LoadBalancer Service is preferable to a ClusterIP + Ingress configuration, as the LoadBalancer service can manage HTTP, gRPC, TCP. Traditional HTTP Ingress solutions do not support L4 TCP load balancing.
Overview
Expose the Bindplane Gateway Collector to external senders on Google Kubernetes Engine (GKE) using a Kubernetes LoadBalancer Service. This creates a Google Cloud TCP Network Load Balancer that proxies traffic to the gateway on all required ports (OTLP gRPC/HTTP, Splunk HEC/TCP).
This guide builds on the default deployment, which includes a ClusterIP Service in the bindplane-agent namespace. You will create a second LoadBalancer Service that mirrors the same ports and selector for external traffic.
Assumptions
Bindplane Gateway Collector is already deployed in bindplane-agent.
kubectl -n bindplane-agent get allNAME READY STATUS RESTARTS AGE
pod/bindplane-gateway-agent-847d69c756-4nbmj 1/1 Running 0 52s
pod/bindplane-gateway-agent-847d69c756-4vjb5 1/1 Running 0 8d
pod/bindplane-gateway-agent-847d69c756-5tgnb 1/1 Running 0 22d
pod/bindplane-gateway-agent-847d69c756-pd4ld 1/1 Running 0 157m
pod/bindplane-gateway-agent-847d69c756-rghj4 1/1 Running 0 8d
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/bindplane-gateway-agent ClusterIP 10.4.226.118 <none> 4317/TCP,4318/TCP 694d
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/bindplane-gateway-agent 8/8 8 8 561dDeployment
1) Create an external LoadBalancer Service
Create a new service that matches the ports and labels of the gateway collector deployment, with type: LoadBalancer. This provisions a Google Cloud external TCP load balancer for each port.
The
externalTrafficPolicy: Clustersetting is recommended for even distribution. If you need to preserve the original client IP, setexternalTrafficPolicy: Local(ensure sufficient pods on nodes to pass health checks).
Apply the service:
1a) Optional: Use a static external IP
Reserve a regional static IP in the same region as your GKE cluster, then reference it via spec.loadBalancerIP.
Add the IP to the service and apply:
1b) Optional: Create an internal load balancer (ILB)
For private access inside your VPC, annotate the service to use an internal TCP load balancer.
Optionally specify a reserved internal IP from your subnet via loadBalancerIP.
2) Verify provisioning
Wait for the EXTERNAL-IP (or internal IP) to be assigned:
Example output once ready:
3) Test connectivity
Simple TCP checks from a client on the Internet (or within VPC for ILB):
For functional tests, point an OpenTelemetry SDK or collector at 203.0.113.10:4317/4318. For Splunk HEC you will need a valid token and TLS if required by your configuration.
Notes and troubleshooting
GKE creates firewall rules and health checks automatically. If using
NetworkPolicyor custom firewalls, ensure NodePort and health check traffic is permitted.Multiple ports are supported on a single
Service; GKE creates a forwarding rule and backend for each.If using
externalTrafficPolicy: Local, ensure there is at least one ready pod on nodes receiving traffic, otherwise health checks may fail and the LB will not route to that node.Keep the original
ClusterIPservice for in-cluster traffic and service discovery; theLoadBalancerservice is for external/VPC ingress.
Reference: Exposed ports
The LoadBalancer service should mirror your ClusterIP ports and targets so both in-cluster and external clients reach the same endpoints.
otlp-grpc
4317
TCP
OpenTelemetry OTLP gRPC
otlp-http
4318
TCP
OpenTelemetry OTLP HTTP
splunk-tcp
9997
TCP
Splunk forwarder (TCP)
splunk-hec
8088
TCP
Splunk HEC
Last updated
Was this helpful?