Skip to main content

More Info:

etcd should be configured to make use of TLS encryption for client connections.

Risk Level

Low

Address

Security

Compliance Standards

  • CIS Kubernetes

Triage and Remediation

Remediation

Manual Steps

  1. On every control plane node, confirm the current kube-apiserver manifest and running args:
  2. Ensure you have a CA file that issued the etcd server/client certificates (replace the path below with the actual CA if different):
  3. Edit the kube-apiserver static pod manifest on every control plane node to add or correct the --etcd-cafile flag (this edit will automatically restart the kube-apiserver container when the file is saved):
    Under spec.containers[0].command, ensure there is a line similar to:
    Save and exit the editor.
  4. (If etcd is external and using different CA) Adjust the path in step 3 to the correct etcd CA file, and make sure the file exists and is readable by root:
  5. Wait for the kubelet to detect the manifest change and restart the kube-apiserver pod. Confirm the pod is running:
  6. Verify the kube-apiserver is now started with the correct --etcd-cafile argument on every control plane node:
kubectl cannot modify the kube-apiserver static pod manifest or its process flags, so it cannot be used to set the --etcd-cafile argument. To remediate this finding, you must edit /etc/kubernetes/manifests/kube-apiserver.yaml directly on every control plane node as described in the Manual Steps section.

Additional Reading: