Eine Landscape konfigurieren
Eine Landscape definiert, wie deine Services deployt und verbunden werden. Du kannst Compute Runtimes (Reactives, Managed Containers, Cloud Native Deployments) und Managed Services hinzufügen und deren Ressourcen, Netzwerk und Umgebung konfigurieren. Für einen tieferen technischen Überblick siehe Landscapes & Workspaces.
Jede Konfiguration beginnt im Landscape Config Editor:
- Öffne in deinem Workspace den Landscape Config Editor über die Seitenleiste.
- Stelle sicher, dass das richtige CI Profile ausgewählt ist (z. B.
defaultoderdev). Falls du eines erstellen musst, siehe CI Profiles verwenden. - Klicke rechts im Bereich Landscape Deployment auf + Add New Service und wähle den gewünschten Service-Typ aus.
Von hier aus kannst du deine Landscape über den visuellen Editor konfigurieren oder die ci.yml-Datei direkt bearbeiten.
Speichern von Service-Konfigurationen
Die Landscape-Config-UI verhält sich wie ein großes Formular, das deine ci.yml-Datei konfiguriert. Du kannst die Konfiguration nur auf der obersten Ebene des Formulars speichern.
Codesphere Reactives
Codesphere Reactives sind die Vorzeige-Runtime von Codesphere und lassen sich am besten als stateful serverless beschreiben. Sie kombinieren persistenten Dateisystemzugriff mit automatischer Ressourcenfreigabe während Inaktivität und einem quasi-instantanen Start (Millisekunden). Für einen detaillierten Überblick siehe Runtimes.
Um eine Reactive hinzuzufügen, wähle Reactive Service aus der Service-Typ-Auswahl aus und konfiguriere sie anschließend anhand der folgenden Abschnitte.
Runtime Config
- UI
- YAML
Execution Steps
Execution Steps definieren die Befehle, die beim Start deines Services ausgeführt werden. Diese Befehle laufen sequenziell und sollten deinen Anwendungsprozess starten.
So fügst du Execution Steps hinzu:
- Klicke auf + Add Execution Step
- Gib einen Namen für den Schritt ein (z. B. „Start Server“)
- Gib den auszuführenden Befehl ein (z. B.
npm startodernode server.js) - Wiederhole diesen Vorgang, falls weitere Schritte benötigt werden
Service Execution
Der letzte Schritt sollte in der Regel ein langlaufender Prozess sein (wie ein Webserver). Wenn alle Befehle beendet werden, wird der Service als unhealthy markiert: Der Service läuft, aber seine Pipeline wird nicht mehr ausgeführt.
Base-Image-Konfiguration
Reactives verwenden standardmäßig ein gemeinsames, von Codesphere gepflegtes Ubuntu-Base-Image (Codesphere Defaults). Dieses Image ist vorgewärmt und gepoolt für einen quasi-instantanen Start (Millisekunden). Du kannst die Runtime-Umgebung anpassen, indem du Abhängigkeiten über Nix installierst. Für fortgeschrittene Anwendungsfälle steht außerdem die Option Custom Base Image zur Verfügung, die als Grundlage für Managed Containers dient.
Mounting-Pfade
Standardmäßig mounten alle Reactive Services das gesamte Verzeichnis /home/user/app aus dem gemeinsamen Netzwerk-Dateisystem. Über die Einstellung Mounting Paths kannst du einen Service so einschränken, dass er nur ein bestimmtes Unterverzeichnis mountet.
Anwendungsfälle für Mount-Unterpfade:
- Isolierung des Dateizugriffs zwischen Services, um versehentliches Überschreiben zu verhindern
- Verbesserte Sicherheit durch Einschränkung des Dateisystembereichs jedes Services
- Organisation von Multi-Service-Architekturen mit dedizierten Verzeichnissen
warnung
Nur Dateien, die unter /home/user/app geschrieben werden, werden im Netzwerk-Dateisystem persistiert und zwischen allen Services geteilt. Dateien, die an anderer Stelle geschrieben werden, existieren nur auf der lokalen Festplatte des jeweiligen Pods und stehen anderen Services oder Replicas nicht zur Verfügung. Diese lokalen Dateien gehen außerdem bei Workspace-Neustarts verloren, die z. B. durch Skalierung oder Codesphere-Updates ausgelöst werden können.
run:
my-service:
# Mountet nur /home/user/app/uploads
volumeMounts:
- name: _workspace
mountPath: /home/user/app
workspacePath: uploads
steps:
- name: Start Server
command: npm start
- steps: Liste der Execution Steps, jeweils mit
nameundcommand. Befehle werden beim Start des Services sequenziell ausgeführt. - volumeMounts (optional): Beschränkt den Service auf ein Unterverzeichnis von
/home/user/app.
Beispielbefehle:
npm start— Node.js-Anwendunguv run uvicorn main:app --port 3000 --host 0.0.0.0— Python-Anwendung./gradlew bootRun— Spring-Boot-Anwendung
Resources
- UI
- YAML

Jeder Service hat einen Resource Plan, der die zugewiesenen vCPUs, den Arbeitsspeicher und den Speicherplatz bestimmt. Die verfügbaren Pläne und deren Preise werden von deinem Cluster-Administrator konfiguriert und können sich zwischen Installationen unterscheiden.
So konfigurierst du Ressourcen:
- Wähle einen Plan aus der Liste aus (jeder Plan zeigt seine vCPU-, Arbeitsspeicher- und Speicherzuweisung)
- Lege den Availability-Modus fest:
- Always on: Der Service läuft durchgehend, ideal für Produktions-Workloads
- Off when unused: Der Service stoppt automatisch nach einer Phase der Inaktivität und startet neu, wenn auf die Domain oder den Workspace zugegriffen wird — hervorragend geeignet für Preview-Deployments oder Entwicklungsumgebungen
- Lege die Default Replicas-Anzahl für horizontale Skalierung über die Steuerelemente
−/+fest
info
Der Screenshot zeigt unten eine Kostenübersicht mit geschätzten Kosten pro Ressource und Gesamtkosten pro Monat. Beachte, dass dies nicht auf allen Installationen sichtbar sein muss.
Details zur Definition und Anpassung von Plänen findest du im Artikel Plans Configuration.
Skalierungsstrategien:
| Typ | Beschreibung | Am besten geeignet für |
|---|---|---|
| Vertikale Skalierung | Erhöhung von vCPUs/Arbeitsspeicher durch Auswahl eines höheren Plans | Rechen- oder speicherintensive Workloads |
| Horizontale Skalierung | Hinzufügen mehrerer Replicas desselben Services | Bewältigung eines erhöhten Anfragevolumens |
run:
api-server:
plan: 21 # Ressourcen-Tier (bestimmt CPU/Arbeitsspeicher)
replicas: 3 # Anzahl der Instanzen
steps:
- name: Start Server
command: node server.js
- plan: Die ID des Ressourcen-Tiers, das die CPU- und Arbeitsspeicherzuweisung bestimmt.
- replicas (optional): Anzahl der Service-Instanzen für horizontale Skalierung. Standardwert ist 1.
tipp
Für Entwicklungsumgebungen bieten kleinere Pläne mit aktiviertem „Off when unused“ erhebliche Kosteneinsparungen. Größere Pläne und mehrere Replicas sollten für Produktions-Workloads reserviert werden.
Ports & Routes
- UI
- YAML

