Skip to main content

More Info:

Enable Kubelet authentication using certificates.

Risk Level

Low

Address

Security

Compliance Standards

  • CIS Kubernetes

Triage and Remediation

Remediation

Manual Steps

  1. On every control plane node, identify the API server static pod manifest and current flags:
    Also confirm you have (or create) a suitable client CA file (typically the cluster CA):
  2. On every control plane node, back up the API server manifest before editing:
  3. On every control plane node, edit /etc/kubernetes/manifests/kube-apiserver.yaml and add or adjust the --client-ca-file argument under the container command list to point to your CA file (example uses /etc/kubernetes/pki/ca.crt):
    If the flag does not exist yet, append a new line under the other -- flags (edit with an editor such as vi):
    Add, aligned with the other args:
    Saving this file will cause the kube-apiserver static pod to restart automatically.
  4. On every control plane node, ensure the CA file is readable by the kube-apiserver process (usually runs as root, so default permissions are fine). For standard kubeadm layouts:
  5. On every control plane node, wait for the kube-apiserver pod to restart and become Ready:
  6. Verification on every control plane node: confirm the running kube-apiserver process now has the expected --client-ca-file argument set:
    You should see an argument like: --client-ca-file=/etc/kubernetes/pki/ca.crt.
kubectl cannot change the kube-apiserver’s --client-ca-file setting or any other host-level flags; this must be fixed by editing /etc/kubernetes/manifests/kube-apiserver.yaml directly on every control plane node. Refer to the Manual Steps section for the exact on-node configuration changes and verification commands.

Additional Reading: