Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze zelfstudie wordt u begeleid bij het implementeren van een privé-Azure Kubernetes Service (AKS)-cluster in Azure Enclave. U maakt een volledig privé AKS-cluster met door de klant beheerde versleuteling, netwerkintegratie en veilige toegangspatronen.
In deze handleiding leer je hoe je:
- Vereiste Azure-functies inschakelen voor privé-AKS
- Vereiste resources voor AKS valideren
- Privé-AKS-cluster implementeren
- Door de klant beheerde sleutelversleuteling configureren
- Community-eindpunten maken voor AKS-connectiviteit
- Meerdere resourcegroepen koppelen aan een AKS-workload
- Toegang tot het AKS-cluster en valideren
Prerequisites
- Voltooiing van zelfstudie 2-3: Azure Virtual Desktop workload implementeren
- AKS-enclave met subnetten voor knooppunten, API-servers en privé-eindpunten
- Algemene afhankelijkheden (Key Vault, beheerde identiteit, schijfversleutelingsset) uit zelfstudie 2-2: Azure Enclave-omgeving maken
- Privé-DNS zones voor AKS geïmplementeerd
- De rol Inzender voor de resourcegroep van de AKS-workload
- Azure Kubernetes Service-bijdrager voor het abonnement
- Azure CLI of Azure PowerShell geïnstalleerd voor geavanceerde bewerkingen
Important
Deze zelfstudie is afgestemd op het gedrag van de privé-AKS-clustersjabloon en vereist de resources die zijn gemaakt door de AVE AKS Enclave-implementatie in zelfstudie 2-2.
Voordat u begint
Inzicht in AKS in Azure Enclave
AKS in Azure Enclave biedt:
- Volledig privécluster: API-server alleen toegankelijk via een privé-eindpunt
- Netwerkisolatie: al het verkeer blijft binnen enclavegrenzen
- Door de klant beheerde versleuteling: zowel het besturingsvlak als het gegevensvlak dat is versleuteld met CMK
- Grenzen van werkbelasting beveiligen: Kubernetes-resources die zijn opgenomen in het beveiligingsbeleid voor enclaves
Naamconventies voor bronnen
In deze zelfstudie worden voorbeeldnamen gebruikt. Gebruik de naamconventie van uw organisatie:
- Enclave:
aks-enclave - Werkbelasting:
aks-workload - Resourcegroep:
rg-aks-cluster - AKS-cluster:
aks-prod-01
Vereiste Azure-functies inschakelen
Voor AKS in Azure Enclave moeten specifieke Azure functies zijn ingeschakeld voor uw abonnement.
De functie EncryptionAtHost inschakelen
Met deze functie schakelt u versleuteling in op VM-hostniveau voor AKS-knooppunten.
# 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
Integratie van virtuele API Server-netwerken inschakelen (preview)
Met deze functie kan de AKS API-server rechtstreeks in uw virtuele netwerk worden geïntegreerd.
# 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
Wacht tot beide functies "state": "Registered" verschijnen voordat u doorgaat. Registratie duurt doorgaans 10-15 minuten.
SSH-sleutel voorbereiden (optioneel)
Note
SSH-sleutelverificatie voor toegang tot AKS-knooppunten wordt afgeschaft. Deze stap is momenteel vereist, maar is optioneel in toekomstige sjabloonversies. Als u geen directe knooppunttoegang nodig hebt, kunt u deze sectie overslaan wanneer de sjabloon wordt bijgewerkt.
SSH-sleutelpaar genereren
# 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"
SSH-sleutel opslaan 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
Privé-AKS-cluster implementeren
Implementeer nu het AKS-cluster met volledige versleuteling en bewaking.
Sjabloon voor servicecatalogus gebruiken
- Selecteer + Een Azure-service toevoegen in uw AKS-workload.
- Zoek en selecteer privé-AKS-cluster.
- De implementatie configureren:
Tabblad Basis
-
AKS-clusternaam:
aks-prod-01 -
Kubernetes-versie: Selecteer de meest recente stabiele versie (bijvoorbeeld
1.32)
Toezicht
- Naam van de Log Analytics-werkruimte: Selecteer de logbestemming van uw enclave of community.
Encryption
- Naam van schijfversleutelingsset: voer de naam in die u hebt gebruikt in zelfstudie 2-2.
- Naam van versleutelingssleutel: voer de naam van uw sleutelkluis in.
- Key Vault: selecteer uw key vault met die sleutelnaam.
Toegang
- AKS-identiteitsnaam: voer de naam in die u hebt gebruikt in zelfstudie 2-2.
- Naam van AKS-identiteitsresourcegroep: werk de naam van de resourcegroep bij zodat deze overeenkomt met de locatie van uw identiteit.
Networking
- AKS-subnetnaam: voer de naam van uw AKS-subnet in
- Subnetnaam van agentgroep: voer de naam van het subnet van de agentgroep in
-
CIDR voor serviceverkeer:
172.16.0.0/16 -
IP-adres van de Kubernetes DNS-service:
172.16.0.10
Subnetconfiguratie:
-
Knooppuntsubnet: selecteren
aksSubnetuit uw enclave -
API-serversubnet: Selecteer
agentSubnetuit uw enclave -
Subnet voor privé-eindpunt: selecteren
AzureVirtualEnclaveSubnetuit uw enclave
Knooppuntgroep
Selecteer Next deze optie om dit tabblad voor deze zelfstudie over te slaan.
Tags
-
Omgeving:
Production -
Werkbelasting:
AKS -
Beheerd door:
Azure Enclave
- Selecteer Beoordelen en Creëren.
- Controleer alle instellingen zorgvuldig.
- Klik op Creëren.
Note
Het AKS-cluster maakt automatisch een beheerde resourcegroep.
Community-eindpunten maken voor AKS-connectiviteit
AKS vereist uitgaande connectiviteit met verschillende Azure-services. Maak community-eindpunten aan voor deze vereisten.
Note
Als u AKS-community-eindpunten hebt gemaakt in Zelfstudie 2-1, controleert u of deze alle vereiste FQDN's bevatten.
Community-eindpunt configureren
Ga naar je community (bijvoorbeeld,
cmt-fabrikam).Selecteer Community-eindpunten>+ Aanmaken of bewerk een bestaand
ce-aks-services.Zorg ervoor dat deze regels bestaan:
Regel 1: Microsoft Container Registry
-
Naam:
mcr -
Bestemming:
mcr.microsoft.com,*.data.mcr.microsoft.com -
Protocol:
HTTPS -
Poort:
443
Regel 2: AKS-beheer
-
Naam:
aks-management -
Bestemming:
*.hcp.<region>.azmk8s.io,<region>.dp.kubernetesconfiguration.azure.com -
Protocol:
HTTPS -
Poort:
443
Regel 3: Azure beheer
-
Naam:
azure-management -
Bestemming:
management.azure.com,login.microsoftonline.com -
Protocol:
HTTPS -
Poort:
443
Regel 4: Pakketopslagplaats
-
Naam:
packages -
Bestemming:
packages.microsoft.com,acs-mirror.azureedge.net,azure.archive.ubuntu.com -
Protocol:
HTTPS -
Poort:
443
Regel 5: Azure Monitor (indien ingeschakeld)
-
Naam:
monitoring -
Bestemming:
*.ods.opinsights.azure.com,*.oms.opinsights.azure.com,dc.services.visualstudio.com -
Protocol:
HTTPS -
Poort:
443
-
Naam:
Selecteer Beoordelen en maken en vervolgens Maken of Opslaan.
Uitgaande NSG-regels configureren
Voeg uitgaande beveiligingsregels toe aan uw NSG om AKS-verkeer toe te staan.
- Navigeer naar netwerkbeveiligingsgroepen>
nsg-aks-nodes. - Selecteer Uitgaande beveiligingsregels>+ Toevoegen.
- Regel toevoegen voor uitgaand HTTPS-verkeer:
-
Bron:
VirtualNetwork -
Bestemming:
Internet -
Doelpoort:
443 -
Protocol:
TCP -
Actie:
Allow -
Prioriteit:
1000 -
Naam:
Allow_HTTPS_Outbound
-
Bron:
AKS-resourcegroepen aan de workload koppelen
AKS maakt een beheerde resourcegroep (MRG) voor clusterinfrastructuur. Koppel zowel de gebruikersresourcegroep als MRG aan uw workload.
Azure-portal gebruiken
- Navigeer naar uw Azure Enclave-service in de Azure-portal.
- Selecteer uw community (bijvoorbeeld
cmt-fabrikam). - Selecteer Enclaves en open uw AKS-enclave (bijvoorbeeld
ve-aks). - Selecteer Workloads en open uw AKS-workload (bijvoorbeeld
wl-aks). - Selecteer eigenschappen of gekoppelde resourcegroepen in het workloadoverzicht.
- Selecteer + Resourcegroep toevoegen.
- Voeg de gebruikersresourcegroep toe:
- Abonnement selecteren: uw abonnement
-
Resourcegroep selecteren:
rg-aks-cluster - Selecteer Toevoegen
- Selecteer + Resourcegroep opnieuw toevoegen .
- Voeg de beheerde AKS-resourcegroep toe:
- De naam van de beheerde RG heeft het volgende patroon:
MC_rg-aks-cluster_aks-prod-01_<region> - Abonnement selecteren: uw abonnement
- Resourcegroep selecteren: de beheerde AKS-resourcegroep
- Selecteer Toevoegen
- De naam van de beheerde RG heeft het volgende patroon:
- Controleer of beide resourcegroepen worden weergegeven in de lijst met gekoppelde resourcegroepen van de werkbelasting.
Tip
Als u de naam van de beheerde AKS-resourcegroep wilt vinden, gaat u naar uw AKS-cluster in de portal en controleert u de eigenschap Node-resourcegroep op de overzichtspagina.
Toegang tot AKS-cluster
Open het privé-AKS-cluster via een beheer-VM of Azure Bastion binnen de enclave.
Verbinding maken met beheer-VM
- Maak verbinding met uw beheer-VM via Azure Bastion of RDP.
- Zorg ervoor dat Azure CLI is geïnstalleerd op de beheer-VM.
- Meld u aan bij Azure:
az login
AKS-referenties ophalen
# Get cluster credentials
az aks get-credentials `
--resource-group rg-aks-cluster `
--name aks-prod-01 `
--admin
# Verify connection
kubectl get nodes
Verwachte uitvoer toont knooppunten met de 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
Testworkload implementeren
Implementeer een voorbeeldtoepassing om het cluster te valideren.
Naamruimte maken
kubectl create namespace test-app
Voorbeeldtoepassing implementeren
# 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
De implementatie valideren
Voer uitgebreide validatie van uw AKS-cluster uit.
Clusterstatus controleren
# 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
Versleuteling verifiëren
# 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"
Valideer de netwerkverbinding
# 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
Bewaking en logboeken controleren
# 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"
Naleving van Azure Policy controleren
# 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
Kubectl-toegang configureren voor andere gebruikers
Andere gebruikers toegang verlenen tot het AKS-cluster.
Azure RBAC gebruiken
# 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"
Kubernetes RBAC gebruiken
# Create role binding for namespace access
kubectl create rolebinding user-viewer `
--clusterrole=view `
--user=user@contoso.com `
--namespace=test-app
Veelvoorkomende problemen oplossen
Het maken van een cluster mislukt
Symptoom: implementatie van AKS-cluster mislukt
Oplossingen:
- Controleer of functievlagmen zijn geregistreerd:
EncryptionAtHost,EnableAPIServerVnetIntegrationPreview - Controleer of subnetgrootten voldoende zijn voor het aantal knooppunten en poddichtheid
- Controleer of de schijfversleutelingsset en beheerde identiteit over de juiste machtigingen beschikken
- Activiteitenlogboek controleren op specifieke foutberichten
Knooppunten zijn niet gereed
Symptoom: Knooppunten geven de status weer NotReady
Oplossingen:
- Controleren of het subnet van het knooppunt uitgaande connectiviteit heeft met de vereiste eindpunten
- Controleren of community-eindpunten alle vereiste AKS-FQDN's bevatten
- Controleer of NSG-regels uitgaand verkeer toestaan op poort 443
- Knooppuntlogboeken controleren:
kubectl describe node <node-name>
Pods kunnen geen images pullen
Symptoom: Pods blijven hangen in ImagePullBackOff
Oplossingen:
- Controleren of het community-eindpunt bevat
mcr.microsoft.comen*.data.mcr.microsoft.com - Controleer of NSG uitgaande HTTPS toestaat (poort 443)
- Zorg ervoor dat de DNS-resolutie werkt:
nslookup mcr.microsoft.comvanuit de pod - Secrets voor het ophalen van images controleren als u privéregisters gebruikt
Kan geen verbinding maken met API-server
Symptoom: kubectl opdrachten mislukken met verbindingstime-out
Oplossingen:
- Controleer of u zich op de beheer-VM of een resource met enclave-connectiviteit bevindt
- Controleren of de privé-DNS-zone is gekoppeld aan het virtuele netwerk
- Subnetconfiguratie van API-server controleren
- DNS-omzetting testen:
nslookup <cluster-fqdn>
Bewaking werkt niet
Symptoom: geen logboeken of metrische gegevens in Azure Monitor
Oplossingen:
- Controleren of de invoegtoepassing voor Container Insights is ingeschakeld
- Controleren of community-eindpunten FQDN's bewaken
- Controleren of Log Analytics werkruimte toegankelijk is vanuit het cluster
- Controleer of
omsagentpods worden uitgevoerd:kubectl get pods -n kube-system | grep omsagent
De hulpbronnen opschonen
Als u doorlopende kosten wilt voorkomen, verwijdert u resources wanneer u deze niet meer nodig hebt.
AKS-cluster verwijderen
# 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
Als u het AKS-cluster verwijdert, worden alle workloads en gegevens definitief verwijderd. Zorg ervoor dat u indien nodig back-ups hebt.
Volgende stappen
U hebt de reeks zelfstudies voor het implementeren van Azure Virtual Desktop- en AKS-workloads in Azure Enclave voltooid.
Aanbevolen volgende stappen
- Automatische schaalaanpassing configureren voor AKS
- Toepassingen implementeren met Helm
- GitOps implementeren met Flux
- Controller voor inkomend verkeer configureren
- Workloadidentiteit inschakelen