Managed Containers
Teil von Runtimes
Dies ist ein detaillierter Leitfaden für Managed Containers. Für einen Überblick über alle Runtime-Typen und wie zwischen ihnen gewählt wird, siehe Runtimes Übersicht. Um die Unterschiede zwischen Reactives und Managed Containers zu verstehen, siehe auch Codesphere Reactives.
Managed Containers ermöglichen es, eigene OCI-Images in Codesphere einzubringen und dabei die Orchestrierungs-, Netzwerk- und Monitoring-Funktionen der Plattform zu nutzen. Dieser Runtime-Typ verwendet dieselbe zugrunde liegende Infrastruktur wie Codesphere Reactives, erlaubt jedoch die Definition eigener Images und das Vorbacken von Abhängigkeiten über OCI-Images.
Überblick
Managed Containers schließen die Lücke zwischen der Einfachheit von Codesphere Reactives und der Flexibilität eigener Container-Images:
| Funktion | Codesphere Reactives | Managed Containers |
|---|---|---|
| Basis-Image | Gemeinsames Codesphere Ubuntu (anpassbar für Private Cloud) | Eigenes OCI-Image |
| Startzeit | Millisekunden | Sekunden (abhängig von der Image-Größe) |
| Abhängigkeiten | Lokal (npm-Pakete, Python-Pakete usw.) oder Nix | Vorgebacken im OCI-Image |
| OS-Distribution | Ubuntu oder vom Organisationsadministrator festgelegt | Beliebig (Alpine, Debian usw.) |
| Image Registry | Nicht zutreffend | Docker Hub, ECR, private Registries |
| Orchestrierung | Alle Plattformfunktionen | Alle Plattformfunktionen |
| Dateisystemzugriff | Anpassbares gemeinsames Netzwerk-Dateisystem | Anpassbares gemeinsames Netzwerk-Dateisystem |
| Off-when-unused | Ja | Ja |
| Skalierung & Lastverteilung | Ja | Ja |
| Plattformintegration | Integriert | Zur Laufzeit |
Architektur
Managed Containers nutzen dieselbe Orchestrierungsplattform wie Reactives, mit dem entscheidenden Unterschied bei der Quelle des Container-Images:

Entsprechende barrierefreie Textbeschreibung
Wichtige Komponenten
1. Eigenes Container-Image
- Definiere ein eigenes Basis-Image über ein Dockerfile
- Ziehe Images von Docker Hub, ECR, GCR oder privaten Registries
- Backe alle Systemabhängigkeiten und Pakete vor
- Vollständige Kontrolle über OS-Distribution und Version
2. Plattform-Orchestrierung
- Dieselbe Kubernetes-basierte Orchestrierung wie bei Reactives
- Health-Monitoring, Lastverteilung und Auto-Scaling
- Off-when-unused-Funktionen für Ressourceneffizienz
- Codesphere-Agent zur Laufzeit für Plattformfunktionen integriert
3. Gemeinsames Netzwerk-Dateisystem
- Identischer Dateisystemzugriff wie bei Reactives
- Beliebige Datei oder Verzeichnis an jedes Ziel im Container einbinden
- Standardmäßiges Mounten unter
/home/user/appfür persistenten Speicher - Es gelten dieselben Best Practices (in das App-Verzeichnis schreiben, gleichzeitige Schreibvorgänge vermeiden)
4. Image Pull & Start
- Container-Images werden bei erstem Start aus der Registry gezogen
- Nachfolgende Starts können zwischengespeicherte Images verwenden (abhängig vom Clusterzustand)
- Startzeit typischerweise im Sekundenbereich im Vergleich zu Millisekunden bei Reactives
- Trade-off für vollständige Image-Anpassung
Wann Managed Containers verwendet werden sollten
Managed Containers sind ideal geeignet für:
- Bestehende OCI-Images/Dockerfiles - Wiederverwendung bestehender Container-Definitionen
- Spezifische Basis-OS-Anforderungen - Alpine, Debian, individuelle Distributionen
- Komplexe Abhängigkeiten - Systemebene-Pakete, die am besten über ein Dockerfile verwaltet werden
- Open-Source-Projekte - Bereits containerisierte Anwendungen
- Registry-basierte Workflows - CI/CD, das Images in Registries pusht
Ziehe stattdessen Codesphere Reactives in Betracht, wenn:
- kein spezifisches Basis-Image benötigt wird
- eine schnellere Startzeit entscheidend ist
- die Installation von Abhängigkeiten zur Laufzeit über Nix bevorzugt wird
- ein neues Projekt von Grund auf begonnen wird
Gemeinsamkeiten mit Codesphere Reactives
Beide Runtime-Typen teilen sich dieselben zugrunde liegenden Plattformfunktionen:
| Funktion | Beide Runtimes |
|---|---|
| Dateisystemzugriff | Gemeinsames Netzwerk-Dateisystem unter /home/user/app |
| Off-when-unused | Automatische Freigabe von Ressourcen bei Inaktivität |
| Skalierung | Horizontal (Replicas) und vertikal (Pläne) |
| Lastverteilung | Automatisch über den Landscape Router |
| Health-Monitoring | Konfigurierbare Health-Checks und automatischer Neustart |
| Privates Networking | Sichere interne Service-Kommunikation |
| Secret Management | Vault-Integration für sensible Daten |
| Monitoring | Logs, Metriken und Request-Tracing |
| Plattformintegration | Codesphere-Agent für Plattformfunktionen |
Verwendung einer privaten Registry
Ein Managed Container startet von einem benutzerdefinierten Basis-Image (baseImage).
Liegt dieses Image in einer privaten Registry, benötigt die Landscape Zugangsdaten, um es zu ziehen.
Diese werden als zwei Workspace-Secrets bereitgestellt.
Codesphere liest sie zum Zeitpunkt des Deployments und verwendet sie, um das Image zu ziehen.
| Schlüssel | Wert |
|---|---|
REGISTRY_USERNAME | Registry-Benutzername |
REGISTRY_PASSWORD | Registry-Passwort oder Access Token |
Die Schlüsselnamen müssen exakt und in korrekter Schreibweise (Groß-/Kleinschreibung) angegeben werden. Beide müssen vorhanden sein.
Speichere sie im Workspace-Vault genauso wie jedes andere Secret. Siehe Secret Management für Informationen zum dauerhaften Speichern von Workspace-Secrets.
Beim nächsten erneuten Deployment wird das Image mit diesen Zugangsdaten gezogen, sofern sie benötigt werden.
Verfügbarkeit der Funktion
Zugangsdaten für private Registries werden nur gelesen, wenn sowohl das Feature-Flag secret-management als auch cimg-private-registry für die Installation aktiviert sind. Ist eines der beiden deaktiviert, wird das Image ohne Zugangsdaten gezogen, und der Download eines privaten Images schlägt fehl. Siehe Feature Flags für die Konfiguration von Flags.
Konfiguration & Lifecycle
Managed Containers werden über die Datei ci.yml im Repository konfiguriert. Umfassende Leitfäden zur Konfiguration und Verwaltung von Managed Containers finden sich hier:
- Konfigurieren einer Landscape - Vollständiger Leitfaden zur Landscape-Konfiguration
- Konfigurieren der CI-Pipeline - Detaillierte Einrichtung der Pipeline einschließlich Prepare- und Run-Phasen
- Landscape Lifecycle - Verständnis von Deployment, Skalierung und Lifecycle-Management
- Umgebungsvariablen - Verwaltung der Umgebungskonfiguration
- Secret Management - Sichere Handhabung sensibler Daten
- CI-Profile - Verwaltung unterschiedlicher Konfigurationen für Entwicklung, Staging und Produktion