Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieses Lernprogramm führt Sie durch die Bereitstellung eines privaten Azure Kubernetes Service (AKS) Clusters in Azure Enklave. Sie erstellen einen vollständig privaten AKS-Cluster mit vom Kunden verwalteter Verschlüsselung, Netzwerkintegration und sicheren Zugriffsmustern.
In diesem Tutorial erfahren Sie, wie:
- Aktivieren erforderlicher Azure Features für private AKS
- Überprüfen der erforderlichen Ressourcen für AKS
- Bereitstellen eines privaten AKS-Clusters
- Konfigurieren der vom Kunden verwalteten Schlüsselverschlüsselung
- Erstellen Sie Community-Endpunkte für die AKS-Konnektivität
- Zuordnen mehrerer Ressourcengruppen zu AKS-Arbeitsauslastung
- Zugreifen auf den AKS-Cluster und Überprüfen
Voraussetzungen
- Abschluss des Lernprogramms 2-3: Bereitstellen Azure Virtual Desktop Workload
- AKS-Enklave mit Knoten, API-Server und privaten Endpunktsubnetzen
- Allgemeine Abhängigkeiten (Key Vault, verwaltete Identität, Datenträgerverschlüsselungssatz) aus Lernprogramm 2-2: Erstellen Azure Enklave-Umgebung
- Privates DNS-Zonen für AKS bereitgestellt
- Mitwirkender-Rolle in der AKS-Workload-Ressourcengruppe
- „Azure Kubernetes Service-Mitwirkender“-Rolle im Abonnement
- Azure CLI oder Azure PowerShell für erweiterte Vorgänge installiert
Important
Dieses Lernprogramm entspricht dem Verhalten der Vorlage Private AKS Cluster und erfordert die Ressourcen, die durch die Bereitstellung von AVE AKS Enclave in Tutorial 2-2 erstellt wurden.
Bevor Sie anfangen
Grundlegendes zu AKS in Azure Enklave
AKS in Azure Enklave bietet:
- Vollständig privater Cluster: API-Server, auf den nur über den privaten Endpunkt zugegriffen werden kann
- Netzwerkisolation: Der gesamte Datenverkehr bleibt innerhalb von Enklavengrenzen
- Vom Kunden verwaltete Verschlüsselung: Steuerungsebene und Datenebene mit CMK verschlüsselt
- Grenzen für sichere Workload: Kubernetes-Ressourcen, die in enklaven Sicherheitsrichtlinien enthalten sind
Konventionen für Ressourcennamen
In diesem Lernprogramm werden Beispielnamen verwendet. Verwenden Sie die Benennungskonvention Ihrer Organisation:
- Enklave:
aks-enclave - Arbeitslast:
aks-workload - Ressourcengruppe:
rg-aks-cluster - AKS-Cluster:
aks-prod-01
Aktivieren erforderlicher Azure Features
AKS in Azure Enclave erfordert, dass bestimmte Azure Features für Ihr Abonnement aktiviert werden.
EncryptionAtHost-Feature aktivieren
Dieses Feature ermöglicht die Verschlüsselung auf vm-Hostebene für AKS-Knoten.
# Register the feature
az feature register --namespace Microsoft.Compute --name EncryptionAtHost
# Check registration status (may take 10-15 minutes)
az feature show --namespace Microsoft.Compute --name EncryptionAtHost
# Once registered, refresh the provider
az provider register --namespace Microsoft.Compute
API-Server-Integration in ein virtuelles Netzwerk aktivieren (Vorschau)
Mit diesem Feature kann der AKS-API-Server direkt in Ihr virtuelles Netzwerk integriert werden.
# Register the feature
az feature register --namespace Microsoft.ContainerService --name EnableAPIServerVnetIntegrationPreview
# Check registration status
az feature show --namespace Microsoft.ContainerService --name EnableAPIServerVnetIntegrationPreview
# Once registered, refresh the provider
az provider register --namespace Microsoft.ContainerService
Important
Warten Sie, bis beide Funktionen "state": "Registered" angezeigt werden, bevor Sie fortfahren. Die Registrierung dauert in der Regel 10-15 Minuten.
Vorbereiten des SSH-Schlüssels (optional)
Note
Die SSH-Schlüsselauthentifizierung für den AKS-Knotenzugriff ist veraltet. Dieser Schritt ist derzeit erforderlich, ist aber in zukünftigen Vorlagenversionen optional. Wenn Sie keinen direkten Knotenzugriff benötigen, können Sie diesen Abschnitt überspringen, wenn die Vorlage aktualisiert wird.
Ssh-Schlüsselpaar generieren
# Create .ssh directory if it doesn't exist
$sshDir = "$env:USERPROFILE\.ssh"
if (-not (Test-Path $sshDir)) {
New-Item -ItemType Directory -Path $sshDir
}
# Generate SSH key pair
ssh-keygen -t rsa -b 4096 -f "$sshDir\aks-nodes" -N '""'
# Display the public key
Get-Content "$sshDir\aks-nodes.pub"
Speichern des SSH-Schlüssels in Key Vault
# Read the SSH public key
$sshPublicKey = Get-Content "$env:USERPROFILE\.ssh\aks-nodes.pub" -Raw
# Store in Key Vault as a secret
az keyvault secret set `
--vault-name "kv-ave-shared-<uniqueid>" `
--name "aks-ssh-public-key" `
--value $sshPublicKey
Bereitstellen eines privaten AKS-Clusters
Stellen Sie nun den AKS-Cluster mit vollständiger Verschlüsselung und Überwachung bereit.
Verwenden der Dienstkatalogvorlage
- Wählen Sie in Ihrer AKS-Workload+ Azure-Dienst hinzufügen aus.
- Suchen Sie nach Private AKS Cluster und wählen Sie Private AKS Cluster aus.
- Konfigurieren Sie die Bereitstellung:
Grundlagen-Tab
-
AKS-Clustername:
aks-prod-01 -
Kubernetes-Version: Wählen Sie die neueste stabile Version aus (z. B
1.32. )
Überwachung
- Name des Log Analytics-Arbeitsbereichs: Wählen Sie das Protokollierungsziel für Ihren Bereich oder Ihre Community aus.
Encryption
- Datenträgerverschlüsselungssatzname: Geben Sie den Namen ein, den Sie im Lernprogramm 2-2 verwendet haben.
- Verschlüsselungsschlüsselname: Geben Sie ihren Schlüsseltresornamen ein.
- Key Vault: Wählen Sie Ihre key vault mit diesem Schlüsselnamen aus.
Zugriff
- AKS-Identitätsname: Geben Sie den Namen ein, den Sie in Lernprogramm 2-2 verwendet haben.
- AKS Identity Resource Group Name: Aktualisieren Sie den Ressourcengruppennamen so, dass er mit dem Speicherort Ihrer Identität übereinstimmt.
Networking
- AKS-Subnetzname: Geben Sie Ihren AKS-Subnetznamen ein.
- Name des Agentpoolsubnetz: Geben Sie ihren Agentpool-Subnetznamen ein.
-
CIDR für Dienstverkehr:
172.16.0.0/16 -
IP-Adresse des Kubernetes-DNS-Diensts:
172.16.0.10
Subnetzkonfiguration:
-
Knoten-Subnetz: Wählen Sie
aksSubnetaus Ihrer Enklave -
API-Server-Subnetz: Wählen Sie
agentSubnetaus Ihrer Enklave -
Privates Endpunktsubnetz: Wählen Sie
AzureVirtualEnclaveSubnetaus Ihrer Enklave
Knotenpool
Wählen Sie Next aus, um diese Registerkarte in diesem Tutorial zu überspringen.
Stichwörter
-
Umgebung:
Production -
Arbeitsbelastung:
AKS -
Gemanagt von:
Azure Enclave
- Wählen Sie Überprüfen + Erstellen aus.
- Überprüfen Sie alle Einstellungen sorgfältig.
- Wählen Sie "Erstellen" aus.
Note
Der AKS-Cluster erstellt automatisch eine verwaltete Ressourcengruppe.
Erstellen Sie Community-Endpunkte für die AKS-Konnektivität
AKS erfordert ausgehende Konnektivität mit mehreren Azure-Diensten. Erstellen Sie Community-Endpunkte für diese Anforderungen.
Note
Wenn Sie im Tutorial 2-1 Community-Endpunkte für AKS erstellt haben, überprüfen Sie, ob sie alle erforderlichen FQDNs enthalten.
Community-Endpunkt konfigurieren
Geh zu deiner Community (zum Beispiel,
cmt-fabrikam).Wählen Sie Community-Endpunkte>+ Erstellen aus oder bearbeiten Sie einen vorhandenen
ce-aks-services.Stellen Sie sicher, dass diese Regeln vorhanden sind:
Regel 1: Microsoft Containerregistrierung
-
Name:
mcr -
Ziel:
mcr.microsoft.com,*.data.mcr.microsoft.com -
Protokoll:
HTTPS. - Port:
443
Regel 2: AKS-Verwaltung
-
Name:
aks-management -
Ziel:
*.hcp.<region>.azmk8s.io,<region>.dp.kubernetesconfiguration.azure.com -
Protokoll:
HTTPS. - Port:
443
Regel 3: verwaltung von Azure
-
Name:
azure-management -
Ziel:
management.azure.com,login.microsoftonline.com -
Protokoll:
HTTPS. - Port:
443
Regel 4: Paket-Repository
-
Name:
packages -
Ziel:
packages.microsoft.com,acs-mirror.azureedge.net,azure.archive.ubuntu.com -
Protokoll:
HTTPS. - Port:
443
Regel 5: Azure Monitor (sofern aktiviert)
-
Name:
monitoring -
Ziel:
*.ods.opinsights.azure.com,*.oms.opinsights.azure.com,dc.services.visualstudio.com -
Protokoll:
HTTPS. - Port:
443
-
Name:
Wählen Sie Überprüfen + erstellen und dann Erstellen oder Speichern aus.
Konfigurieren von NSG-Ausgangsregeln
Fügen Sie Ihrer NSG Sicherheitsregeln für ausgehenden Datenverkehr hinzu, um AKS-Datenverkehr zuzulassen.
- Navigieren Sie zu Netzwerksicherheitsgruppen>
nsg-aks-nodes. - Wählen Sie Ausgehende Sicherheitsregeln>+ Hinzufügen aus.
- Regel für HTTPS ausgehend hinzufügen:
-
Quelle:
VirtualNetwork -
Ziel:
Internet -
Zielport:
443 -
Protokoll:
TCP. -
Aktion:
Allow -
Priorität:
1000 -
Name:
Allow_HTTPS_Outbound
-
Quelle:
AKS-Ressourcengruppen einem Workload zuordnen
AKS erstellt eine verwaltete Ressourcengruppe (MANAGED Resource Group, MRG) für die Clusterinfrastruktur. Ordnen Sie sowohl die Benutzerressourcengruppe als auch MRG Ihrer Workload zu.
Verwenden des Azure-Portals
- Navigieren Sie im Azure Portal zu Ihrem Azure Enklave-Dienst.
- Wählen Sie Ihre Community aus (z. B
cmt-fabrikam. ). - Wählen Sie Enklaven aus, und öffnen Sie Ihre AKS-Enklave (z. B
ve-aks. ). - Wählen Sie Workloads aus und öffnen Sie Ihre AKS-Workload (z. B.
wl-aks). - Wählen Sie in der Workloadübersicht "Eigenschaften" oder "Verknüpfte Ressourcengruppen" aus.
- Wählen Sie +Ressourcengruppe hinzufügen.
- Fügen Sie die Benutzerressourcengruppe hinzu:
- Abonnement auswählen: Ihr Abonnement
-
Ressourcengruppe auswählen:
rg-aks-cluster - Wählen Sie Hinzufügen aus.
- Wählen Sie erneut +Ressourcengruppe hinzufügen aus.
- Fügen Sie die verwaltete AKS-Ressourcengruppe hinzu:
- Der verwaltete RG-Name folgt dem Muster:
MC_rg-aks-cluster_aks-prod-01_<region> - Abonnement auswählen: Ihr Abonnement
- Ressourcengruppe auswählen: Die verwaltete AKS-Ressourcengruppe
- Wählen Sie Hinzufügen aus.
- Der verwaltete RG-Name folgt dem Muster:
- Überprüfen Sie, ob beide Ressourcengruppen in der Liste der verknüpften Ressourcengruppen der Workload angezeigt werden.
Tip
Um den Namen der verwalteten AKS-Ressourcengruppe zu finden, navigieren Sie im Portal zu Ihrem AKS-Cluster, und überprüfen Sie die Eigenschaft "Node-Ressourcengruppe " auf der Seite "Übersicht".
Auf AKS-Cluster zugreifen
Greifen Sie über eine Administrator-VM oder Azure Bastion innerhalb der Enklave auf den privaten AKS-Cluster zu.
Herstellen einer Verbindung mit einem virtuellen Administratorcomputer
- Stellen Sie über Azure Bastion oder RDP eine Verbindung mit Ihrer Administrator-VM her.
- Stellen Sie sicher, dass der virtuelle Administratorcomputer Azure CLI installiert hat.
- Melden Sie sich bei Azure an:
az login
Abrufen von Anmeldeinformationen für AKS
# Get cluster credentials
az aks get-credentials `
--resource-group rg-aks-cluster `
--name aks-prod-01 `
--admin
# Verify connection
kubectl get nodes
Die erwartete Ausgabe zeigt Knoten mit dem Status Ready an:
NAME STATUS ROLES AGE VERSION
aks-systempool-12345678-vmss000000 Ready agent 5m v1.29.5
aks-systempool-12345678-vmss000001 Ready agent 5m v1.29.5
aks-systempool-12345678-vmss000002 Ready agent 5m v1.29.5
Testarbeitslast bereitstellen
Stellen Sie eine Beispielanwendung bereit, um den Cluster zu überprüfen.
Namespace erstellen
kubectl create namespace test-app
Bereitstellen der Beispielanwendung
# Save as test-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
namespace: test-app
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: mcr.microsoft.com/oss/nginx/nginx:1.25.3
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
namespace: test-app
spec:
type: LoadBalancer
selector:
app: nginx
ports:
- port: 80
targetPort: 80
# Apply the deployment
kubectl apply -f test-deployment.yaml
# Check deployment status
kubectl get deployments -n test-app
kubectl get pods -n test-app
kubectl get services -n test-app
Validierung der Bereitstellung
Führen Sie eine umfassende Überprüfung Ihres AKS-Clusters durch.
Clustergesundheit prüfen
# Check node status
kubectl get nodes -o wide
# Check system pods
kubectl get pods -n kube-system
# Check node conditions
kubectl describe nodes | grep -A 5 Conditions
Überprüfen der Verschlüsselung
# Check if encryption at host is enabled
az aks show --resource-group rg-aks-cluster --name aks-prod-01 --query "securityProfile.enableEncryptionAtHost"
# Check disk encryption set
az aks show --resource-group rg-aks-cluster --name aks-prod-01 --query "diskEncryptionSetId"
Überprüfen der Netzwerkkonnektivität
# Test DNS resolution
kubectl run -it --rm debug --image=mcr.microsoft.com/dotnet/runtime-deps:6.0 --restart=Never -- nslookup kubernetes.default
# Test internet connectivity through community endpoints
kubectl run -it --rm debug --image=curlimages/curl --restart=Never -- curl -I https://mcr.microsoft.com
# Check service connectivity
kubectl get services -A
Überprüfen Sie Monitoring und Protokolle
# Check if Container Insights is enabled
az aks show --resource-group rg-aks-cluster --name aks-prod-01 --query "addonProfiles.omsagent.enabled"
# Query logs in Log Analytics
az monitor log-analytics query `
--workspace <workspace-id> `
--analytics-query "ContainerLog | where TimeGenerated > ago(1h) | limit 10"
Überprüfen der Azure Policy-Konformität
# Check Azure Policy add-on status
kubectl get pods -n kube-system | grep azure-policy
# View policy violations (if any)
kubectl get constrainttemplates
kubectl get constraints
Konfigurieren des Kubectl-Zugriffs für andere Benutzer
Gewähren Sie anderen Benutzern Zugriff auf den AKS-Cluster.
Verwenden von Azure RBAC
# Assign Azure Kubernetes Service Cluster User Role
az role assignment create `
--assignee user@contoso.com `
--role "Azure Kubernetes Service Cluster User Role" `
--scope "/subscriptions/<subscription-id>/resourceGroups/rg-aks-cluster/providers/Microsoft.ContainerService/managedClusters/aks-prod-01"
# For admin access
az role assignment create `
--assignee user@contoso.com `
--role "Azure Kubernetes Service Cluster Admin Role" `
--scope "/subscriptions/<subscription-id>/resourceGroups/rg-aks-cluster/providers/Microsoft.ContainerService/managedClusters/aks-prod-01"
Verwenden von Kubernetes RBAC
# Create role binding for namespace access
kubectl create rolebinding user-viewer `
--clusterrole=view `
--user=user@contoso.com `
--namespace=test-app
Behandlung häufig auftretender Probleme
Die Clustererstellung schlägt fehl
Symptom: AKS-Clusterbereitstellung schlägt fehl
Lösungen:
- Überprüfen, ob Featurekennzeichnungen registriert sind:
EncryptionAtHost,EnableAPIServerVnetIntegrationPreview - Überprüfen Sie, ob die Subnetzgrößen für die Knotenanzahl und die Pod-Dichte ausreichend sind.
- Überprüfen, ob datenträgerverschlüsselungssatz und verwaltete Identität über entsprechende Berechtigungen verfügen
- Überprüfen des Aktivitätsprotokolls für bestimmte Fehlermeldungen
Knoten nicht bereit
Symptom: Knoten zeigen den Status an NotReady
Lösungen:
- Überprüfen Sie, ob das Knotensubnetz über ausgehende Konnektivität zu den erforderlichen Endpunkten verfügt.
- Überprüfen Sie, ob die Community-Endpunkte alle erforderlichen AKS-FQDNs enthalten.
- Überprüfen Sie, ob NSG-Regeln ausgehenden Datenverkehr über Port 443 zulassen.
- Knoten-Logs überprüfen:
kubectl describe node <node-name>
Pods können keine Bilder abrufen
Symptom: Pods hängen in ImagePullBackOff fest
Lösungen:
- Prüfen, ob der Community-Endpunkt
mcr.microsoft.comund*.data.mcr.microsoft.comenthält - Check NSG ermöglicht ausgehendes HTTPS (Port 443)
- Sicherstellen, dass die DNS-Auflösung funktioniert:
nslookup mcr.microsoft.comvon Pod - Zugangsgeheimnisse für das Abrufen von Images bei Verwendung privater Registrys überprüfen
Eine Verbindung mit dem API-Server kann nicht hergestellt werden.
Symptom: kubectl Befehle schlagen mit Verbindungstimeout fehl
Lösungen:
- Vergewissern Sie sich, dass Sie sich auf einem virtuellen Administratorcomputer oder einer Ressource mit Enklavenkonnektivität befinden
- Überprüfen der privaten DNS-Zone, die mit dem virtuellen Netzwerk verknüpft ist
- Überprüfen der Subnetzkonfiguration des API-Servers
- Testen Sie die DNS-Auflösung:
nslookup <cluster-fqdn>
Überwachung funktioniert nicht
Symptom: Keine Protokolle oder Metriken in Azure Monitor
Lösungen:
- Überprüfen, ob das Container insights-Add-On aktiviert ist
- Überprüfen, dass Communityendpunkte die Überwachung von FQDNs umfassen
- Überprüfen, ob auf Log Analytics Arbeitsbereich über den Cluster zugegriffen werden kann
- Prüfen Sie
omsagent, ob Pods ausgeführt werden:kubectl get pods -n kube-system | grep omsagent
Bereinigen von Ressourcen
Um laufende Gebühren zu vermeiden, löschen Sie Ressourcen, wenn sie nicht mehr benötigt werden.
Löschen des AKS-Clusters
# Delete AKS cluster (also deletes managed resource group)
az aks delete --resource-group rg-aks-cluster --name aks-prod-01 --yes --no-wait
# Delete user resource group
az group delete --name rg-aks-cluster --yes --no-wait
# Delete infrastructure resource group
az group delete --name rg-aks-infrastructure --yes --no-wait
Warning
Durch das Dauerhafte Löschen des AKS-Clusters werden alle Arbeitslasten und Daten entfernt. Stellen Sie sicher, dass Sie bei Bedarf Sicherungen haben.
Nächste Schritte
Sie haben die Lernprogrammreihe zum Bereitstellen von Azure Virtual Desktop- und AKS-Workloads in Azure Enklave abgeschlossen!
Empfohlene nächste Schritte
- Konfigurieren der automatischen Skalierung für AKS
- Bereitstellen von Anwendungen mit Helm
- Implementieren von GitOps mit Flux
- Konfigurieren des Eingangscontrollers
- Aktivieren der Workloadidentität