I created a custom
LoadBalancer (details) and I need my Kubernetes
Workload to be exposed with this
LoadBalancer. For now, if I send a request to this endpoint I get the error 502.
When I choose the
Expose option in the
Workload Console page, there are only
UDP service types available, and a
LoadBalancer is created automatically.
How do I expose a Kubernetes
Workload with an existing
LoadBalancer? Or maybe I don't even need to do it, and requests don't work because my instances are "unhealthy"? (healthcheck)
You need to create a kubernetes ingress. First, you need to expose the deployment from k8s, for a https choose 443 port and service type can be either: LoadBalance(external ip) or ClusterIp. (you can also test that by accesing the ip or by port forwarding).
Then you need to create the ingress.
Inside yaml file when choosing the backend, set the port and ServiceName that was configured when exposing the deployment. For example:
- path: /some-route backend: serviceName: your-service-name servicePort: 443
On gcp, when ingress is created, there will be a load balancer created for that. The backends and instance groups will be automatically build too. Then if you want to use the already created load balancer you just need to select the backend services from the lb that was created by ingress and add them there.
Also the load balancer will work only if the health checks pass. You need to use the route that will return a 200 HTTPS response for that.