Skip to content

feat: redefine isKubernetesImage for AWS/GCP and update K8s cluster assets#2332

Merged
cb-github-robot merged 4 commits intocloud-barista:mainfrom
hanizang77:260227
Mar 9, 2026
Merged

feat: redefine isKubernetesImage for AWS/GCP and update K8s cluster assets#2332
cb-github-robot merged 4 commits intocloud-barista:mainfrom
hanizang77:260227

Conversation

@hanizang77
Copy link
Copy Markdown
Contributor

  • Add IBM section in k8sclusterinfo.yaml (K8s versions 1.31-1.34, nodeImageDesignation: false)
  • Update GCP K8s versions (2026-02-19), add NCP rootDisk config, enable IBM k8scluster in cloud_conf.yaml
  • Add AWS EKS node image types (AL2023, Bottlerocket, Windows) to cloudimage.csv

@github-actions github-actions bot added the asset label Feb 27, 2026
@hanizang77 hanizang77 requested review from seokho-son and removed request for seokho-son and yunkon-kim February 27, 2026 04:57
@hanizang77
Copy link
Copy Markdown
Contributor Author

Two commits are included in this PR:

  • 1st commit (chore): asset data only — K8s version updates for GCP/IBM, IBM k8scluster enablement in cloud_conf.yaml, and AWS/GCP EKS/GKE node image type entries in cloudimage.csv
  • 2nd commit (feat): the corresponding code changes for issue Kubernetes Node Image Management: Cross-CSP Analysis #2325 — redefine isKubernetesImage semantics for AWS/GCP, pass node image type identifiers to CB-Spider, and add input validation

@hanizang77 hanizang77 changed the title chore: update K8s cluster info, cloud config, and image CSV feat: redefine isKubernetesImage for AWS/GCP and update K8s cluster assets Feb 27, 2026
Copy link
Copy Markdown
Member

@seokho-son seokho-son left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hanizang77 Thanks for this update!

I have minor comments on this PR. PTAL.

if isAutoRegistered {
log.Info().Msgf("Image '%s' was auto-registered from CSP for K8sNodeGroup", dReq.ImageId)
}
// ✅ FIX: Assign imageId to request (this was missing!)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
// ✅ FIX: Assign imageId to request (this was missing!)

I think this comment is not for the upstream repo. I guess it was just generated from an AI to explain it to human..

Comment on lines +2206 to +2209
case csp.AWS:
return "AL2023_x86_64_STANDARD"
case csp.GCP:
return "COS_CONTAINERD"
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think putting static IDs in the source code is good way for maintaining the code base.

for instance, "AL2023_x86_64_STANDARD" this keyword or id can be easily changed by CSP. If a CSP changes it, Users may need to rebuild source code. :)

Comment on lines +25 to +43
AWS,all,AL2023_x86_64_STANDARD,Amazon Linux 2023,EKS Node - Standard x86_64,,
AWS,all,AL2023_ARM_64_STANDARD,Amazon Linux 2023,EKS Node - Standard ARM64,,
AWS,all,BOTTLEROCKET_x86_64,Bottlerocket,EKS Node - x86_64,,
AWS,all,BOTTLEROCKET_ARM_64,Bottlerocket,EKS Node - ARM64,,
AWS,all,WINDOWS_FULL_2019_x86_64,Windows Server 2019 Full,EKS Node - Windows Full,,
AWS,all,WINDOWS_CORE_2019_x86_64,Windows Server 2019 Core,EKS Node - Windows Core,,
AWS,all,WINDOWS_FULL_2022_x86_64,Windows Server 2022 Full,EKS Node - Windows Full,,
AWS,all,WINDOWS_CORE_2022_x86_64,Windows Server 2022 Core,EKS Node - Windows Core,,
AWS,all,AL2_x86_64,Amazon Linux 2,EKS Node - x86_64,,
AWS,all,AL2_x86_64_GPU,Amazon Linux 2 GPU,EKS Node - GPU x86_64,,
AWS,all,AL2_ARM_64,Amazon Linux 2,EKS Node - ARM64,,
AWS,all,UBUNTU_20_04,Ubuntu 20.04,EKS Node - Ubuntu 20.04,,
AWS,all,UBUNTU_22_04,Ubuntu 22.04,EKS Node - Ubuntu 22.04,,
GCP,all,COS_CONTAINERD,Container-Optimized OS,GKE Node - Containerd,,
GCP,all,COS,Container-Optimized OS,GKE Node - Docker,,
GCP,all,UBUNTU_CONTAINERD,Ubuntu,GKE Node - Containerd,,
GCP,all,UBUNTU,Ubuntu,GKE Node - Docker,,
GCP,all,WINDOWS_LTSC_CONTAINERD,Windows LTSC,GKE Node - Containerd,,
GCP,all,WINDOWS_SAC_CONTAINERD,Windows SAC,GKE Node - Containerd,,
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hanizang77

