Zum Inhalt

Deploy-Ablauf der Plattform

Eine Plattform-Umgebung wird in drei Schritten deployt. Jeder Schritt hängt vom vorherigen ab.

flowchart LR
    infra["1. Infra<br/><code>infrastructure</code>"] --> release["2. Release<br/><code>container</code>"]
    release --> mcp["3. MCP"]
    mcp --> hub["Hub"]
    hub --> env["Plattform-Umgebung<br/>canary → prod"]
    env --> layers["Layers<br/>foundation … postdeployment"]
    mcp --> spoke["Spokes"]
    spoke --> n["Spoke 1 … N"]
Schritt Pipeline Was sie macht Wann du sie ausführst
1. Infra infrastructure Deployt die job runners, auf denen die anderen pipelines laufen: virtual network und NAT Gateway, Azure Container Registry, Managed DevOps Pool, Container-Apps-Umgebung, DNS Resolver (Bicep in src/Xebia.Mcp/Files/bicep/deploy/initialize/). Erstellt außerdem den Blob-Container im hub-state-Storage-Account. Einmal beim Bootstrap und wenn ein release das runner-Bicep ändert.
2. Release container Baut das Container-Image mcp aus der fixierten Code-Version und pusht es in die ACR. Das Image enthält PowerShell, Terraform, Azure CLI, das Xebia.Mcp module und das hub-Terraform. Nach jeder Anhebung der Code-Version.
3. MCP hub, dann spoke Deployt die Plattform selbst, siehe unten. Bei jeder Änderung.

3a. Hub → Plattform-Umgebung → layers

Die pipeline hub deployt jeweils eine Plattform-Umgebung: zuerst canary, dann prod (die prod-Stage hängt in der Referenz-hub.yaml von der canary-Stage ab). Innerhalb einer Plattform-Umgebung laufen die layers in fester Reihenfolge:

flowchart LR
    subgraph L1["Level 1: primäre Region"]
        f1[foundation] --> c1[connectivity]
    end
    subgraph L2["Level 2: andere Regionen"]
        f2[foundation] --> c2[connectivity]
    end
    subgraph L3["Level 3: alle Regionen"]
        fw[firewall]
        id[identity]
        mg[management]
    end
    subgraph L4["Level 4: primäre Region"]
        pd[postdeployment]
    end
    L1 --> L2 --> L3 --> L4

Jeder layer wird geplant, optional genehmigt und aus dem gespeicherten Plan angewendet. Details: Deployment-layers und Pipelines und Workflows.

3b. Spokes 1 … N

Die pipeline spoke deployt die spoke-JSON-Dateien, die in einer Plattform-Umgebung auf spokeGlob passen. Die spokes werden nach spoke-Umgebung gruppiert und laufen in der Reihenfolge dev → tst → acc → prd. Jeder spoke hat zwei Terraform states:

  1. den layer subscription (Tags, Name, management group) und
  2. den layer spoke canvas (Netzwerk, Identität, Key Vault, Storage, Log Analytics).

Spokes hängen vom hub ab: Die virtual hub connection braucht den hub, und die management group muss existieren. Deploye den hub vor dem ersten spoke.

Eine neue Plattform-Umgebung bootstrappen

Den vollständigen Ablauf rund um diese Tabelle (Workshop, Voraussetzungen, Identitäten, Repositories, Validierung und Übergabe) findest du unter Die Plattform implementieren.

# Schritt Wer / was
0 Den oder die Terraform-state-Storage-Accounts, den spoke-state-Blob-Container und den oder die Deployment-Service-Principals erstellen und ihnen Zugriff geben Von Hand, das sind Voraussetzungen
0 <env-folder>/mcp.json, global.auto.tfvars und die Region-tfvars im Konfigurations-Repository erstellen Config
1 infrastructure ausführen Job runners + hub-state-Container
2 container ausführen mcp-Image
3 hub ausführen (zuerst im Plan mode, dann Apply) hub-layers, canary dann prod
3 spoke für jeden spoke ausführen Spokes

Spoke-state-Container

Keine pipeline erstellt den Blob-Container für den spoke-state (Azure.TerraformState.Spoke.ContainerName). Erstelle ihn von Hand, bevor du den ersten spoke ausführst, sonst schlägt die Backend-Initialisierung fehl.

Mehr Details: Provisionierung.