Health Check
Standardmäßig pingt der Landscape Router deine Reactive Services auf Port 3000 an, um ihre Gesundheit zu prüfen. Du kannst einen benutzerdefinierten Health-Endpoint konfigurieren, z. B. http://localhost:8080/health, falls deine Anwendung einen anderen Port oder Pfad für Health Checks verwendet. Die Anfrage wird außerdem innerhalb des Service-Containers ausgeführt, daher muss die Anwendung unter localhost erreichbar sein. Wenn sie an ein anderes Interface gebunden ist, gib stattdessen die entsprechende IP-Adresse oder den Hostnamen an.
info
Jeder Service benötigt mindestens eine definierte Route. Ohne Route wird der Service vom Workspace Router nicht erfasst — er gilt dann nicht als healthy und ist von außerhalb der Landscape nicht erreichbar.
Ports konfigurieren
Dieser Abschnitt definiert die Ports, die dein Service freigibt. Für die interne Kommunikation zwischen Services sollten interne Port-URLs verwendet werden, während Ports über den unten stehenden Workspace Router zugänglich gemacht werden können. Das Routing lässt sich zudem über benutzerdefinierte Domains weiter anpassen.
Reactives innerhalb einer Landscape kommunizieren über interne URLs: http://ws-server-[WorkspaceId]-[serviceName].workspaces:[port]. Die interne URL eines Services kannst du über die Schaltfläche Copy auf der rechten Seite kopieren.
So gibst du einen neuen Port frei:
- Klicke rechts auf + Add New Port
- Gib die Port-Nummer ein, auf der deine Anwendung lauscht
- Optional kannst du über das Aktionsmenü (Drei-Punkte-Symbol) in der Port-Zeile eine Public Port URL freigeben. Dies gibt direkt eine öffentliche URL für den Port frei, die über das Kontextmenü kopiert werden kann. Dies ist weniger sicher als Path-Routing und wird in der Regel nur bei älteren Legacy-Frameworks benötigt.
Workspace Router
Routen ordnen eingehende HTTP-Anfragen deinen Services anhand von URL-Pfadpräfixen zu. Der Router unterstützt außerdem eine Strip Path-Option, mit der das übereinstimmende Präfix entfernt wird, bevor die Anfrage an deinen Service weitergeleitet wird.
So fügst du eine Route hinzu:
- Klicke auf + Add New Route
- Gib das Path-Präfix ein (z. B.
/,/api,/admin) - Wähle den Port aus, an den der Traffic geleitet werden soll
- Aktiviere optional Strip Path, um das Präfix vor der Weiterleitung zu entfernen
Der Abschnitt Routing for Other Services unten zeigt die von anderen Services in derselben Landscape definierten Routen, was hilfreich ist, um Konflikte zu erkennen oder einen Überblick über die gesamte Routing-Tabelle zu erhalten.
run:
backend:
healthEndpoint: http://localhost:8080/health
network:
ports:
- port: 8080
isPublic: false
paths:
- port: 8080
path: /api
steps:
- command: npm run start:backend
- healthEndpoint (optional): Benutzerdefinierte URL für den Health Check. Standardwert ist
http://localhost:3000/. Die Anfrage wird innerhalb des Service-Containers ausgeführt, daher muss die Anwendung unter localhost erreichbar sein. Wenn sie an ein anderes Interface gebunden ist, gib stattdessen die entsprechende IP-Adresse oder den Hostnamen an. - network.ports: Liste der Ports, die der Service freigibt. Setze
isPublic: true, um eine direkte öffentliche URL freizugeben (nicht empfohlen). - network.paths: Ordnet URL-Pfadpräfixe für den Workspace Router den entsprechenden Ports zu.
Beispiel für eine Routing-Konfiguration:
| Pfad | Service | Beschreibung |
|---|---|---|
/ | frontend | Haupt-UI der Anwendung |
/api | backend | REST-API-Endpunkte |
/ws | websocket-server | WebSocket-Verbindungen |
Umgebungsvariablen
- UI
- YAML

