k8s-1.27 (Foundation / On-Prem)¶
Installiert k3s auf Linux-Hosts (Controlplane- und Worker-VMs/Bare Metal). Das ist der Block für Foundation-Cluster: Hosts für Loadbalancer, Ceph/Rook, und die Umgebung, auf der k3s-server-Controlplanes laufen.
Host-Härtung, auditd und der Log-Collector (Vector → VictoriaLogs) liegen im Foundation-Block ayedo/linux/hardening — Howto: Logs ingestieren.
In der Polycrate API entspricht so ein Cluster typischerweise einer Region (Standort + Service-Angebot: S3, Edge, Controlplane-IPAM).
| Block | cargo.ayedo.cloud/ayedo/linux/k8s-1.27 |
| Name | historisch k8s-1.27 — unterstützt k3s ab 1.27 (config.k3s.version) |
| Inventory | inventory.yml im Workspace-Root |
| Kubeconfig | artifacts/secrets/kubeconfig.yml |
Aktuelle Block-Version und Changelog: Hub bzw. CHANGELOG.poly im Block.
Wann dieser Block?¶
- On-Premises, BYOC, Air-Gap
- Foundation-/Infra-Cluster (nicht Tenant-Workload-CP)
- Multi-Master k3s auf echten Nodes
- Cilium statt Flannel (
flannel.disabled: truebei Erstinstallation)
Tenant-Controlplanes auf einem bestehenden Host-Cluster: k3s-server.
Features¶
- Multi-Node HA Controlplane + Worker (Ansible-Gruppen)
- OIDC am kube-apiserver
- Private Registry Mirrors (
k3s.private_registries) - TLS SANs, Resource-Limits, Eviction,
maxpods - Controlplane ohne Agent (
k3s.controlplane.disable_agent) + Taints - Flannel aus für Cilium; kube-proxy aus für Cilium kube-proxy-replacement
- Optional k3s ServiceLB / local-path-provisioner (Foundation oft aus — SDP bringt Cilium LB + CSI)
- Externer Cloud-Provider (
external_cloud_provider) - Actions:
install,configure-cluster,join-cluster,show-ips,restart-k3s(Cordon/Drain),uninstall,hosts
Inventory¶
# inventory.yml (Workspace-Root)
all:
children:
k8s_controlplane:
hosts:
cp-1:
ansible_host: 10.0.0.11
ansible_user: ubuntu
ansible_become: true
cp-2:
ansible_host: 10.0.0.12
ansible_user: ubuntu
ansible_become: true
cp-3:
ansible_host: 10.0.0.13
ansible_user: ubuntu
ansible_become: true
k8s_worker:
hosts:
worker-1:
ansible_host: 10.0.0.21
ansible_user: ubuntu
ansible_become: true
Gruppen-Namen müssen zu config.ansible_host_groups passen. inventory.from an der Block-Instanz ist Legacy.
Workspace¶
blocks:
- name: k8s
from: cargo.ayedo.cloud/ayedo/linux/k8s-1.27:0.3.7
config:
cluster_name: foundation
cluster_ip_detection:
enabled: true
init:
restart_nodes: true # nach dem ersten Install auf false
oidc:
enabled: true
issuer_url: "https://id.example.com/realms/kubernetes"
client_id: "k8s-foundation"
username_claim: "email"
groups_claim: "groups"
k3s:
version: v1.34.4+k3s1
token: mySecureTokenAtLeast10
maxpods: "110"
cidr: 10.42.0.0/16
tlssans:
- k8s-api.example.com
private_registries:
enabled: true
content:
mirrors:
docker.io:
endpoint:
- "https://registry.example.com:443"
flannel:
disabled: true # Cilium folgt als SDP-Block
kube_proxy:
disabled: true # wenn Cilium kube-proxy-replacement
ansible_host_groups:
controlplane: k8s_controlplane
worker: k8s_worker
polycrate run k8s show-ips
polycrate run k8s install
polycrate run k8s configure-cluster
polycrate run k8s join-cluster
polycrate run k8s restart-k3s
| Option | Bedeutung |
|---|---|
k3s.version | k3s-Release (ab v1.27) |
k3s.token | Join-Secret, ≥ 10 Zeichen |
k3s.cidr | Pod-CIDR |
k3s.tlssans | extra API-SANs |
oidc.enabled | Enterprise-Login |
flannel.disabled | alternativer CNI (Cilium) — nur bei Erstinstallation |
external_cloud_provider | externer CCM; nachträglich nicht abschaltbar ohne Rebuild |
cluster_ip_detection.enabled | IPs automatisch; sonst Inventory-Werte |
Einmalige Schalter
Flannel-Disable und external_cloud_provider gelten bei der ersten Installation. Wechsel = Cluster neu aufsetzen.
Foundation und Regionen¶
Nach dem Cluster:
- SDP-Blöcke auf diesem Cluster: Cilium (BGP/LB), Rook/Ceph, Envoy/NGINX, VictoriaMetrics / VictoriaLogs
- Foundation-Hosts härten und Host-Logs shippen: ayedo/linux/hardening — Logs ingestieren
- In der API eine Region an den Workspace/Cluster hängen
- Darauf K8sControlplane / S3 / Loadbalancer ausrollen
Die Distro endet am lauffähigen k3s. Storage- und Edge-Blöcke sind SDP.
Day-2¶
| Thema | Action / Hinweis |
|---|---|
| IPs prüfen | polycrate run k8s show-ips |
| Config ohne Reinstall | configure-cluster |
| Node-Restart | restart-k3s (Cordon → Drain → Restart → Uncordon; k3s.restart.drain_disabled) |
| Version | k3s.version setzen, install |
| Inventory | polycrate run k8s hosts |