-
Notifications
You must be signed in to change notification settings - Fork 9.8k
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
access http health probes without client-cert auth #18477
Comments
The solution is to set a HTTP endpoint to serve metrics and health endpoints using |
@tjungblu are you happy to close this ticket? |
Thanks for the suggestion @ahrtr. https://github.com/etcd-io/etcd/blob/main/server/embed/etcd.go#L828-L842 We need all endpoints with https, metrics need to continue with client cert, the probes can go without. |
Please test it out. No matter what endpoints (either http or https) you set for |
Sure.
curling just the endpoint yields:
ignoring certs in curl yields:
curling with certificates yields:
Unfortunately not an option here. The metrics are unfortunately coupled with the probes in one server :/ |
|
Yes @serathius I understood what @ahrtr meant, we can't have unprotected (as in plain HTTP) endpoints running. |
Usually If you insist on HTTPS for |
I wish, we have many gov and FIPS customers that employ awesome compliance tools that scan for these things.
I agree. |
What would you like to be added?
With #17039 in 3.5.11 we also wanted to revise our usage of health and readiness probes, which currently relies on a custom sidecar container to facilitate grpc and client cert auth to "proxy" health checks to etcd (imagine a very naive grpc proxy).
We were thinking to replace it with the simple liveness definition of:
which fails with:
We currently supply both
--client-cert-auth=true
and--peer-client-cert-auth=true
and would like to keep it that way in terms of authN/Z.As K8s doesn't have the option to pass certificates into the probes, we would continue to be stuck with the current proxy solution.
TL;DR: I would love to allow the endpoints under
etcdhttp.HandleHealth
to be served without client auth.It's certainly not that easy to implement in the codebase, we have this configured in:
etcd/client/pkg/transport/listener.go
Lines 539 to 542 in f402c2a
One hacky option would be to have a separate server with
tls.NoClientCert
that just runs a mux with the health probes.Why is this needed?
Kubernetes doesn't allow to pass certificates for client authentication to liveness probes.
The text was updated successfully, but these errors were encountered: