AKS Platform: Voraussetzungen¶
Diese Seite listet auf, was pro Variante existieren muss, bevor das Plattform-Team deployen kann. Im managed Modell liefert der Kunde die als Kunde markierten Punkte; im Eigenbetrieb liefern deine eigenen Teams alle davon (Betriebsmodelle).
Alle Varianten¶
| Element | Detail |
|---|---|
| Azure subscription und Region | Aktive subscription mit ausreichend Quota für die Node Pools |
| Storage für den Terraform-state | Ein Storage Account und Container für den Remote-state. Die pipeline-Identität braucht darauf Storage Blob Data Contributor. Ein state-Key pro Plattform und Umgebung |
| Eine pipeline-Identität | Eine Federated Identity (OIDC, keine Secrets) mit den Rollen aus Deployment |
| Entra-ID-Berechtigungen | Berechtigung, Gruppen anzulegen: Microsoft-Graph-Anwendungsberechtigung Group.ReadWrite.All mit Admin Consent oder die Entra-Rolle Groups Administrator für die pipeline-Identität |
| Pipeline-Agent | Ein Agent, der den Storage für den Terraform-state, management.azure.com und login.microsoftonline.com erreichen kann. Für eine private Cluster-API braucht er außerdem einen Netzwerkpfad zum API-Server |
| Cluster-Admin-Gruppe | Eine Entra-ID-Gruppe für die Cluster-Admins (die Plattform-Admin-Gruppe wird an den Cluster übergeben) |
| Konfigurations- und Variablen-Repositories | Die Konfigurationsdateien pro Umgebung und die Authentifizierungsvariablen, die die pipeline zur Laufzeit lädt |
AKS in Azure¶
| Element | Standalone | Hub-integriert |
|---|---|---|
| Adressplan | VNet-CIDR plus die vier Subnet-CIDRs, ein Service-CIDR und ein Pod-CIDR | Die vier Subnets und Bereiche vom hub, plus Service- und Pod-CIDRs |
| Spoke-VNet und Subnets | Werden angelegt | Vom hub angelegt: Nodes, Ingress, private endpoints, API-Server (delegiert) |
| Peering und Firewallregeln für den AKS-Egress | Nicht zutreffend | Erforderlich. Fehlende Regeln lassen den Cluster-Bootstrap scheitern |
| Private DNS zones für Key Vault und Container Registry | Werden angelegt (Key Vault) | Vom hub bereitgestellt und verknüpft |
| Berechtigungen auf der Spoke-subscription | Contributor auf der subscription | VNet und Subnets lesen und Rollenzuweisungen auf dem Spoke-VNet anlegen |
| Container Registry (optional) | IDs in aks_acr_ids bekommen AcrPull für das kubelet |
Dasselbe |
| Log-Analytics-workspace (optional) | Nötig für Monitoring, Diagnose, Alerts und Defender | Dasselbe |
AKS auf Azure Local¶
Das sind Infrastrukturressourcen, die nicht remote angelegt werden können.
| Element | Geliefert von |
|---|---|
| Azure-Local-Cluster, registriert und gesund | Kunde |
| Arc Resource Bridge, deployt und gesund | Kunde |
| Custom location (Resource-ID) | Kunde |
| Logical network für das Node-Networking (Resource-ID) | Kunde |
| Subscription-ID, Tenant-ID, Region, in der Azure Local registriert ist | Kunde |
| Registrierte Resource Provider (der Bootstrap prüft und registriert die wichtigsten) | pipeline oder Kunde |
| Agent-Pool unter Linux mit bash und PowerShell, mit Zugriff auf das private Netzwerk | Kunde |
| Vom Agent erreichbarer Storage für den Terraform-state | Kunde |
| Objekt-ID(s) der Entra-ID-Gruppe(n) für die Cluster-Admins | Kunde |
| IP-Bereich für MetalLB, ohne Überschneidung mit bestehenden Netzwerken | Kunde |
MetalLB-Advertise-Modus: ARP (Standard), BGP oder Both. BGP braucht Peer-Namen, beide AS-Nummern und die Peer-Adresse |
Kunde |
| Vom Cluster erreichbare DNS-Server | Kunde |
Firewallpfad von der Arc Resource Bridge¶
Vor dem Bootstrap prüfen
Die Arc Resource Bridge sitzt im Management-Netzwerk. Sie muss TCP-Port 6443 (den Kubernetes-API-Server) auf der
Control-Plane-IP des neuen Clusters erreichen, im VLAN des Logical Network. Eine Standard-Firewallregel im
On-Premises-Netzwerk des Kunden hat diesen Pfad bei einem früheren Deployment blockiert, und die Cluster-Erstellung scheiterte mit APIServerNotOnline.
Lass das Netzwerk-Team den Pfad öffnen und teste ihn vor dem Bootstrap, zum Beispiel mit
Test-NetConnection <control-plane-ip> -Port 6443 aus dem Management-Netzwerk oder mit der Microsoft-Diagnose für einen
nicht erreichbaren AKS-Arc-API-Server.
Was die pipeline anlegt¶
Das Folgende musst du nicht vorbereiten. Der Bootstrap und Terraform legen es an:
| Ressource | Angelegt von |
|---|---|
| Resource group für den Cluster, AKS-Arc-Cluster, OIDC-Issuer und Workload Identity | Bootstrap |
| MetalLB-Load-Balancer | Bootstrap |
| Registrierungen der Resource Provider | Bootstrap |
| Arc-Extensions (Argo CD, Azure Policy, Arc Networking), Entra-ID-Gruppen, managed identities, Key Vault, Azure-Policy-Zuweisung | Terraform |
pipeline-Identität für Azure Local (Azure DevOps)¶
| Rolle | Scope | Zweck |
|---|---|---|
| Contributor | Subscription oder die Cluster-resource-group | Resource groups, Cluster, Extensions, Key Vault |
| Storage Blob Data Contributor | Storage Account für den state | state lesen und schreiben |
| User Access Administrator | Cluster-resource-group | Nur wenn das Identity-Modul Azure-Rollen zuweist |
Die Azure-DevOps-pipeline liest zwei Werte aus einer Variable Group (AZURE_SERVICE_CONNECTION und AGENT_POOL_NAME), weil
Azure DevOps sie braucht, bevor irgendein Schritt läuft. Alles andere wird aus einer Konfigurationsdatei im Repository gelesen
(<environment>.pipeline-vars.yml). Genehmigungen für apply und destroy werden an einem Azure-DevOps-Environment gesetzt.
Ablauf¶
- Liefere die Werte in den Tabellen oben.
- Das Plattform-Team legt die pipeline, die Variable Group und das Environment an.
- Führe einen
planaus, um Konnektivität und Konfiguration zu prüfen. - Deploye: Bootstrap (nur Azure Local), dann Terraform.