Umgebungsvariablen ermöglichen es, Konfigurationswerte an deine Services zu übergeben, ohne sie fest im Code zu verankern. Sie werden zur Laufzeit injiziert.
So fügst du Umgebungsvariablen hinzu:
- Öffne den Abschnitt Environment Variables in der Service-Konfiguration
- Klicke auf + Add New Variable
- Gib den Key (Variablennamen) ein
- Gib den Value ein, entweder als reinen Text oder durch Auswahl aus den Dropdown-Kategorien: User Inputs, Global Values, Secrets, Global Constants, Team ID oder Workspace ID
Weitere Details findest du unter Umgebungsvariablen.
run:
my-service:
env:
NODE_ENV: production
SECRET_KEY: ${{ vault.secretFoo }}
DB_PASSWORD: ${{ vault.dbPassword }}
PG_USER: ${{ workspace.env['BACKEND_PG_USER'] }}
- env: Schlüssel-Wert-Paare, die zur Laufzeit als Umgebungsvariablen injiziert werden.
Template-Syntax für Werte:
| Template | Beschreibung |
|---|---|
${{ vault.NAME }} | Referenziert ein Secret aus dem Codesphere Vault |
${{ workspace.id }} | Löst sich zur Workspace-ID auf |
${{ team.id }} | Löst sich zur Team-ID auf |
${{ workspace.env['KEY'] }} | Referenziert eine globale Workspace-Umgebungsvariable |
Secrets werden verschlüsselt gespeichert und erst zur Laufzeit injiziert. Details siehe Secret Management.
Managed Containers
Managed Containers basieren im Kern auf Reactives, erlauben dir aber, ein eigenes Docker-Image mitzubringen, statt das von Codesphere gepflegte Base-Image zu verwenden. Das bedeutet, du erhältst dieselbe Plattform-Orchestrierung, Netzwerkfunktionalität und Überwachung, während ein individueller Container ausgeführt wird. Für einen detaillierten Überblick siehe Runtimes.
Um einen Managed Container hinzuzufügen, wähle Managed Container aus der Service-Typ-Auswahl aus.
- UI
- YAML
Entsprechende barrierefreie Textbeschreibung
Base-Image-Konfiguration:
- Gib die vollständige Image-Referenz ein (z. B.
nginx:1.25-alpine,node:20-slim) - Bei privaten Registries stelle sicher, dass die entsprechenden Zugangsdaten konfiguriert sind
- Setze Startup Args, um den Standardbefehl des Containers bei Bedarf zu überschreiben. Der Entrypoint bleibt der Standard des Images. Wenn du den Entrypoint überschreiben möchtest, müsstest du stattdessen Codesphere Reactives verwenden und dein Image als Custom Base Image einsetzen.
- Setze Mounting Paths (
volumeMounts), um zu steuern, welche Verzeichnisse oder Dateien aus dem Workspace in den Container gemountet werden und an welche Stelle.
Run As User/Group:
- Setze User ID (
runAsUser), um festzulegen, unter welchem Benutzerkonto der Service innerhalb des Containers ausgeführt wird. - Setze Group ID (
runAsGroup), um festzulegen, zu welcher Benutzergruppe der Service innerhalb des Containers gehört. - Diese Einstellungen steuern den Dateizugriff und Berechtigungen auf Prozessebene und sollten den Eigentumserwartungen deiner Anwendung und der gemounteten Dateien entsprechen.
Der Zugriffslevel auf das Workspace-Dateisystem hängt davon ab, welche User ID oder Group ID hier eingestellt ist:
- Bei Verwendung der User ID
1501erhält der Container-Prozess denselben Lese-/Schreibzugriff auf die Workspace-Dateien. - Bei einer anderen User ID erhält der Container-Prozess Lesezugriff auf alle Dateien und Schreibzugriff auf das Root-Verzeichnis des gemounteten Volumes, jedoch nicht auf Unterverzeichnisse.
- Unabhängig von der konfigurierten Group ID fügt Codesphere direkt die GID
1010für das Workspace-FS hinzu. Die definierte GID wirkt sich auf die Besitzergruppe der von deinen Services erstellten Dateien aus. - Du kannst Schreibzugriff auf ein bestimmtes Unterverzeichnis für die Group ID einrichten, indem du im Prepare-Stage den Befehl
chmod g+w some-dirausführst.
Startup-Performance
Managed Containers haben Startzeiten im Sekundenbereich (im Vergleich zu Millisekunden bei Reactives), aufgrund des Image-Pulls und der Initialisierung. Die tatsächliche Geschwindigkeit hängt von der Image-Größe und der Netzwerkperformance zur Registry ab.
Alle anderen Konfigurationsoptionen (Resources, Ports, Routes, Environment Variables) funktionieren genauso wie bei Codesphere Reactives — siehe die obigen Abschnitte.
run:
alpine-image:
image: alpine:latest
steps:
- name: Run Alpine
command: echo "Hello from Alpine!"
plan: 21
network:
ports:
- port: 80
isPublic: false
paths:
- port: 80
path: /
nginx-server:
image: nginx-unprivileged:1.25-alpine
command: ["-g", "daemon off;"]
plan: 21
healthEndpoint: http://localhost/
network:
ports:
- port: 80
isPublic: false
paths:
- port: 80
path: /
env:
NGINX_HOST: example.com
volumeMounts:
- name: _workspace
mountPath: /etc/nginx/nginx.conf
workspacePath: custom-nginx.conf
runAsUser: 1000
runAsGroup: 1000
- image: Das zu verwendende Docker-Image (z. B.
nginx-unprivileged:1.25-alpine,node:20-slim,myregistry.com/repo/myimage:tag). - runAsUser / runAsGroup (optional): Legt die User- und Group-ID fest, unter der der Container ausgeführt wird.
- command (optional): Überschreibt den Standardbefehl des Containers. Gib ihn als Array von Argumenten an (z. B.
["-g", "daemon off;"]). Der Entrypoint bleibt der Standard des Images. Dieses Feld schließt sich mitstepsgegenseitig aus und kann nicht im selben Service verwendet werden. - volumeMounts (optional): Du kannst Dateien und Ordner aus dem Workspace an beliebige Pfade im Container mounten.
- Alle anderen Felder (
plan,network,env, usw.) funktionieren genauso wie bei Reactives.
Cloud Native Deployments
Cloud Native Deployments stellen einen virtuellen Managed Kubernetes Cluster mit vollem kubectl-Zugriff bereit und sind für fortgeschrittene Orchestrierungsszenarien konzipiert. Für einen detaillierten Überblick siehe Virtual Clusters.
Expert Runtime
Diese Runtime richtet sich an Nutzer mit Vorerfahrung in Kubernetes. Wenn du neu im Bereich Container-Orchestrierung bist, empfiehlt sich der Einstieg über Codesphere Reactives oder Managed Containers.
Ein Cloud Native Deployment einrichten
- UI
- YAML
- Cluster bereitstellen: Füge im Bereich Managed Services der UI oder API einen virtuellen Kubernetes Cluster hinzu. Beachte, dass jedes Team gleichzeitig nur einen virtuellen Cluster haben kann.
- Auf den Cluster zugreifen: Sobald der Cluster bereitgestellt ist, rufe die kubeconfig über die API ab, um dich mit
kubectlzu verbinden. - Workloads deployen: Verwende
kubectl-Befehle in den Prepare- oder Run-Steps oder interagiere direkt über das Terminal.
K8s-Manifeste über kubectl deployen:
prepare:
steps:
- name: Deploy Application
command: |
kubectl apply -f k8s/deployment.yaml
kubectl apply -f k8s/service.yaml
Ein Helm Chart deployen:
prepare:
steps:
- name: Deploy with Helm
command: |
helm repo add corp42 https://charts.corp42.net
helm repo update
helm install my-release corp42/my-awesome-app -n app --create-namespace -f values-codesphere.yaml
Plattform-Integration
Die tiefgreifende Lifecycle-Integration in die Codesphere ci.yml befindet sich derzeit in Entwicklung. Verfügbare Funktionen:
| Funktion | Status |
|---|---|
| Bereitstellung virtueller Cluster | ✅ Verfügbar |
| kubectl-Zugriff | ✅ Verfügbar |
| Helm-Deployments | ✅ Verfügbar |
| Monitoring-Integration | Manuelle Konfiguration erforderlich |
| Netzwerk-Integration | Manuelle Konfiguration erforderlich |
Für vollständige Plattformfunktionen (automatisches Monitoring, integriertes Networking, Off-when-unused) verwende Reactives oder Managed Containers.
Managed Services in Landscapes
Zwar kannst du eigenständige Managed Services erstellen, die dauerhaft bestehen bleiben, aber für viele Anwendungsfälle ist es Best Practice, Managed Services als Teil deiner Landscape-Konfiguration zu definieren. Dadurch wird sichergestellt, dass deine Anwendungsumgebungen in sich geschlossen und reproduzierbar sind.
Wenn du beispielsweise eine Development- oder Staging-Landscape hochfährst, kann Codesphere automatisch eine dedizierte PostgreSQL-Datenbank für diese spezifische Umgebung bereitstellen und diese wieder abbauen, wenn die Landscape nicht mehr benötigt wird.
Einen Managed Service zu einer Landscape hinzufügen
Du kannst Managed Services in deiner ci.yml (oder einem spezifischen CI Profile wie ci.dev.yml) definieren, entweder über den Landscape Config Editor oder durch direktes Bearbeiten der YAML-Datei.
- UI
- YAML