I assume this image information was gathered from CSP CLI tools.
Could you share full information for these images from CSP CLI tools? It is to identify details that can be matched with existing image info field. :)

@hanizang77
Copy link
Copy Markdown
Contributor Author

Image Information Investigation Results Based on CSP CLI

Changes in Investigation Methodology

In the previous investigation, standard image information was collected by referencing AWS & GCP official documentation and CLI tools (aws CLI v2, gcloud CLI 559.0.0). This time, in addition to CLI tools, image information was further verified through each CSP's console.


Required Improvements to cloudimage.csv

The following issues were identified in the AWS/GCP entries of cloudimage.csv. For AWS, 5 image types require removal due to EOL or legacy reasons, and an additional 7 new image types are missing and need to be added. For GCP, 3 image types require removal. Details are explained in each section.

Issue AWS GCP
EOL entries exist ⚠️ AL2 3 types (EOL completed), Ubuntu 2 types (free AMI discontinued) ⚠️ SAC 1 type (Microsoft EOL)
Legacy entries exist ⚠️ Docker runtime 2 types (dockershim removed in K8s 1.24)
New entries to add ⚠️ GPU 4 types, Neuron 1 type, Windows 2025 2 types (7 types missing in total)
Direct image mapping possible ✅ Direct AMI ID mapping available ❌ GKE-managed internally, direct mapping not possible

1. AWS EKS — Image Type Query Results via CLI

For the full list of CLI commands used in this investigation, see Reference — CLI Commands Used at the bottom of this document.

Actual CLI Response — aws ec2 describe-images Output (AL2023_x86_64_STANDARD example)

{
  "ImageId": "ami-0ab7e50653c9945f0",
  "Name": "amazon-eks-node-al2023-x86_64-standard-1.35-v20260224",
  "Description": "EKS-optimized Kubernetes node based on Amazon Linux 2023, (k8s: 1.35.0, containerd: 2.1.*)",
  "Architecture": "x86_64",
  "VirtualizationType": "hvm",
  "RootDeviceType": "ebs",
  "OwnerId": "602401143452",
  "State": "available",
  "CreationDate": "2026-02-24T...",
  "Public": true
}

cloudimage.csv Field Mapping (AWS)

cloudimage.csv Field AWS CLI Response Field Example Value
providerName (fixed value) AWS
regionName (query region, applied commonly) all
cspImageName EKS API type identifier (not an AMI ID) AL2023_x86_64_STANDARD
osType Parsed from Name field pattern Amazon Linux 2023
description Description (partial) EKS Node - Amazon Linux 2023, x86_64, Standard
supportedInstance (requires separate query, not filled in currently)

Note: The cspImageName for AWS is a type identifier recognized by the EKS API.
It is used directly with the --ami-type option when creating node groups via aws eks describe-nodegroup or similar commands.
The actual AMI ID (ami-xxxxxxxxx) is resolved at runtime based on this type identifier.


AWS Full Image Type Query Summary (ap-northeast-2, as of 2026-02-24~03-04)

Each EKS image type has a dedicated 1:1 mapping to a specific AMI ID per Kubernetes version. For example, the AL2023_x86_64_STANDARD type has separate AMIs for each K8s version from 1.29 to 1.35, and the AMI IDs listed in the table represent the latest K8s version for each type.

