Files
cluster-autoscaler-with-capi/CHANGELOG.md
T
kacerrandClaude Opus 5.5 6ef55778ff lab1 workers on both PVE nodes: per-node template + MD, balanced CA
PVE is now the 2-node cluster homelab (pv1-1 + pv1-2), no shared storage:
- template 101 copied to pv1-2 as 9101; MDs lab1-workers-pv1-1 (max 6) and
  lab1-workers-pv1-2 (max 12), PMTs pinned with allowedNodes; pool .31-.50;
  lab1-workers renamed for symmetry (decision #18, #7 superseded)
- CA: balancing-label node.cluster.x-k8s.io/pool (+ pool label, capacity labels
  with os/arch, maxPods on the MDs), scan-interval 1m, v 2, default QPS (#19).
  Scale test: 16 pods -> 4 + 4 across both nodes.
- runbook, image-builder copy procedure, fixes tables, future task to report
  three CA clusterapi bugs upstream, lab facts, changelog, execution log

Plan: docs/plans/2026-09-29-2315-pv1-2-workers.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 11:07:17 +02:00

3.6 KiB
Raw Blame History

Changelog

2026-09-30 11:05 CEST — lab1 workers on both PVE nodes, balanced autoscaling

  • PVE cluster. It is now the 2-node cluster homelab: pv1-1 plus pv1-2 (192.168.0.10).
    • vmbr0 on pv1-2 is VLAN-aware.
    • Template 101 is copied to pv1-2 as 9101 (clone + offline migrate). local-lvm can't clone across nodes.
  • lab1 workers. One MachineDeployment per PVE node: lab1-workers-pv1-1 (max 6) and lab1-workers-pv1-2 (max 12).
    • Each is pinned by allowedNodes.
    • The node IP pool is .31–.50.
    • The control plane stays on pv1-1.
    • The old lab1-workers was replaced to get symmetric names.
  • cluster-autoscaler. Balances the two groups (a scale-up of 16 pods gave 4 + 4).
    • Settings: balancing-label: node.cluster.x-k8s.io/pool, scan-interval: 1m and v: 2.
    • The MDs got the pool label, capacity…/labels (os/arch) and maxPods.
    • The request rate is left at the default. scan-interval cuts the discovery calls the clusterapi provider makes without a cache.
  • Findings. Three CA 1.35.2 clusterapi bugs: uncached discovery, labels read from a wrong v1beta2 path, and empty os/arch labels for CAPMOX. They are worked around in config and logged in docs/future-tasks.md for reporting upstream.
  • Files:
    • configs/capi/lab1.yaml, configs/cluster-autoscaler/values.yaml, configs/capi/clusterctl.yaml.example
    • docs/phase-1-proxmox-capi.md, docs/image-builder-proxmox.md, docs/decisions.md (#18, #19; #7 superseded), docs/future-tasks.md
    • plan, execution log and session note
    • README.md, CLAUDE.md, AGENTS.md

2026-09-27 10:40 CEST — Management cluster running, built by an idempotent Ansible playbook

  • Phase 1 Step 2 done: ansible/mgmt.yml creates VM 201 lab-mgmt (192.168.4.21) on pv1-1 from the pinned Ubuntu cloud image, installs k3s v1.35.8+k3s1, cert-manager v1.21.2 and cluster-api-operator 0.28.0, and CAPI v1.12.11 / CAPMOX v0.9.1 / IPAM v1.1.1 as operator Provider CRs (all READY). A second full run reports changed=0.
  • clusterctl init is gone from the runbook; clusterctl (v1.12.11 in ~/bin) is used only for generate/describe/get kubeconfig. Proxmox credentials moved to ansible/secrets.yml.
  • cluster-inspector role can now read Provider CRs, HelmCharts and nodes.
  • Files: ansible/, docs/phase-1-proxmox-capi.md, docs/versions.md, docs/decisions.md (#12–14), configs/capi/clusterctl.yaml.example, CLAUDE.md, README.md.

2026-09-27 00:02 CEST — Read-only cluster-inspector credentials next to the agent

  • Moved inspector RBAC from configs/rbac/ to .claude/cluster-inspector/ with make-kubeconfig.sh (applies RBAC once, mints a short-lived TokenRequest token, writes gitignored kubeconfigs/<name>.kubeconfig, runs can-i checks) and a setup README.
  • Dropped the long-lived service-account-token Secret; tokens default to 7 days, refresh by re-running.
  • cluster-inspector agent now reads only .claude/cluster-inspector/kubeconfigs/*; .gitignore covers that dir and .claude/settings.local.json.
  • Files: .claude/cluster-inspector/, .claude/agents/cluster-inspector.md, CLAUDE.md, README.md, .gitignore, docs/decisions.md.

2026-09-26 23:55 CEST — Project history conventions

  • Adopted plan / execution-log / prompt / review / changelog conventions from egress-proxies-operator, plus new docs/decisions.md (back-filled) and docs/sessions/.
  • Git flow: docs straight to main, phase-3 code via feat/ branch + tea MR; /ship command.
  • Files: CLAUDE.md, docs/decisions.md, docs/sessions/, .claude/.