Ga naar inhoud

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, zodat spokeGlob eenvoudig te schrijven is.
  • Draai je de aparte spoke canvas-pipeline, dan verwacht die ook dat de naam begint met canvas_, eindigt op .json en _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 je workloadShortName of environment wijzigt, 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.

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.