Ga naar inhoud

AKS-platform: beslissingen

Deze pagina vat de ontwerpbeslissingen van de oplossing samen. Elke rij geeft de beslissing, de reden en waar hij terugkomt. De bronnen leggen de meeste ervan vast als tijdens het ontwerp bevestigd. Waar de code afwijkt van de beslissing, staat dat in de laatste kolom.

Cluster en netwerk

# Beslissing Reden Status in de code
1 Twee clusters: productie, en één niet-productiecluster met een namespace per omgeving Blast radius, onafhankelijke upgrades, andere toegangsregels, compliance, netwerkscheiding Geïmplementeerd
2 Twee spokes, geen peering ertussen Sterke netwerkisolatie Geïmplementeerd. Er bestaat een derde, hub-integrated cluster voor niet-productie
3 Azure CNI in overlay-modus Voorkomt IP-uitputting op het node-subnet, eenvoudige subnetplanning, podranges mogen tussen clusters overlappen Geïmplementeerd
4 Calico als network policy engine Volwassen, brede policy-ondersteuning. Het hoofdstuk over de cluster baseline noemt nog Azure Network Policy Calico in de code
5 Private API server met VNet-integratie Geen publiek endpoint, geen lijst met geautoriseerde IP's nodig Geïmplementeerd
6 Lokale accounts uitgeschakeld, Entra ID met Azure RBAC Eén identiteitsbron, MFA, geen gedeelde admin-credential Geïmplementeerd
7 Egress geforceerd via Azure Firewall met een NAT gateway op het firewall-subnet Inspectie, logging en schaalbare SNAT Niet uitgerold door de Azure-root. Standalone gebruikt de load balancer. Hub-integrated gebruikt user-defined routing
8 Gateway API voor ingress, het platform beheert de gateway, teams beheren routes Geen lock-in aan één controller Manifests in de GitOps-repository
9 Private endpoints voor alle PaaS, centraal beheerd door het platformteam Consistente governance Alleen Key Vault
10 Geen web application firewall in de eerste deployment De eerste deployment eenvoudig houden Niet aanwezig
11 Alleen regio westeurope, dus geen regio in resourcenamen Eén regio Geïmplementeerd
12 Hub-integrated modus als tweede netwerkmodus met hetzelfde outputcontract De landing zone hergebruiken zonder de layers erboven te wijzigen Geïmplementeerd. Het ontwerpdocument zegt nog "implementation pending"

Clusterbeheer

# Beslissing Reden Status in de code
13 Dezelfde Kubernetes minor versie in de stabiele toestand, niet-productie eerst Valideren vóór productie Proces
14 Upgradekanaal productie none, niet-productie patch Bewuste productiewijzigingen, actuele niet-productie Geïmplementeerd
15 System pool met CriticalAddonsOnly, user pool general Platform en workloads scheiden Geïmplementeerd
16 Productie over drie zones, niet-productie kleiner Beschikbaarheid versus kosten Niet-productie is in de code kleiner dan in het ontwerp
17 Azure Monitor, image cleaner, managed Prometheus en diagnostics standaard uit Kosten. Diagnostics verplicht vóór go-live in productie Uit in de referentiebestanden
18 Defender for Containers uitgeschakeld Aanvankelijk niet ingeschakeld Switch bestaat, staat uit
19 Het cluster is wegwerpbaar: herbouwen met Terraform en herstellen met GitOps Eenvoud Back-up van persistent volumes wordt niet gedekt
20 Eén Terraform-root en state per platform en omgeving, één configuratiebestand per omgeving Geïsoleerde blast radius, eenvoudige deployment Geïmplementeerd

Identiteit en secrets

# Beslissing Reden Status in de code
21 Kubernetes-native RBAC uitgerold door GitOps, Azure RBAC voor Azure-resources GitOps-compatibel, gereviewd via pull request Geïmplementeerd, Azure RBAC voor Kubernetes staat ook aan
22 Groepsnaamgeving grp-aks-<scope>-<role>[-<team>][-<env>] Voorspelbaar Geïmplementeerd
23 Ontwikkelaars in productie alleen lezen, acceptatie beperkt Least privilege In de toegangsmatrix
24 Eén workload identity per applicatie en omgeving Geen gedeelde rechten Geïmplementeerd
25 GitHub Actions met federated identity voor CI/CD, aparte identiteiten per taak Geen secrets, functiescheiding Geïmplementeerd
26 Break-glass via PIM, tijdelijk, gemonitord Noodtoegang met een spoor PIM wordt handmatig geconfigureerd
27 Groepen en roltoewijzingen beheerd door het platformteam in Terraform Eén eigenaar Geïmplementeerd
28 Key Vault met RBAC, alleen private endpoint, purge protection. Applicaties lezen hem met de SDK, geen CSI driver Scoping per applicatie, geen secrets in etcd De CSI add-on staat in de referentiebestanden aan
29 Certificaten in Key Vault, met Key Vault-rotatie, in plaats van cert-manager Geen extra controller Niet geverifieerd, cert-manager wordt in het ontwerp ook als platformnamespace genoemd

Security policy

# Beslissing Reden Status in de code
30 Ingebouwde Azure Policy-initiatives vanaf dag één, Kyverno als het zover is Baseline zonder nieuwe controller, daarna rijkere regels Azure Policy-toewijzingen op Audit en Deny zoals vermeld in Security policy
31 Kyverno boven OPA Gatekeeper YAML, mutatie en generatie in één tool, policy reports Policies bestaan, allemaal op Audit in de manifests
32 Policylevenscyclus: audit, daarna afdwingen in niet-productie na 7 dagen, daarna productie na 14 dagen Geen verrassingen in productie Proces
33 Default-deny network policy in elke applicatienamespace Laterale beweging Manifests in de GitOps-repository
34 Policy-uitzonderingen met een tijdslimiet, maximaal 90 dagen, met goedkeuring van security Geen permanente gaten Proces
35 Manifests in het cluster gaan als Helm charts met een configureerbaar labeldomein naar een GitOps-repository Labels per klant, omgevingsverschillen als waarden De kopieën in de Terraform-repository zijn deprecated

Azure Local

# Beslissing Reden Status in de code
36 Het cluster aanmaken met de Azure CLI, niet met Terraform Het aanmaken van het cluster met OIDC en workload identity, en MetalLB, vragen de Azure CLI-flow Geïmplementeerd in het bootstrapscript
37 Arc-extensies in plaats van AKS add-ons: Argo CD, Azure Policy, Arc Networking Add-ons bestaan niet op Azure Local Geïmplementeerd
38 MetalLB met ARP, BGP of Both Load balancing on premises Geïmplementeerd
39 De gedeelde identity- en Key Vault-modules hergebruiken Hetzelfde model op beide varianten Geïmplementeerd