-
Notifications
You must be signed in to change notification settings - Fork 66
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow users to customize how the impersonation proxy is deployed on a cluster. #617
Comments
Thanks for reporting this issue in detail and looks like someone is now working on it which is great ! I personally believe that handing over the configuration of the impersonation Proxy to the user is the right way to go based on different use cases. Our use case is quite simple as I mentioned in #605, Pinnniped and kubeapps (client) lie on the same cluster. So having a Load Balancer service type in not needed and communication can be established internally using a ClusterIP address alone. And the subsequent certificate can contain the ClusterIP address. |
We have some internal ConfigMap API today that lets you force the proxy on or off, or deploy it with a Service that's provisioned manually out-of-band. We should expose this level of control (and more) to users installing the Concierge on a cluster.
This is useful if you want to create a Service with particular options (as in #605) or if you want to disable the automatic Service provisioning and provision your own load balancing out-of-band.
Acceptance Criteria
Example CredentialIssuer YAML
Default value (API)
By default, the proxy will be disabled. This is safe but non-functional on many clusters:
Default value (website)
In the default installation YAML we provide on
https://get.pinniped.dev/latest/install-pinniped-concierge.yaml
, we'll enable the proxy in fully-automatic mode with some useful default annotations:Enable the proxy but with no Service annotations
If you set
mode: auto
but do not specify anyservice
, Pinniped will provision the Service with no annotations or special settings:Automatically create a Service, but default to an internal load balancer
This is somewhat safer than the "pinniped-website-default" configuration, but does not work out-of-the-box on many cloud provider clusters. This could be useful as a default for unattended installations:
Bring your own Service
This configuration assumes that you will configure some kind of Service or other load balancing out of band. Pinniped should only issue an appropriate certificate and serve the proxy on the appropriate port:
ClusterIP Service for cluster-local clients
This configuration is useful if all the clients (e.g., Kubeapps) are running within the cluster, so the proxy does not need to be exposed outside the cluster:
Pre-provisioned external IP address with DNS
This configuration assumes that you have pre-reserved some external IP address that is valid on your cluster's load balance r implementation. You also have some DNS name pointed at this IP, which is what you would like your users to reference in their kubeconfigs:
Integration with external-dns via annotation
A similar configuration would be to use kubernetes-sigs/external-dns to manage the DNS entry, based on another annotation:
Custom TLS (not in scope for this issue)
These options are not meant to be implemented as part of this issue, but are designed as examples of how we can extend this API design to future use cases:
Edited 05/17 to switch from boolean "disable" to enum "mode" and add ClusterIP support (diff)
The text was updated successfully, but these errors were encountered: