Allow custom IP address flag for Impersonation Load Balancer service #605
Labels
enhancement
New feature or request
estimate/XS
Estimated effort/complexity/risk is very small
state/accepted
All done!
Is your feature request related to a problem? Please describe.
Currently when pinniped-concierge pod comes up in a managed kubernetes cluster e.g. GKE, it spawns the
pinniped-concierge-impersonation-proxy-load-balancer
service which is of type LoadBalancer. The LoadBalancer service exposes an EXTERNAL-IP which basically exposes the cluster to the outside world.This basically creates 2 problems.
Security. LoadBalancer type service in managed GKE spawns a LoadBalancer with an external IP address hence exposing the kubernetes cluster to the outside world. Firewall rules then need to be created to deny inbound/outbound traffic that is an overhead. It doesn't make sense to have an external IP address even when using a Private cluster or when deploying clusters in a VPC in cloud environments especially if pinniped and the client (e.g. kubeapps) reside on the same cluster. Even if it does not reside on the same cluster, the other cluster might reside in the same VPC or another VPC that could be connected using VPC peering.
Bootstrap. With the current setup, integration with other applications needs to be sequential. The deployment of kubeapps is dependant on deployment of Pinniped first. Once Pinniped is up and has created the service and the generated the relevant certificates, only then can we configure kubeapps to connect to Pinniped using the impersonation proxy. From a bootstrap perspective, this is a nightmare since we cannot bootstrap kubeapps fully until we have the required information from pinniped.
Describe the solution you'd like
It would be nice if pinniped accepted an argument for setting the LoadBalancer IP Address. Basically bring up the
pinniped-concierge
container with the following argThe above args will allows users to set their own EXTERNAL-IP for the LB service which can be from their own VPC and is not necessarily a public IP address.
In the event that the specified IP address (public IP if provided) is already in use, the error message from the cloud Load Balancer can be propagated to the user deploying Pinniped.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Are you considering submitting a PR for this feature?
No
Additional context
Kubernetes accepts setting
loadBalancerIP
in a manifest.So if it can be done using manifest, it can surely be done using the application i.e.
pinniped-concierge
who is already spawning the service.The text was updated successfully, but these errors were encountered: