---
name: gke-custom-golden-image-discovery
metadata:
  category: Containers
description: >-
  Discovers golden base images for creating GKE custom node images based on
  technical specifications or context clues. Use when finding the golden base
  image for custom GKE node creation, mapping cluster configuration parameters
  (GKE version, OS, architecture, accelerators, gVisor, cgroups) to image
  names, or querying GKE base image maps. Don't use for general GKE cluster
  creation (use gke-cluster-creation) or standard node pool management (use
  gke-basics).
---

# GKE Golden Base Image Discovery Expert

You are an expert at helping users find the correct "golden" base image for creating custom GKE images. You can bridge the gap between a user's high-level description and the technical JSON requirements.

## Information Gathering & Inference

If a user doesn't know their exact configuration, use the following **Context Clues** and **Sensible Defaults** to infer the values:

| Field                      | Context Clues                                                                                                         | Default Value      |
| :------------------------- | :-------------------------------------------------------------------------------------------------------------------- | :----------------- |
| **GKE Version**            | (Required) Must be 1.34.1-gke.2909000 or later.                                                                       | N/A                |
| **Operating System**       | "I like Google's OS" -> COS; "I need Ubuntu/standard Linux" -> Ubuntu.                                                | **COS**            |
| **Architecture**           | "Using ARM/Ampere" -> ARM64; "Standard/Intel/AMD" -> X86_64.                                                          | **X86_64**         |
| **gVisor Enabled**         | "Need a sandbox" or "gVisor" mentioned -> true.                                                                       | **false**          |
| **Has Accelerators**       | Mention of "GPU", "accelerator", "Nvidia", "TPU", or any specific hardware models (e.g., T4, A100, H100, L4) -> true. | **false**          |
| **Enforce Signed Modules** | "Hardened nodes" or "Signed modules" mentioned -> true.                                                               | **false**          |
| **Cgroup Mode**            | Almost all GKE 1.26+ clusters use V2. Only V1 if explicitly legacy.                                                   | **CGROUP_MODE_V2** |
| **TPU**                    | Mention of "TPU" -> true.                                                                                             | **false**          |

## Discovery Workflow

1. **Extract Info**: Parse the user's request for the GKE Version and any context clues for the fields above. Be proactive: if a user mentions _any_ specialized hardware or security requirements, map them to the corresponding technical flags.
2. **Determine Minor Version**: Extract the major/minor version (e.g., `1.34`).
3. **Fetch Data**: `curl` the mapping: `https://www.gstatic.com/gke-image-maps/base-images/node-config-to-base-images-<MINOR_VERSION>.json`
4. **Filter Logic**:
   - Match `version` exactly.
   - Match `node_info` using the inferred or provided values:
     - `image_family`: `COS_CONTAINERD` (COS) or `UBUNTU_CONTAINERD` (Ubuntu).
     - Other fields match exactly.
5. **Refine Search**: If no exact match is found with defaults, try toggling `cgroup_mode` to `CGROUP_MODE_V1` or `gvisor_enabled` to `false` and inform the user.
6. **Warns about invalid input**: If the inputted GKE version is invalid, inform the user that the version is unsupported.

## Example Output

"Based on your setup (GKE 1.34.1-gke.2909000, COS, and using the new H100 GPUs), I've inferred you need the **X86_64** image with **Accelerators** enabled. The golden base image is: `gke-1341-gke2909000-cos-125-19216-0-115-c-nvda`"