The following 5 types should be removed from cloudimage.csv:

  • AL2_x86_64, AL2_ARM_64, AL2_x86_64_GPU → Amazon Linux 2 EOL completed on 2025-06-30, no new AMIs being published
  • UBUNTU_20_04, UBUNTU_22_04 → Canonical discontinued free AMI distribution; now Ubuntu Pro (paid subscription) only

The following 7 types need to be added to cloudimage.csv:

  • BOTTLEROCKET_x86_64_NVIDIA, BOTTLEROCKET_ARM_64_NVIDIA → Bottlerocket-based NVIDIA GPU-optimized types (x86_64/arm64)
  • AL2023_x86_64_NVIDIA, AL2023_ARM_64_NVIDIA → Amazon Linux 2023-based NVIDIA GPU-optimized types (x86_64/arm64)
  • AL2023_x86_64_NEURON → Amazon Linux 2023-based AWS Inferentia/Trainium (Neuron) optimized type
  • WINDOWS_CORE_2025_x86_64, WINDOWS_FULL_2025_x86_64 → Newly supported Windows Server 2025 types (Core/Full)

These are variant types (GPU/Neuron-optimized and Windows 2025) that fall outside the standard image type category and were omitted during the first investigation.
At the time of the first investigation, name filters were applied primarily for standard variants, which caused these types to be excluded from the query.
Their existence was confirmed through console queries in this round of investigation.

