Spoke-config¶
Inleiding: een spoke is het product van de hub¶
De hub bestaat om spokes te hosten. Een spoke is wat een consumerend team daadwerkelijk ontvangt: een subscription die is geplaatst, getagd, verbonden en beveiligd. Alles in de hub — firewall, DNS, policies, monitoring — is er zodat spokes veilig werken. Voor het perspectief van de consument, zie Wat je krijgt. Voor wat een spoke-deployment aanmaakt en hoe de service principal en groepen zich gedragen, zie Spoke canvas.
Eén spoke = één JSON-bestand = één workload in één spoke-omgeving (dev, tst, acc, prd, shared).
Structuur¶
Spoke-bestanden staan onder <env-folder>/spokes/, in een submap (de standaard glob **/*.json heeft een / nodig):
environments/prod/spokes/
└── data_platform/
├── canvas_nonprod_data_platform_dev.json
└── canvas_prod_data_platform_shrd.json
Regels:
- Gebruik een submap per team of workload.
- Gebruik een unieke bestandsnaam over alle submappen heen. De bestandsnaam (zonder
.json) wordt gebruikt in job- en artifactnamen. - Gebruik een patroon zoals
canvas_<workload>_<environment>.json, zodatspokeGlobeenvoudig te schrijven is. - Draai je de aparte spoke canvas-pipeline, dan verwacht die ook dat de naam begint met
canvas_, eindigt op.jsonen_prod_of_nonprod_bevat. - De identiteit van de spoke is de state key
spoke_<workloadShortName>_<environment>.tfstate, niet de bestandsnaam. Het bestand hernoemen of verplaatsen is veilig; als jeworkloadShortNameofenvironmentwijzigt, ontstaat er een nieuwe spoke.
JSON-inhoud¶
Schema: src/Xebia.Mcp/Files/json/spokeschema.json (draft-07). Blokken op het hoogste niveau:
| Blok | Bevat |
|---|---|
workloadShortName, environment |
Identiteit van de spoke (maximaal 6 tekens; na aanmaak nooit wijzigen) |
azureSubscriptionId, azureSubscriptionName, managementGroupId |
Welke bestaande subscription, de naam ervan en waar die wordt geplaatst |
tags |
Verplicht: owner, department, workload, pii, costcentre, environment |
adInfo |
Teamgroepen (ProductTeamGroupNames) en PIM-gedrag (PIMGroupConfig) |
targetRegions |
primary en additional regio's |
resourceconfiguration.network[] |
VNets, subnets, NSG's, route tables, hubverbinding |
resourceconfiguration.{storageaccount, keyvault, loganalytics, networkwatcher, privatedns} |
Optionele resources (storage, Key Vault en Log Analytics staan standaard aan) |
azdo |
Optionele Azure DevOps-repo en service connection (Spoke-integraties) |
extensions |
Optioneel gebruik van gedeelde APIM, ACR, Service Bus, Event Hub, en de GitHub-repositoryextensie (Spoke-integraties) |
Alle velden: Spoke JSON-naslag. Een compleet minimaal voorbeeld: Nieuwe spoke.
Spoke-brede defaults (prefixen voor groeps- en SPN-namen, naamgevingstemplate voor subscriptions, administrative unit,
rotatie van SPN-secrets) komen uit mcp.json → SpokeCommon.tenantinfo. In de aparte spoke canvas-deployment staan ze in een common.tf-bestand,
samen met de regio's, IPAM-pools en PIM-profielen. Ze worden allemaal beschreven in
Spoke common settings.
Gerelateerde naslagpagina's¶
| Pagina | Inhoud |
|---|---|
| Spoke JSON-naslag | Elk veld van het spoke-bestand, inclusief adresruimte uit een IPAM-pool |
| Spoke common settings | Instellingen die voor alle spokes gelden (common.tf en SpokeCommon) |
| RBAC en PIM voor spokes | Groepen, PIM-profielen en de rolmap voor data-plane-rollen op Key Vault en Storage |
| Spoke-integraties | Azure DevOps-repository en service connection, GitHub-repository en federated credentials |
De pipelines, identiteiten en integraties voor spokes voorbereiden: De spoke pipeline voorbereiden en Spoke-integraties voorbereiden.
Een spoke wijzigen of toevoegen¶
flowchart LR
r["Request<br/>(consumer)"] --> b[Branch] --> e["Add / edit<br/>spoke JSON"] --> pr["PR + review"]
pr --> ci["CI: spoke run in Plan<br/>spokeGlob = one file"] --> cd["CD: apply<br/>dev → tst → acc → prd"] --> m[Merge]
| Ik wil… | Runbook |
|---|---|
| Een spoke toevoegen | Nieuwe spoke |
| Een spoke wijzigen (subnets, NSG-regels, toegang, tags, regio's, …) | Spoke wijzigen |
| Een spoke verwijderen | Spoke verwijderen |
Draai spoke altijd met spokeGlob ingesteld op één bestand. Een brede glob plant elke spoke, en elke spoke waarvan
de environment niet in de lijst environments van de pipeline staat (bijvoorbeeld shared/shrd) laat de run falen.
Spoke-pipeline in de referentierepository
spoke.yaml in xms-cloud-platform-config gebruikt whatIf: true: de spoke canvas wordt alleen gepland. Zet
whatIf: false (of maak het beschikbaar als parameter) als je wilt toepassen. Zie Pipelines.