-
Notifications
You must be signed in to change notification settings - Fork 726
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
Consider allowing custom certificates on the transport layer #6479
Comments
After some experimentation I was able to confirm my theory that using custom certificates with cert-manager csi-driver is already possible today. The overriding of the transport SSL config settings leads to warnings in the logs that we should maybe reconsider if we want to make this an officially supported way of running. Also worth noting that the existing setting for the transport level CA just happens to work as is because the CSI driver generated cert secrets contain the CA under the
What I have not tested yet is how well this setup works with remote clusters (both external ones and ones managed by ECK) |
Adding some more notes on remote cluster support in combination with the cert-manager csi-driver based approach to transport:
I am assuming that remote cluster support works right away when set up manually given that the issue I described is purely a matter of pulling the right |
I forgot that tools like https://cert-manager.io/docs/projects/trust-manager/ exist which can propagate the public part of a cert-manager created secret to other namespaces. We should therefore support the following secret data contents variations:
UPDATE: this is incorrect. trust manager uses config maps |
Design decisions to make here:
|
I suggest we do the following:
|
Just to double check I understand correctly: would it automatically setup Reading the Elasticsearch documentation about
|
Yes that would be the idea. The expectation for the contents would be one or more PEM encoded x509 certificates. Elsticsearch is able to parse more than one out of a single file. This would allow us to support tools like trust manager. |
Thanks for your explanation on how Nit: naming, I wonder if we should try to reuse the word transport:
tls:
ca:
configMapName: my-bundle or transport:
tls:
certificateAuthorities:
configMapName: my-bundle |
I liked |
Existing functionality:
The user provided CA and the private key needs to be exposed to the ECK operator to issue certificates. It will create a Kubernetes secret to contain all certificates and private keys for each of the nodes in the Elasticsearch cluster.
Pre-generating the certificates is impractical because the number of Elasticsearch nodes may grow and shrink as the cluster scales. The operator can of course deal with this by updating the certificate secret as needed. But a user would not.
To allow an even tighter integration with existing certificate infrastructure and decoupling of the certificate generation from the ECK operator we should investigate if we can support https://cert-manager.io/docs/projects/csi-driver/
This would allow us to mount node specific certificates without sharing keys.
Trade-offs:
Plan:
transport.tls.certificateAuthorities.configMapName
andhttp.tls.certificateAuthorities.configMapName
(for symmetry) to allow users to specify additionally trusted CAs (enables tools like trust-manager, and allows ECK to uses those in remote cluster associations)xpack.security.transport.ssl.key
,xpack.security.transport.ssl.certificate
(to discuss: should this be only be allowed when they settransport.tls.certificate.trust
?)certificateAuthorities
attribute.The text was updated successfully, but these errors were encountered: