Air-Gap-Auslieferung
Air-Gap-Auslieferung
Schrittfolge, um eine mit Polycrate paketierte Anwendung ohne Internetzugang auf einem Zielcluster zu installieren und zu aktualisieren. Bausteine: Registry-Proxy, Harbor, bereitgestellter Cluster.
Beispielorganisation: acme, Registry registry.acme.corp. Kein konkretes Kundenprodukt.
Was ins Bundle gehört
Ein Offline-Bundle ist ein signiertes, versionsgepinntes Archiv, kein „latest“-Ordner:
- Anwendungs-Images und Basis-Images (alle Architekturen, die der Cluster braucht)
- Polycrate-Blöcke als OCI-Artefakte (gleiche Tags wie in
workspace.poly) - das Polycrate-CLI-Container-Image (Actions laufen darin)
- optional: Git-Snapshot des Kern-Workspaces (ohne Secrets)
- Prüfsummen / Signatur (Cosign oder gleichwertig)
Secrets (secrets.poly) gehören nicht ins Bundle. Die erzeugt die lokale Site.
Online bauen
Auf einem Rechner mit Registry-Zugang (CI oder Bastion von acme):
- Images bauen und mit unveränderlichem Tag versehen (
1.4.0, nichtlatest) - Blöcke pullen und in die Staging-Registry schieben
- Manifest der enthaltenen Digests schreiben
- Archiv erzeugen und signieren
# Prinzip — konkrete Pfade legt das Kernpaket fest
polycrate blocks pull cargo.ayedo.cloud/ayedo/k8s/harbor:2.0.0
# … weitere from:-Referenzen aus workspace.poly
# Images + Blöcke + CLI-Image in registry.acme.corp spiegeln
# danach: Archiv + Signatur für sneakernet / kontrollierten Import
Transfer und Import
- Bundle an den air-gapped Standort (Datenträger oder erlaubter Import-Pfad)
- Signatur prüfen
- In die lokale Harbor-Instanz laden (
registry.acme.corp) - Pull-Secret für die Ziel-Namespaces anlegen
Harbor-Bedienung: Application Deployment.
Registry-Rewrite
Im air-gapped Workspace zeigen from:-Zeilen weiter auf die Ursprungsregistry. Polycrate schreibt sie über registry.proxy um — Details und Credentials: Registry.
name: acme-plant-site-a
organization: acme
registry:
endpoint: registry.acme.corp
proxy:
- from: cargo.ayedo.cloud/ayedo
to: registry.acme.corp/cargo-proxy/ayedo
Installieren und Rollback
Voraussetzung: Cluster-Vertrag erfüllt, Jump-Host mit Docker, lokale kubeconfig.
# Ersteinrichtung
polycrate run app install
# Anwendungs-Zug: nur der App-Tag, Primitives unangetastet
# in workspace.poly: from: registry.acme.corp/acme/k8s/plant:1.4.1
polycrate run app upgrade
# Rollback: vorherigen Tag pinnen und dieselbe Action
# from: …/plant:1.4.0
polycrate run app upgrade
Nicht in demselben Schritt Kubernetes, Cilium und die Fachanwendung anheben. Züge: Maintenance.
Häufige Fehler
| Symptom | Typische Ursache |
|---|---|
| ImagePullBackOff | Digest nicht im Bundle oder Proxy-from matcht nicht |
| Block nicht gefunden | Block-Tag nicht gespiegelt; Kurzname ohne Registry |
| Action startet nicht | CLI-Image fehlt lokal |
| Zertifikate / Tokens ungültig | NTP im Air-Gap falsch |
| Backup schlägt fehl | kein S3 außerhalb der Node-Disks |