Expand — Full Query Results for 13 Types (1st Investigation)
cspImageName (EKS Type) Latest AMI ID AMI Name K8s Support Range Architecture Latest Creation Date Notes
AL2023_x86_64_STANDARD ami-0ab7e50653c9945f0 amazon-eks-node-al2023-x86_64-standard-1.35-v20260224 1.29 ~ 1.35 x86_64 2026-02-24 ✅ Keep
AL2023_ARM_64_STANDARD ami-09d1a213ecee8d351 amazon-eks-node-al2023-arm64-standard-1.35-v20260224 1.29 ~ 1.35 arm64 2026-02-24 ✅ Keep
BOTTLEROCKET_x86_64 ami-0c7ac2a23666643a4 bottlerocket-aws-k8s-1.35-x86_64-v1.56.0-36151b8b 1.29 ~ 1.35 x86_64 2026-02-26 ✅ Keep
BOTTLEROCKET_ARM_64 ami-0bb9d7a7fa79bc805 bottlerocket-aws-k8s-1.35-aarch64-v1.56.0-36151b8b 1.29 ~ 1.35 arm64 2026-02-26 ✅ Keep
WINDOWS_FULL_2019_x86_64 ami-0bb903c3201f06f6d Windows_Server-2019-English-Full-EKS_Optimized-1.35-2026.02.16 1.29 ~ 1.35 x86_64 2026-02-17 ✅ Keep
WINDOWS_CORE_2019_x86_64 ami-033d7e366bab17d07 Windows_Server-2019-English-Core-EKS_Optimized-1.35-2026.02.16 1.29 ~ 1.35 x86_64 2026-02-17 ✅ Keep
WINDOWS_FULL_2022_x86_64 ami-04ea3c7f93f5f0d91 Windows_Server-2022-English-Full-EKS_Optimized-1.35-2026.02.16 1.29 ~ 1.35 x86_64 2026-02-17 ✅ Keep
WINDOWS_CORE_2022_x86_64 ami-063352d3b60aa9499 Windows_Server-2022-English-Core-EKS_Optimized-1.35-2026.02.16 1.29 ~ 1.35 x86_64 2026-02-17 ✅ Keep
AL2_x86_64 ami-0467af496f9e030a2 amazon-eks-node-1.32-v20251209 1.29 ~ 1.32 x86_64 2025-12-10 ❌ Remove (AL2 EOL)
AL2_ARM_64 ami-0e90ce752292bd6c6 amazon-eks-arm64-node-1.32-v20251209 1.29 ~ 1.32 arm64 2025-12-10 ❌ Remove (AL2 EOL)
AL2_x86_64_GPU ami-0e0688c86f84aa196 amazon-eks-gpu-node-1.32-v20251209 1.29 ~ 1.32 x86_64 2025-12-10 ❌ Remove (AL2 EOL)
UBUNTU_20_04 ami-0010b1648d48db840 ubuntu-eks-pro/k8s_1.29/.../ubuntu-focal-20.04-amd64-server-20251203 1.29 only x86_64/arm64 2025-12-03 ❌ Remove (Ubuntu Pro paid only)
UBUNTU_22_04 ami-089efa5be842c9057 ubuntu-eks-pro/k8s_1.30/.../ubuntu-jammy-22.04-amd64-server-20260228 1.29 ~ 1.31 x86_64/arm64 2026-02-28 ❌ Remove (Ubuntu Pro paid only)
Expand — Additional Query Results for 7 Types (2nd Investigation, 2026-03-04)
cspImageName (EKS Type) Latest AMI ID AMI Name K8s Support Range Architecture Latest Creation Date Notes
BOTTLEROCKET_x86_64_NVIDIA ami-09acf0d8421cb7cd3 bottlerocket-aws-k8s-1.35-nvidia-x86_64-v1.56.0-36151b8b 1.29 ~ 1.35 x86_64 2026-02-26 ✅ Addition required (GPU workloads)
BOTTLEROCKET_ARM_64_NVIDIA ami-0b3327be2f5239faa bottlerocket-aws-k8s-1.35-nvidia-aarch64-v1.56.0-36151b8b 1.29 ~ 1.35 arm64 2026-02-26 ✅ Addition required (GPU workloads)
AL2023_x86_64_NVIDIA ami-092e2e8f0d0ece2e7 amazon-eks-node-al2023-x86_64-nvidia-1.35-v20260224 1.29 ~ 1.35 x86_64 2026-02-24 ✅ Addition required (GPU workloads)
AL2023_ARM_64_NVIDIA ami-0b55b4cea75ad6cc1 amazon-eks-node-al2023-arm64-nvidia-1.35-v20260224 1.29 ~ 1.35 arm64 2026-02-24 ✅ Addition required (GPU workloads)
AL2023_x86_64_NEURON ami-0fa7efbde1dc14389 amazon-eks-node-al2023-x86_64-neuron-1.35-v20260224 1.29 ~ 1.35 x86_64 2026-02-24 ✅ Addition required (AWS Inferentia/Trainium)
WINDOWS_CORE_2025_x86_64 ami-03160067a3360bdad Windows_Server-2025-English-Core-EKS_Optimized-1.35-2026.02.16 1.29 ~ 1.35 x86_64 2026-02-17 ✅ Addition required (New Windows 2025)
WINDOWS_FULL_2025_x86_64 ami-04c5122489cca9a98 Windows_Server-2025-English-Full-EKS_Optimized-1.35-2026.02.16 1.29 ~ 1.35 x86_64 2026-02-17 ✅ Addition required (New Windows 2025)

CLI name pattern reference (used in 2nd investigation):

  • Bottlerocket NVIDIA: bottlerocket-aws-k8s-{k8s}-nvidia-{arch}-v* (note: arch and nvidia are in reversed order compared to standard types)
  • AL2023 NVIDIA: amazon-eks-node-al2023-{arch}-nvidia-*
  • AL2023 Neuron: amazon-eks-node-al2023-x86_64-neuron-*
  • Windows 2025: Same pattern as existing 2019/2022, only the year changes to 2025

2. GCP GKE — Image Type Query Results via CLI

For the full list of CLI commands used in this investigation, see Reference — CLI Commands Used at the bottom of this document.

Actual CLI Response

gcloud container get-server-config response (image type related section)

defaultImageType: COS_CONTAINERD
validImageTypes:
  - COS_CONTAINERD
  - COS
  - UBUNTU
  - UBUNTU_CONTAINERD
  - WINDOWS_LTSC
  - WINDOWS_LTSC_CONTAINERD
  - WINDOWS_SAC
  - WINDOWS_SAC_CONTAINERD
defaultClusterVersion: 1.34.3-gke.1318000

