Files
infrapuzzle/bootstrap/AGENTS.md
T
Moritz Graf 87649e6e22 chore(bootstrap): upgrade kubespray to release-2.28 and kubernetes to v1.32.13
- Bump Kubespray baseline to release-2.28 (last release supporting Ubuntu 20.04)
- Upgrade Kubernetes control plane and node to v1.32.13
- Configure single-node cluster settings (drain_nodes: false)
- Add patch for Kubespray v1beta4 kubeadm preflight error handling
- Update init.sh, AGENTS.md, and README.md with two-phase upgrade instructions
2026-09-19 22:57:19 +02:00

2.4 KiB

AGENTS.md

Note

This directory handles the bootstrapping and provisioning of the Haumdaucher Kubernetes cluster using Kubespray.

Project Overview

  • Tool: Kubespray (Ansible-based).
  • Method: The local inventory/ is the source of truth, which is synced into a checked-out Kubespray repository.
  • Idempotency: The process is designed to be repeatable. The kubespray folder is treated as ephemeral and is re-created by init.sh.

Workflow & Scripts

The core workflow is encapsulated in init.sh.

init.sh

Purpose: Prepares the environment and Kubespray for deployment. Actions:

  1. Clean Slate: Deletes existing kubespray/ directory.
  2. Clone: Clones Kubespray (version defined in variable VERSION, e.g., release-2.28).
  3. Environment: Sets up Python virtualenv via pyenv and installs requirements.txt.
  4. Sync: Copies local ./inventory/ configurations into ./kubespray/inventory/.

Usage

  1. Source the script:
    source init.sh
    
  2. Deploy / Upgrade: After sourcing, go to the kubespray directory and run the Ansible playbooks as instructed by the script output.
    • Phase 1: Reconcile Kubespray baseline (stay on current k8s version):
      cd kubespray
      ansible-playbook -i inventory/prod/inventory.ini cluster.yml
      
    • Phase 2: Upgrade Kubernetes version (e.g. to v1.32.13): Update kube_version in inventory/prod/group_vars/k8s_cluster/k8s-cluster.yml, re-sync, and run:
      cd kubespray
      ansible-playbook -i inventory/prod/inventory.ini -e upgrade_cluster_setup=true cluster.yml
      

Directory Structure

  • init.sh: The entry point script. Source of truth for Kubespray version.
  • inventory/: Contains cluster inventory configurations (hosts, variables). Edit this, not the one in kubespray/.
  • kubespray/: (Ignored/Ephemeral) The checked-out Kubespray repository. Do not edit files here directly; they will be overwritten.

Configuration Updates

To upgrade Kubespray or change cluster config:

  1. Version Upgrade: Update VERSION in init.sh (e.g., to release-2.28).
  2. Config Changes: Modify files in ./inventory/.
  3. Apply: Run source init.sh then execute the Ansible playbook.