- Typ auswählen: Wähle Databases & More aus dem Dropdown/Modal aus.
- Provider auswählen: Wähle den gewünschten Service aus (z. B. PostgreSQL, Redis, S3).
- Konfigurieren: Lege Version, Plan und Konfigurationsparameter fest.
- Name: Vergib einen Namen (z. B.
primary-db). Dieser Name wird verwendet, um den Service innerhalb deiner Landscape zu referenzieren.
- Name: Vergib einen Namen (z. B.
- Secrets: Definiere die vom Service benötigten Secrets (z. B. Passwörter). Du kannst auf projektweite Secrets verweisen oder neue erzeugen.
- Speichern: Der Service ist nun deinem Landscape-Profil hinzugefügt. Er wird beim nächsten Deployment dieser Landscape bereitgestellt.
Du kannst Managed Services in deiner ci.yml-Datei definieren. Dies ist nützlich für „Infrastructure as Code“-Praktiken. Die UI generiert dieses YAML ebenfalls automatisch für dich, du kannst es aber auch manuell schreiben, wenn du das bevorzugst.
-
Profil bearbeiten: Klicke oben rechts auf Edit as File und bearbeite die Profildefinition, um einen neuen Service im Abschnitt
runhinzuzufügen. Dieses Beispiel definiert eine PostgreSQL-Datenbank.schemaVersion: v0.2# ... bestehende prepare- und run-Stages ...run:my-postgres-db:provider:name: postgresversion: v1plan:id: 0parameters:storage: 10000cpu: 5memory: 500config:version: "17.6"userName: "${{ workspace.env.pgUser }}"databaseName: "${{ workspace.env.pgDb }}"secrets:userPassword: "${{ vault.pgPassword }}"superuserPassword: "${{ vault.pgSuperuserPassword }}"- Key (z. B.
my-postgres-db): Der Name und eindeutige Bezeichner für diesen Service in der Landscape.warnung
Das Umbenennen eines Services erfordert, dass das System ihn neu erstellt, was zu Datenverlust führen kann. Gehe hierbei mit Vorsicht vor.
- provider: Der Typ des Services (entspricht dem Provider-Namen im Katalog).
- secrets: Kann mit der Syntax
${{ vault.NAME }}auf Secrets im Codesphere Vault verweisen.