gcloud compute images list response (COS-based OS image example)

{
  "name": "cos-stable-121-18867-381-14",
  "family": "cos-stable",
  "architecture": "X86_64",
  "diskSizeGb": "10",
  "status": "READY",
  "creationTimestamp": "2026-02-27T13:04:50.814-08:00",
  "description": "Google, Container-Optimized OS, 121-18867.381.14 stable, Kernel: COS-6.6.122 Kubernetes: 1.30.3 Docker: 27.5.1 Family: cos-stable"
}

cloudimage.csv Field Mapping (GCP)

cloudimage.csv Field GCP CLI Response Field Example Value Notes
providerName (fixed value) GCP
regionName (applied commonly) all
cspImageName validImageTypes[] entry COS_CONTAINERD --image-type option value
osType Parsed from description field Container-Optimized OS
description (manually specified) GKE Node - COS, containerd Not provided directly by the API
supportedInstance (requires separate query, not filled in currently)

Note: The cspImageName for GCP GKE is not a specific image.
There is no equivalent to AWS's AMI ID in GKE.
COS_CONTAINERD is a configuration selection value passed as --image-type=COS_CONTAINERD when creating a node pool;
the GKE platform internally selects the appropriate GCE VM image. This specific image is not exposed via public APIs.

The COS/Ubuntu images retrieved via gcloud compute images list are base OS images used by GKE,
and do not correspond 1:1 with GKE node images.


GCP Full Image Type Query Summary (asia-northeast3, as of 2026-02-27~03-04)

Unlike AWS, GKE image types do not follow a 1:1 mapping concept like per-K8s-version AMI IDs; they are configuration selection values passed via the --image-type parameter. GKE internally selects the appropriate image for each type.

The following 3 types should be removed from cloudimage.csv. This was confirmed both via GCP console inspection and by directly attempting to create node pools for each type using gcloud container node-pools create, which validated the removal reasons at the API level. Note that gcloud container get-server-config's validImageTypes returns all 8 types, so console visibility and API acceptance do not necessarily align:

  • COS, UBUNTULegacy types based on Docker (dockershim) runtime. dockershim was officially removed in K8s 1.24. API rejection confirmed (code=400)
  • WINDOWS_SAC_CONTAINERD → Windows Server SAC channel was officially announced as discontinued by Microsoft in 2021, with end-of-support (EOS) in June 2023. API rejection confirmed (code=400)
  • WINDOWS_LTSC_CONTAINERD is grayed out in the console but accepted by the API — Windows node pools require a separate configuration path from Linux node pools, so it appears disabled only in the Linux node pool creation panel.
Expand — Full Query Results for 8 Types
cspImageName (GKE Type) Base OS Image (reference) Runtime K8s Support Range Architecture GKE Default Console Visibility Notes
COS_CONTAINERD cos-stable-121-18867-381-14 (Kernel: COS-6.6.122) containerd 1.32 ~ 1.35 x86_64, arm64 ✅ Default ✅ Selectable ✅ Keep
UBUNTU_CONTAINERD ubuntu-2204-jammy-v20260226 (Ubuntu 22.04 LTS) containerd 1.32 ~ 1.35 x86_64, arm64 ✅ Selectable ✅ Keep
WINDOWS_LTSC_CONTAINERD Windows Server 2019 LTSC (internally managed) containerd 1.32 ~ 1.35 x86_64 ⬜ Grayed out ✅ Keep: selectable when cluster requirements are met
COS (same OS as COS_CONTAINERD, runtime only differs) Docker x86_64, arm64 ❌ Disabled ❌ Remove: dockershim removed in GKE v1.24+
UBUNTU (same OS as UBUNTU_CONTAINERD, runtime only differs) Docker x86_64, arm64 ❌ Disabled ❌ Remove: dockershim removed in GKE v1.24+
WINDOWS_SAC_CONTAINERD Windows Server SAC (Microsoft EOL) containerd x86_64 ❌ Disabled ❌ Remove: SAC EOL
WINDOWS_LTSC (same as WINDOWS_LTSC_CONTAINERD, runtime only differs) Docker x86_64 ❌ Disabled ❌ Remove: dockershim removed in GKE v1.24+
WINDOWS_SAC (SAC + Docker, doubly legacy) Docker x86_64 ❌ Disabled ❌ Remove: SAC EOL + dockershim removed in GKE v1.24+

