Create client certificates per server with SAN values #382
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Currently, the client certificate that is created by the kubetool is shared between all controller nodes without any SAN (Subject Alternative Name). Checking etcd logs when the "master" etcd controller goes down show the following error:
rejected connection from "10.10.10.104:43816" (error "remote error: tls: bad certificate", ServerName "")Because of that error, it's not possible anymore to call Kubernetes cluster using kubectl until the etcd node is back.
The fix implemented simply creates one client certificate per K8S controller node with SAN fields with correct values (DNS name and IP). After a few etcd failover tests, the etcd cluster continues to work and kubectl is working, too.
Environment