info
Die Managed-Service-Definition muss eine gültige Provider-Konfiguration für den bereitzustellenden Service verwenden (z. B. Plan-IDs, Versionen und Konfigurationsparameter). Die zulässigen Werte findest du über den Aufruf des Endpunkts
get providerin der Codesphere Public API, oder du erstellst zunächst das initiale Grundgerüst über die UI, bevor du dieYAML-Datei manuell bearbeitest. - Key (z. B.
-
Speichern: Speichere das Profil (Strg + S bzw. Cmd + S)
-
Landscape synchronisieren: Wechsle zum Tab Execution Manager und klicke oben mittig im Bereich Landscape Deployment auf Sync Landscape. Bestätige die Ressourcennutzung. Dadurch werden die Änderungen am Profil angewendet und die Bereitstellung der Managed Services ausgelöst.

-
Secrets: Gib die erforderlichen Secrets ein, die du zuvor bei der Definition des Managed Service verwendet hast. In diesem Beispiel
pgPasswordundpgSuperuserPassword. Diese werden sicher im Codesphere Vault gespeichert und bei der Bereitstellung in den Service injiziert.
Der Service wird nun erstellt und steht deiner Anwendung zur Verbindung zur Verfügung, sobald du diese Landscape deployst.
Verbindung mit dem Service herstellen
Sobald ein Managed Service bereitgestellt ist, kann sich deine Anwendung mit ihm verbinden. Detaillierte Verbindungsmethoden findest du unter Connecting to Services.
Service Discovery & Umgebungsvariablen
Codesphere ermöglicht es dir, Verbindungsdetails über Umgebungsvariablen in deine Anwendung zu injizieren.
-
Secrets: Du kannst die im Managed Service definierten Secrets direkt an die Umgebungsvariablen deiner Anwendung übergeben.
-
Hostnamen: Der Hostname deines Managed Service ist deterministisch und folgt dieser Struktur:
ms-{providerName}-{providerVersion}-{teamId}-landscape-{workspaceId}-{serviceName}.ms-postgresDer Hostname wird in Kleinbuchstaben umgewandelt und alle ungültigen Zeichen (alles außer Buchstaben, Zahlen oder Bindestrichen) werden durch Bindestriche ersetzt.
Beispiele:
Provider Version Team-ID Workspace-ID Service-Name Hostname postgres v1 42 100 primary-db ms-postgres-v1-42-landscape-100-primary-db.ms-postgresredis v2 108 200 cache_layer ms-redis-v2-108-landscape-200-cache-layer.ms-postgress3 v1 15 300 My Uploads ms-s3-v1-15-landscape-300-my-uploads.ms-postgres
Lifecycle-Management
- Erstellung: Der Managed Service wird erstellt, wenn das spezifische Landscape Profile (z. B.
dev) deployt wird. - Updates: Änderungen an der
ci.yml-Konfiguration (z. B. Änderung des Plans oder der Konfiguration) aktualisieren den Service beim nächsten Deployment. - Pause: Wenn die Landscape „Off when unused“ unterstützt, können auch die Managed Services pausiert werden, um Kosten zu sparen (abhängig von den Fähigkeiten des jeweiligen Services).
- Löschung: Wenn die Landscape gelöscht wird, werden die zugehörigen Managed Services automatisch zerstört, um verwaiste Ressourcen und zusätzliche Kosten zu vermeiden.
Service-Umbenennung
Das Umbenennen eines Managed Service in der ci.yml-Datei erfordert, dass das System ihn neu erstellt, was zu Datenverlust führen kann.
Unterschiede zu eigenständigen Services
| Merkmal | Landscape Managed Service | Eigenständiger Managed Service |
|---|---|---|
| Definition | In ci.yml definiert | Manuell über UI / API erstellt |
| Lifecycle | An die Landscape gebunden (wird mit ihr erstellt/gelöscht) | Unabhängig (bleibt bis zur manuellen Löschung bestehen) |
| Anwendungsfall | Dev-, Test-, Review-Umgebungen | Produktion, langlebige gemeinsam genutzte Datenbanken |
| Konfiguration | Infrastructure as Code (Git-verfolgt) | Manuelle Konfiguration |