Note: Base OS image information is provided for reference only and does not correspond 1:1 with the images GKE actually deploys to nodes. When using WINDOWS_LTSC_CONTAINERD, a Linux node pool must co-exist in the cluster (--enable-ip-alias required, minimum n1-standard-2), and it can only be selected through the Windows-dedicated node pool creation path. (GKE official documentation)


3. AWS vs GCP — Fundamental Differences in Image Architecture

Comparing the CLI query results from both CSPs reveals that the image type concepts of AWS EKS and GCP GKE are fundamentally different.

For AWS EKS, cspImageName is an AMI type identifier recognized by the EKS API (e.g., AL2023_x86_64_STANDARD), and each type maps 1:1 to a specific AMI ID (ami-xxxxxxxxx) per Kubernetes version — a concrete artifact that can be directly queried and verified via CLI.

In contrast, the cspImageName for GCP GKE is merely a configuration selection value (e.g., COS_CONTAINERD) passed via the --image-type option when creating a node pool. The GKE platform automatically selects the appropriate image internally, and that specific image is not exposed through public APIs. This makes it impossible to directly specify an image ID or establish a 1:1 correspondence with CLI results as in AWS.

Item AWS EKS GCP GKE
Nature of cspImageName AMI type identifier recognized by the EKS API Configuration parameter string for GKE node pools
Actual image artifact Exists — directly queryable by specific AMI ID Not exposed — GKE selects and manages images internally
Direct image ID specification Possible (explicit AMI ID) Not possible (only --image-type option value accepted)
1:1 mapping with CLI query results ✅ Possible ⚠️ Incomplete (only base OS images are queryable)

Reference — CLI Commands Used

AWS (aws CLI v2, region: ap-northeast-2)

aws ec2 describe-images was used to collect detailed image information.
aws ssm get-parameter returns only a single AMI ID string, so it was not used for detailed field collection.

# AL2023, Windows variants — repeat query by changing name pattern per image type
aws ec2 describe-images \
  --owners amazon \
  --filters "Name=name,Values=amazon-eks-node-al2023-x86_64-standard-*" \
            "Name=state,Values=available" \
  --region ap-northeast-2 \
  --query "reverse(sort_by(Images, &CreationDate))[:3]" \
  --output json

# Note when querying Bottlerocket standard variants:
# The --filters name pattern also returns nvidia/fips variants,
# so jq post-processing is required to extract only standard AMIs.
# (AWS CLI Filters do not support negative conditions)

# BOTTLEROCKET_x86_64 — standard x86_64 (excluding nvidia, fips)
aws ec2 describe-images \
  --owners amazon \
  --filters "Name=name,Values=bottlerocket-aws-k8s-*-x86_64-v*" \
            "Name=state,Values=available" \
  --region ap-northeast-2 \
  --output json | jq '[.Images[] | select(.Name | test("nvidia|fips") | not)] | sort_by(.CreationDate) | reverse | .[:3] | {Name: .[].Name, ImageId: .[].ImageId}'

# BOTTLEROCKET_ARM_64 — standard aarch64 (excluding nvidia, fips)
aws ec2 describe-images \
  --owners amazon \
  --filters "Name=name,Values=bottlerocket-aws-k8s-*-aarch64-v*" \
            "Name=state,Values=available" \
  --region ap-northeast-2 \
  --output json | jq '[.Images[] | select(.Name | test("nvidia|fips") | not)] | sort_by(.CreationDate) | reverse | .[:3] | {Name: .[].Name, ImageId: .[].ImageId}'

# SSM Parameter Store — single AMI ID lookup (for reference)
# Output example: ami-0ab7e50653c9945f0
aws ssm get-parameter \
  --name "/aws/service/eks/optimized-ami/1.32/amazon-linux-2023/x86_64/standard/recommended/image_id" \
  --query "Parameter.Value" --output text

