Skip to main content

More Info:

Node Auto-Upgrade Keeps Nodes At The Current Kubernetes And Os Security Patch Level To Mitigate Known Vulnerabilities

Risk Level

Medium

Address

Security

Compliance Standards

  • CIS GKE

Triage and Remediation

Remediation

Manual Steps

  1. Identify all node pools and their auto-upgrade status
    • Run on: any machine with gcloud access.
    • Note any node pools where management.autoUpgrade is not True.
  2. Get detailed management settings per node pool
    • For each node pool from step 1, run:
    • Confirm whether autoUpgrade is true or false and record it.
  3. Review operational and change-management constraints
    • For node pools with autoUpgrade: false, discuss with application owners/SREs:
      • Whether they rely on manual control of node versions (e.g., for strict change windows, legacy workloads, or custom kernel features).
      • Whether there is an alternative patching process (documented, tested, and regularly executed).
    • Decide for each pool whether automatic upgrades are acceptable, and if not, document the business justification and the alternate upgrade process.
  4. Enable node auto-upgrade where acceptable
    • For each node pool where you decide auto-upgrade should be enabled, run:
    • Be aware this changes how upgrades are scheduled; future automatic upgrades may cause node recreations during Google-managed windows.
  5. If you must keep auto-upgrade disabled, harden manual processes
    • For node pools intentionally left with autoUpgrade: false, define and document:
      • A regular schedule to run:
        and plan manual node pool upgrades when new patch versions are available.
      • Change-control procedures and maintenance windows for manual upgrades:
  6. Verify the final state
    • Re-run the audit to confirm the configuration matches your decisions:
    • Optionally, for each node pool:
    • Ensure auto-upgrade is enabled where required and disabled only where formally justified.
kubectl cannot enable Node Auto-Upgrade because this setting is managed at the GKE control-plane / node pool configuration level via gcloud, console, or IaC, not via Kubernetes API objects. Refer to the Manual Steps section for the exact gcloud commands and configuration changes to enable auto-upgrade on the affected node pools.
Explanation of output indicating a problem:
  • For each node pool, look at the management block, specifically autoUpgrade.
  • Any node pool where:
    • "autoUpgrade": false, or
    • autoUpgrade is missing or null
is non-compliant with CIS GKE 5.5.3 and will be flagged in the script output as:>>> PROBLEM: autoUpgrade is NOT enabled for this node pool

Additional Reading: