SovereignCloudStack / SovereignCloudStack/cluster-stacks

Provide a clear list of available ClusterStacks (in OCI Registry or GitHub Releases) with versions

Open
#224 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
13
Forks
8
PR merge metrics
No merged PRs in 30d

Description

As a cluster stack user I want to see a clear, discoverable list of available ClusterStack versions, including:

  • ClusterStack.spec.kubernetesVersion
  • ClusterStack.spec.versions (including the relevant sha values)
  • Cluster.topology.version used during cluster creation

At the moment, it's not obvious where this version mapping can be found. Ideally, there would be a table or endpoint showing the full list of published cluster stacks, either:

  • In the OCI registry (if using one)
  • Or via GitHub releases or tags

Example of what I’m looking for:

1.32.1, v0-sha.XXXXX, 1.32
1.32.0, v0-sha.XXXXX, 1.32
1.31.6, v1-sha.YYYYY, 1.31
1.31.5, v1-sha.YYYYY, 1.31
1.31.4, v0-sha.ZZZZZ, 1.31
1.30.11, v2-sha.AAAAA, 1.30
1.30.10, v2-sha.AAAAA, 1.30
1.30.9, v1-sha.BBBBB, 1.30

Find the helper script that does the above for the OCI cluster stacks

#!/bin/bash

REPO="registry.scs.community/kaas/cluster-stacks"
DEST_DIR="./cluster-stacks-tmp"

# Check dependencies
command -v oras >/dev/null 2>&1 || { echo >&2 "oras not found. Install it first."; exit 1; }
command -v yq >/dev/null 2>&1 || { echo >&2 "yq not found. Install it first."; exit 1; }

mkdir -p "$DEST_DIR"

# Array to hold the output rows
declare -a rows
rows+=("infrastructure | ClusterStack.spec.kubernetesVersion | ClusterStack.spec.versions | k8sCluster.topology.version_minor")  # Header row

# Get list of tags (skip header line)
tags=$(oras repo tags "$REPO" | tail -n +2)

for tag in $tags; do
  echo "Pulling: $REPO:$tag"
  target_dir="$DEST_DIR/$tag"
  mkdir -p "$target_dir"

  if ! oras pull "$REPO:$tag" -o "$target_dir"; then
    echo "Failed to pull $tag" >&2
    continue
  fi

  metadata_file="$target_dir/metadata.yaml"
  if [[ -f "$metadata_file" ]]; then
    kubernetes=$(yq e '.versions.kubernetes' "$metadata_file")
    clusterstack=$(yq e '.versions.clusterStack' "$metadata_file")
    k8s_minor=$(echo "$kubernetes" | sed -E 's/v?([0-9]+\.[0-9]+)\..*/\1/')
    infrastructure=$(echo "$tag" | cut -d'-' -f1)

    rows+=("${infrastructure} | ${kubernetes} | ${clusterstack} | ${k8s_minor}")
  else
    echo "No metadata.yaml found in $tag" >&2
  fi
done

# Print all collected output at the end
echo
for row in "${rows[@]}"; do
  echo "$row"
done

rm -rf "$DEST_DIR"

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the OCI ClusterStacks helper script described in the issue and review how it uses oras, yq, and metadata.yaml to collect version data. Check how published tags or GitHub releases are currently exposed. Done means users can discover a complete mapping of Kubernetes versions, ClusterStack versions and hashes, and cluster topology versions.

Written by the indexing model from the issue text.

Assessment

Tech stack
bash, kubernetes
Domain
devops, infrastructure
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.