GCP (gcloud CLI 559.0.0, zone: asia-northeast3-a)

# Query GKE image type list (validImageTypes, defaultImageType, etc.)
gcloud container get-server-config \
  --zone=asia-northeast3-a \
  --format=json

# Base OS image query — COS family
gcloud compute images list \
  --project=cos-cloud \
  --filter="name~'^cos-' AND family:cos-stable AND status=READY" \
  --sort-by="~creationTimestamp" \
  --format=json --limit=3

# Base OS image query — Ubuntu family (x86_64)
gcloud compute images list \
  --filter="status=READY AND family:ubuntu-2204-lts" \
  --sort-by="~creationTimestamp" \
  --format=json --limit=3

# Base OS image query — Ubuntu family (ARM64)
gcloud compute images list \
  --filter="status=READY AND family:ubuntu-2204-lts-arm64" \
  --sort-by="~creationTimestamp" \
  --format=json --limit=3

hanizang77 added a commit to hanizang77/cb-tumblebug that referenced this pull request Mar 5, 2026
Refine cloudimage.csv and remove hardcoded default image logic
@hanizang77
Copy link
Copy Markdown
Contributor Author

Follow-up to PR #2332 (feat: redefine isKubernetesImage for AWS/GCP and update K8s cluster assets).

assets/cloudimage.csv

  • Add missing AWS entries
  • Remove EOL/legacy AWS entries and deprecated GCP entries
  • Refine osType: add (ARM64) suffix for ARM64 entries (consistent with Azure convention)
  • Refine osType: remove Full/Core from Windows osType; clarify in description instead
  • Refine osType: Ubuntu → Ubuntu 22.04 LTS (GCP), Windows LTSC → Windows Server 2019 LTSC
  • Enrich descriptions: add OS family, containerd runtime, and architecture info

src/core/infra/provisioning.go

  • Remove AI-generated inline comment (// ✅ FIX: Assign imageId to request)

src/core/resource/k8scluster.go

  • Remove getDefaultK8sImageName() which hardcoded AL2023_x86_64_STANDARD (AWS) and
    COS_CONTAINERD (GCP) as static fallbacks
  • Delegate default node image handling to CB-Spider driver level instead:
    pass empty string when imageId is unspecified, letting each CSP driver apply
    its own default — avoids source-code changes when CSP updates image type identifiers

@hanizang77
Copy link
Copy Markdown
Contributor Author

Test Results — AWS/GCP K8s Cluster Creation via MapUI

Performed end-to-end cluster creation tests via MapUI to validate the changes in this PR.

Test Summary

CSP Image Type Used Node Group Creation Image Type Displayed in MapUI
AWS AL2023_x86_64_STANDARD ✅ Success ❌ Not displayed
GCP COS_CONTAINERD ✅ Success ❌ Not displayed

Details

  • Cluster creation and node group addition completed successfully for both AWS (EKS) and GCP (GKE)
    using the image type identifiers registered in cloudimage.csv.
  • However, the selected image type is currently not reflected in the MapUI display.

hanizang77 added a commit to hanizang77/cb-tumblebug that referenced this pull request Mar 6, 2026
Refine cloudimage.csv and remove hardcoded default image logic
@hanizang77
Copy link
Copy Markdown
Contributor Author

Fix: AWS EKS / GCP GKE node image types not appearing in cb-mapui image search

Root Cause

  • When a VM spec is selected in cb-mapui, its architecture (x86_64 or arm64) is automatically applied as a SQL filter condition in the SearchImage() API
  • EKS/GKE images stored with os_architecture = '' could not pass this filter, causing them to never appear in the cb-mapui image search list
  • Unlike Azure images, AWS EKS / GCP GKE node image types cannot retrieve metadata such as os_architecture via CSP API, so they were stored in the DB with an empty string for os_architecture

Fix

  • Added osArchitecture and osDistribution columns to cloudimage.csv and explicitly set values for AWS/GCP images where CSP API lookup is unavailable
  • Azure images are left empty since their values are populated via CSP API
  • This allows the SearchImage() architecture filter to keep its strict condition while correctly returning EKS/GKE images
Provider cspImageName example osArchitecture osDistribution
AWS AL2023_x86_64_STANDARD x86_64 AL2023_x86_64_STANDARD
AWS AL2023_ARM_64_STANDARD arm64 AL2023_ARM_64_STANDARD
AWS BOTTLEROCKET_ARM_64 arm64 BOTTLEROCKET_ARM_64
GCP COS_CONTAINERD x86_64 COS_CONTAINERD
AZURE Canonical:ubuntu-24_04-lts:server:... (empty) (empty)

DB Verification

  • Verified directly in PostgreSQL after running cleanDB.shdocker compose upinit.sh

Total registered images (535,577 total)

Provider CSV entries DB result Note
AWS 15 ✅ All 15 present
AZURE 23 ✅ All 23 present
GCP 3 ✅ All 3 present

os_architecture / os_distribution stored values

-- AWS examples
aws | AL2023_ARM_64_STANDARD | arm64  | AL2023_ARM_64_STANDARD | k8s|kubernetes|container
aws | AL2023_x86_64_STANDARD | x86_64 | AL2023_x86_64_STANDARD | k8s|kubernetes|container
aws | BOTTLEROCKET_ARM_64    | arm64  | BOTTLEROCKET_ARM_64    | k8s|kubernetes|container

-- GCP examples
gcp | COS_CONTAINERD    | x86_64 | COS_CONTAINERD    | k8s|kubernetes|container
gcp | UBUNTU_CONTAINERD | x86_64 | UBUNTU_CONTAINERD | k8s|kubernetes|container

-- AZURE examples (populated by CSP API)
azure | Canonical:ubuntu-24_04-lts:server-arm64:... | arm64  | ubuntu-24_04-lts:server-arm64 | vm
azure | Canonical:ubuntu-24_04-lts:server:...       | x86_64 | ubuntu-24_04-lts:server       | vm

⚠️ Additional Fix: Removed Azure Oracle Linux image

  • During verification, Oracle:Oracle-Linux:ol93-arm64-lvm-gen2:9.3.3 was found to have empty os_architecture and os_distribution in the DB
  • Root cause: Oracle has discontinued Oracle Linux distribution on Azure Marketplace, causing the CSP API to return ImageVersionDeprecated (404)
  • The entry has been removed from cloudimage.csv
VM Image from publisher: Oracle with - Offer: Oracle-Linux,
Sku: ol93-arm64-lvm-gen2, Version: 9.3.3 is deprecated.

@seokho-son
Copy link
Copy Markdown
Member

@hanizang77 Could you check why other commits have been included this PR? https://github.com/cloud-barista/cb-tumblebug/pull/2332/commits

- Add IBM section in k8sclusterinfo.yaml (K8s versions 1.31-1.34, nodeImageDesignation: false)
- Update GCP K8s versions (2026-02-19), add NCP rootDisk config, enable IBM k8scluster in cloud_conf.yaml
- Add AWS EKS node image types (AL2023, Bottlerocket, Windows) to cloudimage.csv
Redefine the semantics of isKubernetesImage to mean "usable for K8s node creation" and fix the image type not being passed to CB-Spider during K8s cluster/nodegroup creation
Refine cloudimage.csv and remove hardcoded default image logic
@hanizang77
Copy link
Copy Markdown
Contributor Author

@seokho-son

Sorry for the confusion caused by the messy branch history.

I've force-pushed a cleaned-up version that includes only my 4 intended commits, with duplicate commits removed.

Thank you for your review!

Copy link
Copy Markdown
Member

@seokho-son seokho-son left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @hanizang77

LGTM!

@seokho-son
Copy link
Copy Markdown
Member

/approve

@github-actions github-actions bot added the approved This PR is approved and will be merged soon. label Mar 9, 2026
@cb-github-robot cb-github-robot merged commit 116516d into cloud-barista:main Mar 9, 2026
4 checks passed
@hanizang77 hanizang77 deleted the 260227 branch March 9, 2026 02:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved This PR is approved and will be merged soon. asset

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants