Kops' Kubelet PKI management

6/21/2019

[meta: there is more Kubernetes question activity here on SO than Serverfault so asking here even though it's not a programming question. Please flag for migration if asking here is inappropriate]

Summary: How are kubelet certificates signed in Kops? At least in our environment they seem to be using a CA per node.

Details

Inspecting the SSL certs of a kubelet endpoint in our Kops deployment (Kops is managing Kubernetes v1.12.9) I see the following cert details

subject=CN = ip-10-1-2-3.ec2.internal@1561089780
issuer=CN = ip-10-1-2-3.ec2.internal-ca@1561089780

Note the issuer appears specific to that node. How does the api-server actually speak to the kubelets? Surely auth would fail due to the unknown (to api-server) CA. But it is obviously working because the cluster is functional but I don't understand why.

In contrast, for learning purposes, I set up a cluster manually and there the Kubelet cert subject and issuers are:

subject=CN=system:node:worker-1
issuer=CN=Kubernetes

(Some location boilerplate omitted)

Which, as I'd expect, has a common CA signing all Kubelet certs - the api-server then uses that CA with --client-ca-file to enable auth to the Kubelets.

-- Fred Clausen
kops
kubernetes

1 Answer

6/24/2019

The reason for this, in my case, was because the Kubelets are being authorized via a webhook so the certs don't come into play.

-- Fred Clausen
Source: StackOverflow