Skip to main content

More Info:

Allow pods to verify the API servers serving certificate before establishing connections.

Risk Level

Low

Address

Security

Compliance Standards

  • CIS Kubernetes

Triage and Remediation

Remediation

Manual Steps

  1. On every control plane node, back up the existing manifest:
  2. On the same node, identify the appropriate root CA bundle file present on the host (coordinate with your PKI/security team if unsure). Common examples include:
  3. Edit the controller manager manifest on the control plane node to configure the root CA file (replace the example path with the correct bundle you identified in step 2):
    Under the command: or args: list for kube-controller-manager, add (or update) the flag, for example:
    Save and exit. Because this is a static pod manifest, the kube-controller-manager pod will be automatically restarted by the kubelet when the file changes.
  4. (If needed) Ensure the configured file is readable by the kube-controller-manager container on the control plane node:
    If the file is not already accessible in the pod via a volume mount, add an appropriate hostPath volume and volumeMount in kube-controller-manager.yaml pointing to the directory that contains the CA file, then save the manifest again to trigger a restart.
  5. Wait for the kube-controller-manager pod to restart and become Running on the control plane node:
  6. Verification on every control plane node (derived from the audit command): confirm the running process includes the --root-ca-file flag with the correct path:
    Check that the output shows --root-ca-file=/etc/kubernetes/pki/ca.crt (or the exact path you configured).
kubectl cannot modify the kube-controller-manager static pod manifest or its process flags, so this finding cannot be fixed via the Kubernetes API. To remediate, you must edit /etc/kubernetes/manifests/kube-controller-manager.yaml directly on every control plane node as described in the Manual Steps section.

Additional Reading: