Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här självstudien vägleder dig genom distributionen av ett privat Azure Kubernetes Service-kluster (AKS) i Azure Enclave. Du skapar ett helt privat AKS-kluster med kundhanterad kryptering, nätverksintegrering och säkra åtkomstmönster.
I den här tutorialen lär du dig följande:
- Aktivera nödvändiga Azure funktioner för privata AKS
- Verifiera nödvändiga resurser för AKS
- Distribuera privat AKS-kluster
- Konfigurera kundhanterad nyckelkryptering
- Skapa communityslutpunkter för AKS-anslutning
- Associera flera resursgrupper med AKS-arbetsbelastning
- Få åtkomst till AKS-klustret och verifiera
Förutsättningar
- Slutföra Självstudie 2–3: Distribuera Azure Virtual Desktop-arbetsbelastning
- AKS-enklaver med nod-, API-server- och privata slutpunktsundernät
- Vanliga beroenden (Key Vault, hanterad identitet, diskkrypteringsuppsättning) från Självstudie 2–2: Skapa Azure enklavmiljö
- Privata DNS-zoner för AKS har distribuerats
- Deltagarroll i resursgruppen för AKS-arbetsbelastning
- Azure Kubernetes Service Deltagare-rollen för prenumerationen
- Azure CLI eller Azure PowerShell installerade för avancerade åtgärder
Important
Den här självstudien följer beteendet för mallen Private AKS Cluster och kräver de resurser som skapades vid distributionen av AVE AKS Enclave i Självstudie 2-2.
Innan du börjar
Förstå AKS i Azure Enclave
AKS i Azure Enclave tillhandahåller:
- Fullständigt privat kluster: API-servern är endast tillgänglig via privat slutpunkt
- Nätverksisolering: All trafik ligger inom enklavergränserna
- Kundhanterad kryptering: Både kontrollplan och dataplan krypterade med CMK
- Säkra arbetsbelastningsgränser: Kubernetes-resurser som ingår i enklavers säkerhetsprinciper
Namngivningskonventioner för resurser
Den här handledningen använder exempelnamn. Använd organisationens namngivningskonvention:
- Enklav:
aks-enclave - Arbetsbelastning:
aks-workload - Resursgrupp:
rg-aks-cluster - AKS-kluster:
aks-prod-01
Aktivera nödvändiga Azure funktioner
AKS i Azure Enclave kräver att specifika Azure funktioner aktiveras i din prenumeration.
Aktivera funktionen EncryptionAtHost
Den här funktionen aktiverar kryptering på värdnivå för virtuella datorer för AKS-noder.
# 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
Aktivera integrering av virtuella API Server-nätverk (förhandsversion)
Med den här funktionen kan AKS API-servern integreras direkt i ditt virtuella nätverk.
# 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
Vänta tills båda funktionerna visas "state": "Registered" innan du fortsätter. Registreringen tar vanligtvis 10–15 minuter.
Förbereda SSH-nyckel (valfritt)
Note
SSH-nyckelautentisering för AKS-nodåtkomst är inaktuell. Det här steget krävs för närvarande men är valfritt i framtida mallversioner. Om du inte behöver direkt nodåtkomst kan du hoppa över det här avsnittet när mallen uppdateras.
Generera SSH-nyckelpar
# 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"
Lagra SSH-nyckel i 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
Distribuera ett privat AKS-kluster
Distribuera nu AKS-klustret med fullständig kryptering och övervakning.
Använda tjänstkatalogmall
- I DIN AKS-arbetsbelastning väljer du + Lägg till en Azure-tjänst.
- Sök efter och välj Privat AKS-kluster.
- Konfigurera distributionen:
Grundläggande-fliken
-
AKS-klusternamn:
aks-prod-01 -
Kubernetes-version: Välj den senaste stabila versionen (till exempel
1.32)
Övervakning
- Namn på Log Analytics-arbetsyta: Välj ditt loggningsmål för enklav eller community-loggning.
Encryption
- Namn på diskkrypteringsuppsättning: Ange det namn som du använde i Självstudie 2–2.
- Namn på krypteringsnyckel: Ange nyckelnamnet för nyckelvalvet.
- Key Vault: Välj din key vault med det nyckelnamnet.
Åtkomst
- AKS-identitetsnamn: Ange det namn som du använde i Självstudie 2–2.
- NAMN på AKS-identitetsresursgrupp: Uppdatera resursgruppens namn så att det matchar var din identitet finns.
Networking
- AKS-undernätsnamn: Ange ditt AKS-undernätsnamn
- Undernätsnamn för agentpool: Ange namnet på agentpoolens undernät
-
CIDR för tjänsttrafik:
172.16.0.0/16 -
IP-adressen för Kubernetes DNS-tjänsten:
172.16.0.10
Konfiguration av undernät:
-
Nodundernät: Välj
aksSubnetfrån din enklav -
API Server-undernät: Välj
agentSubnetfrån din enklaver -
Privat slutpunktsundernät: Välj
AzureVirtualEnclaveSubnetfrån din enklaver
Nodgrupp
Välj Next om du vill hoppa över den här fliken i den här självstudien.
Tags
-
Miljö:
Production -
Arbetsbelastning:
AKS -
Hanterat av:
Azure Enclave
- Välj Översikt + skapa.
- Granska alla inställningar noggrant.
- Välj Skapa.
Note
AKS-klustret skapar automatiskt en hanterad resursgrupp.
Skapa communityslutpunkter för AKS-anslutning
AKS kräver utgående anslutning till flera Azure tjänster. Skapa communityendpoints utifrån dessa krav.
Note
Om du skapade community-slutpunkter för AKS i Självstudie 2-1, kontrollera att de innehåller alla nödvändiga FQDN:er.
Konfigurera community-slutpunkt
Gå till din community (till exempel,
cmt-fabrikam).Välj Community-slutpunkter>+ Skapa eller redigera befintliga slutpunkter
ce-aks-servicesSe till att dessa regler finns:
Regel 1: Microsoft Container Registry
-
Namn:
mcr -
Mål:
mcr.microsoft.com,*.data.mcr.microsoft.com -
Protokoll:
HTTPS -
Port:
443
Regel 2: AKS-hantering
-
Namn:
aks-management -
Mål:
*.hcp.<region>.azmk8s.io,<region>.dp.kubernetesconfiguration.azure.com -
Protokoll:
HTTPS -
Port:
443
Regel 3: hantering av Azure
-
Namn:
azure-management -
Mål:
management.azure.com,login.microsoftonline.com -
Protokoll:
HTTPS -
Port:
443
Regel 4: Paketlagringsplats
-
Namn:
packages -
Mål:
packages.microsoft.com,acs-mirror.azureedge.net,azure.archive.ubuntu.com -
Protokoll:
HTTPS -
Port:
443
Regel 5: Azure Monitor (om aktiverad)
-
Namn:
monitoring -
Mål:
*.ods.opinsights.azure.com,*.oms.opinsights.azure.com,dc.services.visualstudio.com -
Protokoll:
HTTPS -
Port:
443
-
Namn:
Välj Granska + skapa och sedan Skapa eller Spara.
Konfigurera utgående regler för NSG
Lägg till utgående säkerhetsregler i din NSG för att tillåta AKS-trafik.
- Gå till Nätverkssäkerhetsgrupper>
nsg-aks-nodes. - Välj Utgående säkerhetsregler>+ Lägg till.
- Lägg till regel för UTgående HTTPS:
-
Källa:
VirtualNetwork -
Mål:
Internet -
Målport:
443 -
Protokoll:
TCP -
Åtgärd:
Allow -
Prioritet:
1000 -
Namn:
Allow_HTTPS_Outbound
-
Källa:
Associera AKS-resursgrupper med arbetsbelastning
AKS skapar en hanterad resursgrupp (MRG) för klusterinfrastruktur. Associera både användarresursgruppen och MRG med din arbetsbelastning.
Använda Azure-portalen
- Gå till din Azure Enclave-tjänst i Azure-portalen.
- Välj din community (till exempel
cmt-fabrikam). - Välj Enklaver och öppna aks-enklaven (till exempel
ve-aks). - Välj Arbetsbelastningar och öppna din AKS-arbetsbelastning (till exempel
wl-aks). - I arbetsbelastningsöversikten väljer du Egenskaper eller Länkade resursgrupper.
- Välj + Lägg till resursgrupp.
- Lägg till användarresursgruppen:
- Välj prenumeration: Din prenumeration
- Välj Resursgrupp:
rg-aks-cluster - Välj Lägg till
- Välj + Lägg till resursgrupp igen.
- Lägg till den AKS-hanterade resursgruppen:
- Det hanterade RG-namnet följer mönstret:
MC_rg-aks-cluster_aks-prod-01_<region> - Välj prenumeration: Din prenumeration
- Välj Resursgrupp: DEN AKS-hanterade resursgruppen
- Välj Lägg till
- Det hanterade RG-namnet följer mönstret:
- Kontrollera att båda resursgrupperna visas i listan över länkade resursgrupper i arbetsbelastningen.
Tip
Om du vill hitta namnet på den AKS-hanterade resursgruppen går du till AKS-klustret i portalen och kontrollerar egenskapen Node-resursgrupp på sidan Översikt.
Få åtkomst till AKS-kluster
Få åtkomst till det privata AKS-klustret via en virtuell administratörsdator eller Azure Bastion i enklaven.
Ansluta till den virtuella administratörsdatorn
- Anslut till den virtuella administratörsdatorn via Azure Bastion eller RDP.
- Kontrollera att den virtuella administratörsdatorn har Azure CLI installerat.
- Logga in på Azure:
az login
Hämta AKS-autentiseringsuppgifter
# Get cluster credentials
az aks get-credentials `
--resource-group rg-aks-cluster `
--name aks-prod-01 `
--admin
# Verify connection
kubectl get nodes
Förväntade utdata visar noder i Ready status:
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
Distribuera testarbetsbelastning
Distribuera ett exempelprogram för att verifiera klustret.
Skapa namnområde
kubectl create namespace test-app
Distribuera exempelprogram
# 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
Verifiera utplaceringen
Utför omfattande validering av ditt AKS-kluster.
Kontrollera klusterhälsa
# 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
Verifiera krypteringen
# 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"
Kontrollera nätverksanslutningen
# 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
Kontrollera övervakning och loggar
# 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"
Verifiera efterlevnaden för Azure Policy
# 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
Konfigurera kubectl-åtkomst för andra användare
Ge andra användare åtkomst till AKS-klustret.
Använda 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"
Använda RBAC i Kubernetes
# Create role binding for namespace access
kubectl create rolebinding user-viewer `
--clusterrole=view `
--user=user@contoso.com `
--namespace=test-app
Felsökning av vanliga problem
Det går inte att skapa kluster
Symptom: AKS-klusterdistributionen misslyckas
Lösningar:
- Kontrollera att funktionsflaggor är registrerade:
EncryptionAtHost,EnableAPIServerVnetIntegrationPreview - Kontrollera att undernätsstorlekarna är tillräckliga för antal noder och podddensitet
- Kontrollera att diskkrypteringsuppsättningen och den hanterade identiteten har rätt behörigheter
- Granska aktivitetsloggen för specifika felmeddelanden
Noder är inte klara
Symptom: Noder visar NotReady status
Lösningar:
- Kontrollera att nodundernätet har utgående anslutning till nödvändiga slutpunkter
- Kontrollera att communityns slutpunkter innehåller alla nödvändiga AKS-FQDN:er
- Kontrollera att NSG-regler tillåter utgående trafik på port 443
- Granska nodloggar:
kubectl describe node <node-name>
Poddar kan inte hämta bilder
Symptom: Poddar fastnade i ImagePullBackOff
Lösningar:
- Kontrollera att communityslutpunkten innehåller
mcr.microsoft.comoch*.data.mcr.microsoft.com - Kontrollera att NSG tillåter utgående HTTPS (port 443)
- Se till att DNS-upplösningen fungerar:
nslookup mcr.microsoft.comfrån pod - Granska hemligheter för avbildningshämtning om du använder privata register
Det går inte att ansluta till API-servern
Symptom: kubectl kommandon misslyckas på grund av att tidsgränsen för anslutningen överskrids
Lösningar:
- Kontrollera att du är på administratörs-VM:en eller en resurs med anslutning till enklaven
- Kontrollera att den privata DNS-zonen är länkad till det virtuella nätverket
- Verifiera konfiguration av API-serverundernät
- Testa DNS-upplösning:
nslookup <cluster-fqdn>
Övervakningen fungerar inte
Symptom: Inga loggar eller mått i Azure Monitor
Lösningar:
- Kontrollera att Container Insights-tillägget är aktiverat
- Kontrollera att communityns slutpunkter omfattar övervakning av FQDN
- Kontrollera att Log Analytics-arbetsytan är tillgänglig från klustret
- Kontrollera att
omsagentpoddar körs:kubectl get pods -n kube-system | grep omsagent
Rensa resurser
Undvik löpande avgifter genom att ta bort resurser när de inte längre behövs.
Ta bort AKS-kluster
# 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
Varning
Om du tar bort AKS-klustret permanent tas alla arbetsbelastningar och data bort. Se till att du har säkerhetskopior om det behövs.
Nästa steg
Du har slutfört självstudieserien om hur du distribuerar Azure Virtual Desktop och AKS-arbetsbelastningar i Azure Enclave!
Rekommenderade nästa steg
- Konfigurera automatisk skalning för AKS
- Distribuera program med Helm
- Implementera GitOps med Flux
- Konfigurera ingresskontrollant
- Aktivera arbetsbelastningsidentitet