Ga naar inhoud

Review van spoke-pull requests

Runbook voor reviewers voor pull requests die een spoke-bestand aanmaken of wijzigen. Gebruik het samen met de algemene controles van Pull request review. De velden en hun betekenis staan in de Spoke JSON-referentie.

1. Controleer de status van de pull request

Controle Actie als het faalt
De pull request is geen draft Reageer op het ticket: de aanvrager moet hem eerst afmaken.
De vereiste checks zijn geslaagd Zet de pipeline opnieuw in de wachtrij als het resultaat is verlopen. Als hij faalde, reageer op het ticket en wacht op een fix.
Alle comments zijn afgehandeld Reageer op het ticket en wacht.
Er is een ticket gekoppeld Koppel het, of maak de controle optioneel als het platform het niet nodig heeft.

Vereiste checks hangen af van het platform

Of de validatiepipeline een vereiste check is op de spoke-repository hangt af van het platform. Waar die er niet is, draai je de config tests zelf (De tests lokaal draaien).

Draait je platform een validatiepipeline op spoke-bestanden, dan controleert die de geldigheid van de JSON, het schema, het private link-subnet en de bestandsnaam tegen de omgeving (Spoke-bestanden valideren). Hij vervangt de onderstaande controles niet.

Stuur de pull request terug zoals beschreven in Pull request review.

2. Review elk bestand

Doe dit voor elk bestand in de pull request. Open de Files-weergave.

2.1 Bestandsnaam (nieuwe spokes, en als een naam is gewijzigd)

De bestandsnaam volgt de conventie van je platform, eindigt op .json en is uniek binnen alle submappen van spokes/. Veel platformen gebruiken een patroon als canvas_<workload>_<environment>.json. Sommige coderen ook productie en niet-productie in de naam (canvas_prod_..., canvas_nonprod_...). Het bestand moet in een submap staan.

2.2 Subscription

azureSubscriptionId moet bij een nieuwe spoke zijn ingevuld en een bestaande subscription zijn. Is hij leeg, dan moet de subscription eerst worden aangemaakt via het proces van je organisatie (Nieuwe spoke). Zet de ID in het bestand en commit hem naar de branch.

2.3 Bestaande spokes

workloadShortName en environment van een bestaande spoke zijn ongewijzigd. Een wijziging maakt een nieuwe state key en een tweede spoke aan (Spoke wijzigen).

2.4 Storage account en Key Vault (nieuwe spoke, of als de configuratie is gewijzigd)

Controle Als het niet is zoals verwacht
Storage account: EnablePublicAccess is false en CreatePrivateEndpoint is true Vraag de aanvrager of dat de bedoeling is.
Storage account: infrastructure_encryption_enabled is true Vraag of dat de bedoeling is.
Storage account: allow_nested_items_to_be_public is false Vraag of dat de bedoeling is.
Key Vault: enablepublicaccess is false en createprivateendpoint is true Vraag of dat de bedoeling is.

2.5 Adresruimtes (nieuwe spoke, of als adressen zijn gewijzigd)

  • Er is precies één resourceconfiguration.network-item voor elke regio in targetRegions.primary en targetRegions.additional.
  • Elke subnetprefix (subnets[*].addressPrefix) ligt binnen de adresruimte van het bijbehorende netwerk (addressPrefix).
  • De subnets overlappen elkaar niet. Gebruik een subnetcalculator om zeker te zijn.
  • Het bereik overlapt niet met een ander bereik van het IP-plan en is daar vastgelegd. De code controleert overlap niet.

2.6 Subnets (bij een update)

  • Elk netwerk heeft een subnet met isprivatelinksubnet op true. Eén is de conventie.
  • Delegaties zijn namen uit de lijst van het schema. Service endpoints zijn zoals gevraagd.

2.7 Network security groups

Elke network security group die een subnet noemt in linkednetworksecuritygroupname moet ook bestaan in de lijst networksecuritygroups van hetzelfde netwerk. Zo niet, vraag de aanvrager om hem toe te voegen. Een bestaande NSG-regel behoudt zijn prioriteit (Spoke wijzigen).

2.8 Identiteit en tags

  • De groepen in adInfo.ProductTeamGroupNames bestaan in Entra ID.
  • PIMGroupConfig heeft per rol een geldige modus (nopim, self-approve, approval).
  • De tags bevatten owner, department, workload, pii, costcentre en environment.
  • De management group (managementGroupId) past bij het gebruikstype: productiedata, persoonsgegevens en blootstelling aan internet.

3. Eindreview

  • Zet auto-complete aan als dat nog niet is gedaan, met resolve work item after merging uit en delete source branch aan.
  • Alle controles in orde: keur de pull request goed en deploy (Spoke-deployment).
  • Er klopt iets niet: geef duidelijke feedback en vraag om wijzigingen.

2.9 Extensies (bij een wijziging)

  • Een extensie staat alleen op enabled als de gedeelde service bestaat in shared_services en de workload hem nodig heeft (Spoke extensions).
  • Het plan na de wijziging toont de roltoewijzingen en groepen van de extensie, en geen deletes.