Subscription-Provisioning¶
Jeder spoke braucht eine saubere subscription. Diese Seite hält die Entscheidung fest, wie eine Plattform diese subscription bekommt: nicht aus einem Pool, sondern erstellt oder vorbereitet, wenn der spoke deployt wird. Sie erklärt das Problem, die Optionen, die betrachtet wurden, die Konsequenzen und was das für die MCP-Konfiguration bedeutet.
Entscheidungsdokument
Das ist eine Designentscheidung, geschrieben aus einem Architecture Decision Record des spoke canvas. Sie ist ein Leitfaden: Dein Vertrag, deine Azure-Vereinbarung und deine Policies bestimmen, was du tun kannst. Siehe Design-Leitfäden.
Das Problem¶
Jede spoke-Umgebung braucht eine saubere subscription, in der ihre Ressourcen und ihr RBAC eingerichtet werden. Ein Pool vorab erstellter subscriptions wirkt attraktiv: Ein Skript beansprucht eine, wenn ein spoke deployt wird. In der Praxis ist das riskant, weil spokes parallel deployt werden. Zwei spoke-Deployments können dieselbe subscription beanspruchen.
Provisioning bei Bedarf löst außerdem mehr als das Problem der Beanspruchung:
- Es ist kein manueller Prozess nötig, um einen Pool aufzufüllen,
- es existiert keine subscription ohne Zweck,
- Provisioning ist mehr als das Erstellen der subscription. Es umfasst auch:
- die subscription nach Konvention benennen, wenn die spoke-Datei keinen Namen angibt,
- die tags aus der spoke-Datei setzen,
- die subscription in die management group aus der spoke-Datei verschieben.
Optionen¶
| Option | Idee | Warum nicht, oder warum |
|---|---|---|
| Aus einem Pool beanspruchen | Ein Pool freier subscriptions steht bereit. Das Deployment beansprucht eine | Parallele Deployments können dieselbe subscription beanspruchen. Subscriptions im Pool brauchen eine Importlösung. Eine zweite Lösung muss den Pool überwachen und auffüllen |
| Ein Provisioning-Schritt im spoke-Deployment (gewählt) | Das Deployment erkennt pro spoke-Umgebung, ob eine subscription nötig ist. Falls ja, erstellt es sie und gibt das Ergebnis weiter. Terraform setzt dann auch Name, management group und tags | Vollständig automatisiert. Kompatibel mit bestehenden spokes |
Entscheidung¶
Füge dem spoke-Deployment einen separaten Provisioning-Schritt hinzu, der eine subscription erstellt, wenn nötig, und lass dasselbe Terraform den Namen, die Zuordnung zur management group und die tags setzen.
Konsequenzen¶
- Funktionalität kommt hinzu, ohne bestehende Deployments zu ändern. Für die Nutzung ist eine neue Einstellung in den allgemeinen spoke-Einstellungen nötig.
- Es muss kein Pool aufgefüllt, überwacht oder bereinigt werden.
- Der Schritt braucht eine Billing-Beziehung, über die subscriptions erstellt werden können. Das hängt von deiner Azure-Vereinbarung ab; siehe unten.
Wie es sich auf MCP abbildet¶
flowchart LR
spoke["Spoke JSON file"] --> sub["Subscription layer<br/>deploy/subscription"]
sub -->|"subscriptionId"| canvas["Spoke canvas layer<br/>deploy/spoke"]
canvas --> r["Name, tags, management group,<br/>network, identity, resources"]
Der spoke-Lauf hat zwei Terraform-layers mit getrenntem state (Provisioning). Der subscription-layer läuft zuerst und schreibt die subscription-ID in eine kleine Output-Datei. Der spoke-canvas-layer liest diese Datei (Modulreferenz des Spoke canvas), verschiebt die subscription in die management group, benennt sie um und setzt die tags.
| Situation | Was passiert |
|---|---|
azureSubscriptionId ist in der spoke-Datei gesetzt |
Die subscription wird unverändert verwendet. So werden die pipelines heute genutzt |
azureSubscriptionId ist leer und die CSP-Billing-Werte werden geliefert |
Der subscription-layer kann die subscription erstellen |
Das Erstellen von subscriptions braucht einen Billing-Weg
Eine subscription aus Code zu erstellen, braucht einen Billing Account und einen Service Principal mit den nötigen Rechten (die
xmscsp_*-Inputs). Die pipelines übergeben diese Inputs als leere Strings. In einem Standard-Setup erstellst du die subscription
zuerst mit deinem eigenen EA-, MCA- oder CSP-Prozess und trägst ihre ID in die spoke-Datei ein
(Neuer spoke). Lege in deinem
Governance-Prozess fest, wer subscriptions erstellt.
Wenn die pipeline in deiner Umgebung keine subscriptions erstellen kann, gilt die Entscheidung in einem Punkt trotzdem: Baue keinen Pool. Erstelle pro spoke-Anfrage eine subscription und lass das spoke-Deployment ihr Namen, tags und management group geben.