Skip to content

Feat/scs minor versions#259

Draft
jschoone wants to merge 5 commits intomainfrom
feat/scs-minor-versions
Draft

Feat/scs minor versions#259
jschoone wants to merge 5 commits intomainfrom
feat/scs-minor-versions

Conversation

@jschoone
Copy link
Contributor

What this PR does / why we need it:

Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #

Special notes for your reviewer:

Please confirm that if this PR changes any image versions, then that's the sole change this PR makes.

TODOs:

  • squash commits
  • include documentation
  • add unit tests

@jschoone jschoone added the Container Issues or pull requests relevant for Team 2: Container Infra and Tooling label Feb 21, 2026
@jschoone jschoone requested a review from Nils98Ar February 22, 2026 07:54
@jschoone jschoone marked this pull request as draft February 22, 2026 07:56
@jschoone
Copy link
Contributor Author

Most things work so far, still in heavy testing.
Replaces #248, #252, #255 if everything's fine

@jschoone
Copy link
Contributor Author

  • Matrix should be added to the docs automatically

@jschoone
Copy link
Contributor Author

The stack.yaml is a merge of csctl and versions.yaml
The old files can still be readded to the older versions to keep them backwards compatible also to keep csctl working, but I think using oras etc directly in a script is a much more lightweight solution

Replace the previous build system (csctl, Makefile, Python scripts, Go release
notes) with a streamlined set of bash scripts and a justfile.

New tooling:
- hack/build.sh: build + publish + --install-cso flag with next-steps output
- hack/update.sh: unified version/addon updater with image-manager maintenance
- hack/generate-resources.sh: ClusterStack + Cluster YAML generator with
  .release/ auto-detection
- hack/generate-image-manifests.sh: ORC and image-manager format generator
- hack/show-matrix.sh: version/addon matrix display with --markdown flag
- justfile: task runner with dev, install-cso, generate-*, matrix recipes
- Containerfile + flake.nix: reproducible tooling environment

Removed:
- hack/ensure-*.sh, hack/generate_version.py, hack/kind-dev.sh
- hack/generate_openstack_image_manager_yaml.sh
- hack/tools/release/notes.go

Assisted-by: Claude Code
Signed-off-by: Jan Schoone <jan.schoone@uhurutec.com>
…ries

Reorganize all cluster stacks into self-contained per-minor-version directories:

  providers/<provider>/<stack>/1-XX/
    stack.yaml          # metadata: provider, name, k8s version, addon pins
    cluster-class/      # Helm chart producing ClusterClass
    cluster-addon/      # Helm chart with CNI, CCM, CSI, metrics-server
    node-images/        # image build definitions (OpenStack only)

Each directory is fully independent -- no inheritance or sharing between
minor versions. This supports different CAPI API versions (v1beta1 for 1-32,
v1beta2 for 1-35) and version-specific addon pins (CCM 2.34.x for K8s 1.34).

Stacks created:
- openstack/scs: 1-32 (v1beta1, snake_case), 1-33 (v1beta1, camelCase),
  1-34 (copy of 1-33), 1-35 (v1beta2, unified variables)
- docker/scs: 1-32 through 1-35

Also adds providers/openstack/scs/image-manager.yaml (aggregated image
references for all OpenStack minor versions).

Removes:
- providers/openstack/scs2/ (consolidated into openstack/scs)
- Old flat directory structure (csctl.yaml, versions.yaml, etc.)

Assisted-by: Claude Code
Signed-off-by: Jan Schoone <jan.schoone@uhurutec.com>
Add providers/openstack/hcp/ with versions 1-33, 1-34, and 1-35.

The HCP stack runs the Kubernetes control plane as pods in the management
cluster using the teutonet Hosted Control Plane provider
(HostedControlPlaneTemplate, controlplane.cluster.x-k8s.io/v1alpha1).
Only worker nodes are created as OpenStack VMs.

Key differences from the scs stack:
- No machineInfrastructure for control plane (no CP VMs)
- Worker-prefixed variables (workerFlavor, workerRootDisk, etc.)
- Gateway API integration (gatewayName/gatewayNamespace variables)
- disableAPIServerFloatingIP: true, apiServerLoadBalancer: none by default
- Same addons as scs (Cilium, CCM, CSI, metrics-server)

Based on origin/hcp branch, adapted to per-minor-version structure.

Assisted-by: Claude Code
Signed-off-by: Jan Schoone <jan.schoone@uhurutec.com>
Rewrite all documentation to reflect the new per-Kubernetes-minor-version
directory layout, OCI-based workflow, and v1beta2 ClusterClass variables.

Tooling changes:
- hack/show-matrix.sh: Add --markdown flag for GFM table output
- hack/docugen.py: Add --matrix flag to embed version matrix in docs
- hack/config-template.md: Update template for v1beta2, add !!matrix!!
- justfile: Fix generate-docs to iterate all stacks with correct args

New documentation:
- docs/quickstart.md: Universal quickstart (OpenStack, Docker, HCP)
- docs/providers/openstack/hcp.md: HCP architecture and configuration
- docs/providers/openstack/scs-configuration.md: v1beta2 variable reference
- docs/providers/docker/scs-configuration.md: Docker stack variable reference

Removed:
- docs/providers/openstack/quickstart.md (replaced by docs/quickstart.md)
- docs/providers/openstack/configuration.md (replaced by scs-configuration.md)

Assisted-by: Claude Code
Signed-off-by: Jan Schoone <jan.schoone@uhurutec.com>
Re-add csctl.yaml files adapted for the per-minor-version structure.
Each version directory now contains its own csctl.yaml with the correct
provider type, cluster stack name, and Kubernetes minor version.

Assisted-by: Claude Code
Signed-off-by: Jan Schoone <jan.schoone@uhurutec.com>
@jschoone jschoone force-pushed the feat/scs-minor-versions branch from 6218088 to 9af6ce4 Compare February 25, 2026 11:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Container Issues or pull requests relevant for Team 2: Container Infra and Tooling

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

1 participant