Skip to content
🟡In Arbeit52%
Vollständigkeit:
60%
Korrektheit:
70%
⏳ Noch nicht geprüft

Skriptarchitektur V1s

Diese Seite beschreibt die Installationsmodule der V1s-Buildvariante und ihre Aufrufreihenfolge. Grundlage sind die V1-Module. V1s ergänzt den lokalen Portal-Backend-Image-Build und den Vorab-Install der Prometheus-Operator-CRDs.

Modulübersicht

Die Module liegen in civitas_einrichtung/modules_V1s/:

ModulVerantwortlichkeit
00_provision_vm.shVM-Provisionierung auf Proxmox (Phase -1)
01_config.shZentrale Konfigurationsvariablen
02_lib.shHilfsfunktionen (Logging, Idempotenz-Prüfungen)
03_preflight.shVorbedingungen prüfen (Phase 0)
04_k3s.shk3s-Cluster installieren (Phase 1a)
05_addons.shAdd-ons: Helm, Gateway-API-CRDs, cert-manager, CA, Prometheus-Operator-CRDs, nginx-Ingress (Phase 1b)
06_civitas.shOrchestrierung: Repository, Overlay, cc_cli-Lifecycle (Phase 2)
06a_network_certs.shWireGuard und Zertifikatsverwaltung
06b_idm_provisioning.shKeycloak-Admin-User und Rollen-Provisionierung
06c_image_build.shPortal-Backend-Image lokal bauen und in containerd importieren (V1s-spezifisch)
07_verify.shVerifikation orchestrieren (Phase 3)
07a_verify_phase1.shCluster- und Add-on-Prüfungen (k3s-Node, System-Pods, cert-manager, ClusterIssuer, nginx-Ingress, StorageClass)
07b_verify_phase2.shPlattformprüfungen (Namespaces, Pods, Ingress, TLS, Keycloak- und Portal-Erreichbarkeit, WireGuard)
07c_verify_tests.shE2E-Testsuite ausführen (optional, nur bei RUN_TESTS=true)
07d_report.shFehlerreport und Exit-Code
07_login_summary.shLogin-Zusammenfassung nach Installation

Aufrufreihenfolge

Phase 1b: Add-ons (install_addons() in 05_addons.sh)

SchrittFunktionHinweis
1install_helmHelm-CLI
2install_gateway_api_crdsGateway-API-CRDs
3install_cert_managercert-manager
4configure_cluster_issuerzweistufiger CA-Issuer
5setup_ca_trustCA in System-Store und certifi
6install_cico_utilscico-shutdown und cico-uncordon
7install_prometheus_operator_crdsV1s-neu: Prometheus-Operator-CRDs vorab
8install_nginx_ingressnginx-Ingress
9verify_storage_classStorage-Class-Prüfung

Phase 2: Plattform (install_civitas() in 06_civitas.sh)

SchrittFunktionHinweis
1check_dns_hardDNS-Prüfung
2clone_civitas_repoRepository klonen
3build_geoportal_backend_imageV1s-neu (Schritt 2.0b): Image-Build und containerd-Import
4apply_overlayOverlays aus overlay_V1s/ einspielen
5patch_masterportal_release_nameRelease-Name patchen
6install_cc_clicc_cli installieren
7render_inventoryInventory erzeugen
8setup_wireguardWireGuard einrichten
9patch_playbook_urlsPlaybook-URLs patchen
10cleanup_geodata_ingressGeodata-Ingress bereinigen
11run_cc_cli_validatecc_cli validate
12run_cc_cli_execcc_cli exec
13wait_pods_readyPods je Namespace abwarten
14resolve_target_stateZertifikats-Zielzustand bestimmen
15apply_target_stateZertifikate anwenden
16ensure_keycloak_admin_userKeycloak-Admin anlegen
17verify_certificatesZertifikate verifizieren
18configure_pgadmin_ca_trustpgAdmin-CA-Trust

Gefundene potenzielle Upstream-Bugs

Während des V1s-Testlaufs am 2026-08-31 wurden zwei Sachverhalte in den CIVITAS/CORE-Upstream-Komponenten sichtbar. Beide sind in V1s umgangen, im Upstream aber noch offen.

  1. ServiceMonitor-CRD-Abhängigkeit im APISIX-Helm-Chart: Bei aktivem Monitoring rendert das APISIX-Helm-Chart metrics.serviceMonitor.enabled: true ohne Bedingung. Läuft der APISIX-Install vor dem Monitoring-Stack, fehlt die ServiceMonitor-CRD (monitoring.coreos.com/v1) und der Helm-Install schlägt fehl. V1s installiert die Prometheus-Operator-CRDs deshalb vorab in 05_addons.sh (install_prometheus_operator_crds(), v0.89.0).

  2. QuantumLeap-Fixture-KeyError in der E2E-Testsuite: Die session-scoped config()-Fixture in e2e_tests/fixtures/fixtures_config.py greift direkt mit os.environ["QUANTUMLEAP_DB_PASSWORD"] zu, ohne .get(). Fehlt die Variable, bricht die Fixture beim ersten Aufruf mit KeyError ab. Dadurch werden alle E2E-Tests in der Setup-Phase als Fehler markiert, nicht nur QuantumLeap-bezogene. V1s setzt in generate_test_env() (07c_verify_tests.sh) den Wert QUANTUMLEAP_DB_PASSWORD=unused. Der saubere Upstream-Fix wäre os.environ.get("QUANTUMLEAP_DB_PASSWORD", "unused").