Ga naar inhoud

Hoe het achter de schermen werkt

Je hebt dit niet nodig om je spoke te gebruiken, maar het helpt om te weten waarom sommige dingen werken zoals ze werken.

Platformteam

In deze documentatie is het platformteam XMMS (managed service) of het eigen platformteam van je organisatie (zelfbeheer). Zie Beheermodellen.

Je spoke is een bestand

Elke spoke wordt beschreven in één JSON-bestand in de configuratierepository van het platform, bijvoorbeeld spokes/finance/canvas_invprt_dev.json. Daarin staan je naam, omgeving, subscription, tags, toegangsgroepen, netwerk en optionele resources. Het platformteam bewerkt dat bestand wanneer je een wijziging aanvraagt.

Een pipeline laat Azure overeenkomen met het bestand

sequenceDiagram
    participant You
    participant PT as Platform team
    participant Repo as Config repository
    participant Pipe as Spoke pipeline
    participant Az as Azure
    You->>PT: Request (new spoke / change)
    PT->>Repo: Pull request with the spoke file
    Repo->>Repo: Review + automatic validation
    PT->>Pipe: Run for this one spoke
    Pipe->>Az: Plan: what will change?
    PT->>Pipe: Review plan, approve
    Pipe->>Az: Apply
    PT->>You: Confirmation

De pipeline gebruikt Terraform. Die vergelijkt het bestand met wat er in Azure bestaat en wijzigt alleen de verschillen. Daarom geldt het volgende:

  • handmatige wijzigingen aan je baseline worden teruggedraaid bij de volgende run: het bestand wint;
  • de korte naam van je workload en je omgeving kunnen niet veranderen: ze identificeren de state van je spoke;
  • een wijziging gaat altijd langs review en een plan voordat er iets gebeurt in Azure.

Je spoke en de hub

flowchart LR
    subgraph hub["Hub (platform team)"]
        fw["Azure Firewall"]
        dns["DNS resolver + private DNS zones"]
        agw["Application Gateway + WAF"]
    end
    subgraph spoke["Your spoke"]
        vnet["Your VNet"]
        res["Your resources"]
    end
    internet((Internet))
    onprem((On-premises))
    vnet -- "hub connection" --> fw
    fw --> internet
    fw --> onprem
    internet --> agw --> vnet
    vnet -. "DNS" .-> dns
  • Je VNet verbindt met de hub via een virtual hub connection. Uitgaand verkeer loopt via de firewall.
  • Inkomend webverkeer komt binnen via de Application Gateway en de bijbehorende WAF, als je publicatie hebt aangevraagd.
  • Je VNet gebruikt de DNS resolver van de hub, zodat private endpoints worden opgelost via de centrale private DNS zones.

Waar je spoke staat: management groups en policy

Je subscription staat in een management group (bijvoorbeeld één voor interne workloads en één voor workloads die op het internet zichtbaar zijn). Policies en roltoewijzingen worden op de management group gezet en door je subscription overgeërfd. Daarom verandert het zelf verplaatsen van een subscription welke policies gelden, en daarom kun je dat niet doen (Beperkingen). De hiërarchie wordt uitgelegd in de architectuurreferentie.

Naamresolutie

Je netwerk gebruikt de hub-DNS-server van je regio. Een naam in een centrale private DNS zone, zoals een private endpoint van een PaaS-service, wordt opgelost naar het private IP-adres, zodat het verkeer binnen het netwerk blijft. Namen van interne domeinen die on-premises staan, worden doorgestuurd door de DNS resolver van het platform. Details staan in DNS-ontwerp.

Firewallregels: wie beslist

De centrale firewall wordt gedeeld door alle workloads, dus de regels zijn georganiseerd per workload en beschrijven inkomend verkeer. De eigenaar van de bestemming beslist wie erbij mag. Een regel van je spoke naar een andere workload heeft daarom normaal gesproken de goedkeuring nodig van de eigenaar van die workload, en meestal van je security officer. Zie Organisatie van firewallregels voor hoe de regels zijn opgebouwd.

Canary en productie

Het platformteam test elke wijziging aan de hub eerst op een aparte canary-kopie van de hub. Je spokes worden gehost in de production hub. Wijzigingen aan de hub bereiken je pas nadat ze op canary zijn geslaagd.

Meer weten?

De technische documentatie van het platform staat in de sectie Platform.