Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Ce didacticiel vous guide tout au long du déploiement d’un cluster de Azure Kubernetes Service (AKS) privé dans Azure Enclave. Vous créez un cluster AKS entièrement privé avec un chiffrement géré par le client, une intégration réseau et des modèles d’accès sécurisés.
Dans ce tutoriel, vous allez apprendre à :
- Activer les fonctionnalités de Azure requises pour AKS privé
- Valider les ressources requises pour AKS
- Déployer un cluster AKS privé
- Configurer le chiffrement de clé gérée par le client
- Créer des points de terminaison de communauté pour la connectivité AKS
- Associer plusieurs groupes de ressources à la charge de travail AKS
- Accéder au cluster AKS et valider
Prerequisites
- Fin du tutoriel 2-3 : Déployer Azure Virtual Desktop charge de travail
- Sous-réseaux d'un enclave AKS pour les nœuds, le serveur d'API et les points de terminaison privés
- Dépendances courantes (Key Vault, identité managée, jeu de chiffrement de disque) à partir du tutoriel 2-2 : Créer un environnement d’enclave Azure
- Zones DNS privées déployées pour AKS
- Rôle Contributeur sur le groupe de ressources de la charge de travail AKS
- Rôle Contributeur Azure Kubernetes Service sur l'abonnement
- Azure CLI ou Azure PowerShell installé pour les opérations avancées
Important
Ce tutoriel s’aligne sur le comportement du modèle de cluster AKS privé et nécessite les ressources créées par le déploiement AVE AKS Enclave dans le tutoriel 2-2.
Avant de commencer
Comprendre AKS dans Azure Enclave
AKS dans Azure Enclave fournit :
- Cluster entièrement privé : serveur d’API accessible uniquement via un point de terminaison privé
- Isolation du réseau : tout le trafic reste dans les limites des enclaves
- Chiffrement géré par le client : plan de contrôle et plan de données chiffrés avec CMK
- Limites de charge de travail sécurisées : ressources Kubernetes contenues dans les stratégies de sécurité d’enclave
Conventions de nommage des ressources
Ce tutoriel utilise des exemples de noms. Utilisez la convention d’affectation de noms de votre organisation :
- Enclave :
aks-enclave - Charge de travail :
aks-workload - Groupe de ressources :
rg-aks-cluster - Cluster AKS :
aks-prod-01
Activer les fonctionnalités de Azure requises
AKS dans Azure Enclave nécessite que des fonctionnalités de Azure spécifiques soient activées sur votre abonnement.
Activer la fonctionnalité EncryptionAtHost
Cette fonctionnalité active le chiffrement au niveau de l’hôte de machine virtuelle pour les nœuds AKS.
# 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
Activer l’intégration du réseau virtuel du serveur d’API (préversion)
Cette fonctionnalité permet au serveur d’API AKS d’être intégré directement à votre réseau virtuel.
# 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
Attendez que les deux fonctions affichent "state": "Registered" avant de continuer. L’inscription prend généralement 10 à 15 minutes.
Préparer la clé SSH (facultatif)
Note
L’authentification par clé SSH pour l’accès au nœud AKS est déconseillée. Cette étape est actuellement requise, mais sera facultative dans les versions ultérieures du modèle. Si vous n’avez pas besoin d’un accès direct au nœud, vous pouvez ignorer cette section lorsque le modèle est mis à jour.
Générer une paire de clés SSH
# 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"
Stocker une clé SSH dans 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
Déployer un cluster AKS privé
Déployez maintenant le cluster AKS avec un chiffrement et une surveillance complets.
Utiliser le modèle de catalogue de services
- Dans votre charge de travail AKS, sélectionnez + Ajouter un service Azure.
- Recherchez et sélectionnez Cluster AKS privé.
- Configurez le déploiement :
Onglet Informations de base
-
Nom du cluster AKS :
aks-prod-01 -
Version de Kubernetes : sélectionnez la dernière version stable (par exemple,
1.32)
Monitoring
- Nom de l’espace de travail Log Analytics : sélectionnez votre enclave ou votre destination de journalisation de communauté.
Encryption
- Nom du jeu de chiffrement de disque : entrez le nom que vous avez utilisé dans le tutoriel 2-2.
- Nom de clé de chiffrement : entrez le nom de la clé de votre coffre de clés.
- Key Vault : sélectionnez votre key vault avec ce nom de clé.
Access
- Nom de l’identité AKS : entrez le nom que vous avez utilisé dans le tutoriel 2-2.
- Nom du groupe de ressources d’identité AKS : Mettez à jour le nom du groupe de ressources pour qu’il corresponde à l’emplacement de votre identité.
Networking
- Nom du sous-réseau AKS : entrez le nom de votre sous-réseau AKS
- Nom du sous-réseau du pool d’agents : entrez le nom du sous-réseau du pool d’agents
-
CIDR pour le trafic de service :
172.16.0.0/16 -
Adresse IP du service DNS Kubernetes :
172.16.0.10
Configuration du sous-réseau :
-
Sous-réseau de nœuds: Sélectionnez
aksSubnetdans votre enclave -
Sous-réseau du serveur d’API : sélectionner
agentSubnetà partir de votre enclave -
Sous-réseau de point de terminaison privé : sélectionner
AzureVirtualEnclaveSubnetà partir de votre enclave
Pool de nœuds
Sélectionnez Next cette option pour ignorer cet onglet pour ce didacticiel.
Étiquettes
-
Environnement :
Production -
Charge de travail :
AKS -
ManagedBy :
Azure Enclave
- Sélectionnez Vérifier + Créer.
- Passez en revue attentivement tous les paramètres.
- Cliquez sur Créer.
Note
Le cluster AKS crée automatiquement un groupe de ressources managé.
Créer des points de terminaison de communauté pour la connectivité AKS
AKS nécessite une connectivité sortante à plusieurs services Azure. Créez des points de terminaison pour la communauté répondant à ces exigences.
Note
Si vous avez créé des points de terminaison de communauté AKS dans le tutoriel 2-1, vérifiez qu’ils incluent tous les noms de domaine complets requis.
Configurer le point de terminaison communautaire
Allez dans votre communauté (par exemple,
cmt-fabrikam).Sélectionnez points de terminaison communautaires>+ Créer ou modifiez un élément existant
ce-aks-services.Vérifiez que ces règles existent :
Règle 1 : Registre de conteneurs Microsoft
-
Nom :
mcr -
Destination :
mcr.microsoft.com,*.data.mcr.microsoft.com -
Protocol :
HTTPS -
Port :
443
Règle 2 : Gestion AKS
-
Nom :
aks-management -
Destination :
*.hcp.<region>.azmk8s.io,<region>.dp.kubernetesconfiguration.azure.com -
Protocol :
HTTPS -
Port :
443
Règle 3 : gestion des Azure
-
Nom :
azure-management -
Destination :
management.azure.com,login.microsoftonline.com -
Protocol :
HTTPS -
Port :
443
Règle 4 : Référentiel de packages
-
Nom :
packages -
Destination :
packages.microsoft.com,acs-mirror.azureedge.net,azure.archive.ubuntu.com -
Protocol :
HTTPS -
Port :
443
Règle 5 : Azure Monitor (si activé)
-
Nom :
monitoring -
Destination :
*.ods.opinsights.azure.com,*.oms.opinsights.azure.com,dc.services.visualstudio.com -
Protocol :
HTTPS -
Port :
443
-
Nom :
Sélectionnez Vérifier + créer , puis Créer ou Enregistrer.
Configurer les règles de sortie du NSG
Ajoutez des règles de sécurité sortantes à votre groupe de sécurité réseau pour autoriser le trafic AKS.
- Accédez aux groupes >
nsg-aks-nodes. - Sélectionnez Règles de sécurité sortantes>+ Ajouter.
- Ajouter une règle pour le trafic sortant HTTPS :
-
Source :
VirtualNetwork -
Destination :
Internet -
Port de destination :
443 -
Protocol :
TCP -
Action :
Allow -
Priorité :
1000 -
Nom :
Allow_HTTPS_Outbound
-
Source :
Associer les groupes de ressources AKS à la charge de travail
AKS crée un groupe de ressources managé (MRG) pour l’infrastructure de cluster. Associez le groupe de ressources utilisateur et MRG à votre charge de travail.
En passant par le portail Azure
- Accédez à votre service enclave Azure dans le portail Azure.
- Sélectionnez votre communauté (par exemple,
cmt-fabrikam). - Sélectionnez Enclaves et ouvrez votre enclave AKS (par exemple).
ve-aks - Sélectionnez Charges de travail et ouvrez votre charge de travail AKS (par exemple).
wl-aks - Dans la vue d’ensemble de la charge de travail, sélectionnez Propriétés ou Groupes de ressources liés.
- Sélectionnez + Ajouter un groupe de ressources.
- Ajoutez le groupe de ressources utilisateur :
- Sélectionner un abonnement : Votre abonnement
- Sélectionnez groupe de ressources :
rg-aks-cluster - Sélectionnez Ajouter
- Sélectionnez + Ajouter un groupe de ressources à nouveau.
- Ajoutez le groupe de ressources managé AKS :
- Le nom du groupe de ressources managé suit le modèle suivant :
MC_rg-aks-cluster_aks-prod-01_<region> - Sélectionner un abonnement : Votre abonnement
- Sélectionner un groupe de ressources : groupe de ressources managé AKS
- Sélectionnez Ajouter
- Le nom du groupe de ressources managé suit le modèle suivant :
- Vérifiez que les deux groupes de ressources apparaissent dans la liste des groupes de ressources liés de la charge de travail.
Tip
Pour rechercher le nom du groupe de ressources managé AKS, accédez à votre cluster AKS dans le portail et vérifiez la propriété du groupe de ressources Node dans la page Vue d’ensemble.
Accéder au cluster AKS
Accédez au cluster AKS privé via une machine virtuelle d’administration ou Azure Bastion dans l’enclave.
Se connecter à une machine virtuelle d’administration
- Connectez-vous à votre machine virtuelle administrateur via Azure Bastion ou RDP.
- Vérifiez que la machine virtuelle d’administration a Azure CLI installée.
- Connectez-vous à Azure :
az login
Obtenir les informations d’identification AKS
# Get cluster credentials
az aks get-credentials `
--resource-group rg-aks-cluster `
--name aks-prod-01 `
--admin
# Verify connection
kubectl get nodes
La sortie attendue affiche les nœuds dans l’état Ready :
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
Déployer une charge de travail de test
Déployez un exemple d’application pour valider le cluster.
Créer un espace de noms
kubectl create namespace test-app
Déployer un exemple d’application
# 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
Valider le déploiement
Effectuez une validation complète de votre cluster AKS.
Vérifier la santé des clusters
# 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
Vérifier le chiffrement
# 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"
Valider la connectivité réseau
# 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
Vérifier la surveillance et les journaux
# 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"
Vérifier la conformité d’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
Configurer l’accès kubectl pour d’autres utilisateurs
Accordez à d’autres utilisateurs l’accès au cluster AKS.
Utilisation de 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"
Utilisation du RBAC Kubernetes
# Create role binding for namespace access
kubectl create rolebinding user-viewer `
--clusterrole=view `
--user=user@contoso.com `
--namespace=test-app
Dépannage des problèmes courants
Échec de la création du cluster
Symptôme : Échec du déploiement du cluster AKS
Solutions :
- Vérifiez que les indicateurs de fonctionnalité sont inscrits :
EncryptionAtHost,EnableAPIServerVnetIntegrationPreview - Vérifier que les tailles de sous-réseau sont adéquates pour le nombre de nœuds et la densité des pods
- Vérifier que le jeu de chiffrement de disque et l’identité managée disposent des autorisations appropriées
- Examiner le journal d’activité pour des messages d’erreur spécifiques
Nœuds non prêts
Symptôme : les nœuds ont l’état NotReady
Solutions :
- Vérifier que le sous-réseau de nœud dispose d’une connectivité sortante aux points de terminaison requis
- Vérifier que les points de terminaison de la communauté incluent tous les noms de domaine complets AKS requis
- Vérifiez que les règles des groupes de sécurité réseau autorisent le trafic sortant sur le port 443.
- Examinez les journaux des nœuds :
kubectl describe node <node-name>
Les pods ne peuvent pas extraire d’images
Symptôme : les pods restent bloqués dans l'état ImagePullBackOff.
Solutions :
- Vérifier que le point de terminaison communautaire inclut
mcr.microsoft.comet*.data.mcr.microsoft.com - Vérifier que le groupe de sécurité réseau autorise le protocole HTTPS sortant (port 443)
- Vérifiez que la résolution DNS fonctionne :
nslookup mcr.microsoft.comdepuis le pod - Vérifier les secrets pour le téléchargement d’images si vous utilisez des registres privés
Impossible de se connecter au serveur d’API
Symptôme : kubectl les commandes échouent avec le délai d’expiration de la connexion
Solutions :
- Vérifiez que vous êtes sur une machine virtuelle ou une ressource d’administration avec une connectivité d’enclave
- Vérifier que la zone DNS privée est liée au réseau virtuel
- Vérifier la configuration du sous-réseau du serveur d’API
- Testez la résolution DNS :
nslookup <cluster-fqdn>
Surveillance qui ne fonctionne pas
Symptôme : aucun journal ni aucune métrique dans Azure Monitor
Solutions :
- Vérifier que le module complémentaire Container Insights est activé
- Vérifiez que les points de terminaison de la communauté incluent les FQDN de supervision.
- Vérifier que l’espace de travail Log Analytics est accessible depuis le cluster
- Vérifiez que les
omsagentpods sont en cours d’exécution :kubectl get pods -n kube-system | grep omsagent
Nettoyer les ressources
Pour éviter les frais en cours, supprimez les ressources quand cela n’est plus nécessaire.
Supprimer un cluster AKS
# 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
La suppression définitive du cluster AKS supprime toutes les charges de travail et toutes les données. Vérifiez que vous disposez de sauvegardes si nécessaire.
Étapes suivantes
Vous avez terminé la série de tutoriels pour déployer des charges de travail Azure Virtual Desktop et AKS dans Azure Enclave !
Étapes suivantes recommandées
- Configurer la mise à l’échelle automatique pour AKS
- Déployer des applications avec Helm
- Implémenter GitOps avec Flux
- Configurer le contrôleur d’entrée
- Activer l’identité de charge de travail