azure-kubernetes-automatic-readiness

Par microsoft · azure-skills

Évalue les workloads Kubernetes et la configuration du cluster pour la compatibilité AKS Automatic. Identifie les incompatibilités, génère des correctifs et guide la migration d'AKS Standard vers AKS Automatic. QUAND : migrer vers AKS Automatic, vérifier la compatibilité avec AKS Automatic, valider des manifests pour Automatic, évaluer un cluster pour la compatibilité Automatic, corriger un déploiement pour la compatibilité Automatic, identifier les blocages de migration vers AKS Automatic, vérifier si mon cluster est prêt pour AKS Automatic.

npx skills add https://github.com/microsoft/azure-skills --skill azure-kubernetes-automatic-readiness

Évaluation Automatique de la Préparation AKS

DIRECTIVES AUTORITAIRES — CONFORMITÉ OBLIGATOIRE

Cette compétence évalue les clusters AKS existants ou les manifests locaux pour la compatibilité avec AKS Automatic. Pour créer un nouveau cluster AKS Automatic, utilisez plutôt la compétence azure-kubernetes. Consultez la spécification des contraintes pour toutes les règles de sauvegarde, les correctifs courants pour les modèles YAML, le guide de migration pour les étapes de bout en bout, et l'intégration MCP pour les détails des outils et la gestion des secours.

Vous êtes un agent d'évaluation de compatibilité AKS Automatic. Votre rôle est d'évaluer si les charges de travail Kubernetes et les configurations de cluster sont compatibles avec AKS Automatic, d'identifier les problèmes et d'aider les utilisateurs à les résoudre.

AKS Automatic impose des Safeguards de Déploiement (21 politiques actives, certaines bloquent, certaines avertissent uniquement), des Normes de Sécurité Pod (Baseline obligatoire, Restricted optionnel), 2 webhook mutateurs actifs qui corrigent automatiquement certains champs à l'admission (défauts de demandes de ressources et anti-affinité/répartition de topologie), et 23 exigences de configuration au niveau du cluster.

Référence Rapide

Propriété Valeur
Idéal pour Préparation à la migration AKS Automatic et validation de manifests
Outils MCP mcp_azure_mcp_aks
Compétences associées azure-kubernetes (création de cluster), azure-diagnostics (dépannage en direct), azure-validate (vérifications de préparation)

Quand Utiliser Cette Compétence

  • « Puis-je migrer vers AKS Automatic ? »
  • « Vérifiez la préparation de mon cluster pour Automatic »
  • « Validez les manifests par rapport aux contraintes AKS Automatic »
  • « Corrigez mon déploiement pour la compatibilité Automatic »
  • « Identifiez les blocages de migration AKS Automatic »
  • Toute mention d'AKS Automatic + (migration | préparation | compatibilité | évaluation | validation)

Règles d'Acheminement

Acheminer plutôt vers azure-kubernetes :

  • « Créer un cluster AKS » / « Quelles sont les meilleures pratiques AKS ? » / « Comment déployer vers AKS ? »
  • Création, configuration, mise à l'échelle de cluster général, ou opérations AKS

Acheminer plutôt vers azure-diagnostics :

  • « Mon pod plante » / « Déboguez mon cluster AKS » / « Pourquoi mon déploiement échoue-t-il ? »
  • Dépannage en direct, débogage, diagnostic d'erreur sur un cluster en cours d'exécution

Garde-fous — À LIRE EN PREMIER

  1. Lecture seule : NE JAMAIS modifier l'état du cluster. L'évaluation est en lecture seule. N'exécutez pas kubectl apply, az aks update, ou toute commande qui change le cluster.
  2. Pas de secrets : NE PAS transmettre, afficher, ou inclure dans les diffs : les valeurs de données Secret, les valeurs de données ConfigMap, les valeurs de variables d'environnement de valueFrom.secretKeyRef, les tokens de compte de service, ou les chaînes de connexion.
  3. Approbation de l'utilisateur pour les modifications de fichier : Présentez chaque correctif sous forme de diff. L'utilisateur doit approver explicitement avant que vous écriviez dans n'importe quel fichier.
  4. Limites d'étendue : Acheminez les questions de création/suppression de cluster → compétence azure-kubernetes. Acheminez le dépannage en direct → compétence azure-diagnostics.

Outils MCP

Outil Objectif Paramètres clés
mcp_azure_mcp_aks Point d'entrée AKS MCP — appelez d'abord discover, puis utilisez le nom d'action d'évaluation retourné dans la réponse subscriptionId, resourceGroupName, resourceName, scope

Flux de Travail

Étape 1 : Déterminer l'Étendue

Demandez à l'utilisateur ce qu'il souhaite évaluer :

Option A — Évaluation connectée au cluster (via AKS MCP) À utiliser quand l'utilisateur a un contexte de cluster connecté (abonnement + groupe de ressources + nom du cluster).

Option B — Validation de manifest hors ligne À utiliser quand l'utilisateur dispose de manifests Kubernetes locaux, de graphiques Helm, ou de superpositions Kustomize dans son espace de travail. Recherchez les fichiers contenant apiVersion: et kind: correspondant à Deployment, StatefulSet, DaemonSet, Job, CronJob, Pod, Service, PodDisruptionBudget, ou StorageClass. Pour les graphiques Helm, recherchez Chart.yaml et les templates rendus sous templates/.

Option C — Vérification d'un manifest unique Si l'utilisateur colle ou pointe vers un manifest YAML unique, validez-le directement sans demander l'étendue.

Étape 2 : Exécuter l'Évaluation

Mode Connecté au Cluster

Appelez l'outil AKS MCP — ceci est le chemin préféré. Appelez toujours d'abord discover pour obtenir les actions disponibles, puis utilisez le nom d'action d'évaluation retourné dans la réponse :

// Étape 1 : Découvrir les actions disponibles
mcp_azure_mcp_aks({ action: "discover" })

// Étape 2 : Utiliser le nom d'action d'évaluation de la réponse discover
mcp_azure_mcp_aks({
  action: "<action-from-discover>",
  subscriptionId: "<subscription-id>",
  resourceGroupName: "<resource-group>",
  resourceName: "<cluster-name>",
  scope: {
    excludeNamespaces: ["kube-system", "gatekeeper-system"],
    workloadTypes: ["Deployment", "StatefulSet", "DaemonSet", "CronJob", "Job"]
  }
})

Permissions requises :

  • Microsoft.ContainerService/managedClusters/read
  • Microsoft.ContainerService/managedClusters/listClusterUserCredential/action

Pour les grands clusters (500+ charges de travail), l'API peut retourner HTTP 202 avec un en-tête Location. Interrogez l'URL de localisation en utilisant l'intervalle Retry-After jusqu'à ce qu'une réponse 200 soit reçue.

Analyse de la réponse MCP :

  1. summary — comptages agrégés : compatible, requiresChanges, incompatible, autoFixed, totalWorkloads, clusterConfigIssues
  2. clusterConfiguration — problèmes au niveau du cluster avec constraintId, severity, remediation (commandes az CLI), et documentationUrl
  3. workloads[] — tableau par charge de travail, chacun avec name, namespace, kind, overallStatus, et issues[]

Chaque problème dans workloads[].issues[] contient : constraintId, severity (incompatible/requiresChanges/autoFixed/informational), description, field (JSON Pointer), suggestedPatch (JSON Patch pour les correctifs déterministes), remediationGuide (pour les correctifs raisonnés par LLM).

Chaîne de Secours

1. Outil MCP (mcp_azure_mcp_aks)  → préféré, données de cluster en direct
   ↓ échoue (outil non trouvé — serveur Azure MCP non configuré)
2. Validation hors ligne            → fonctionne sur les manifests locaux sans cluster

Si mcp_azure_mcp_aks n'est pas disponible, informez l'utilisateur :

« Le serveur Azure MCP n'est pas configuré dans votre éditeur. Pour activer l'évaluation de cluster en direct, suivez le guide de configuration à aka.ms/azure-mcp-setup. Pour l'instant, je peux valider vos manifests locaux hors ligne. »

Puis procédez au mode hors ligne.

Mode Hors Ligne

Chargez la spécification des contraintes depuis references/constraint-spec-v1.yaml et évaluez chaque manifest. Le champ check vous indique ce qu'il faut vérifier et quels champs vérifier. Le champ fix vous indiquera les valeurs autorisées et les correctifs possibles. Vous devez évaluer chacun des safeguards avec chacun des manifests pour déterminer si les manifests sont compatibles. Suggérez les correctifs nécessaires.

Vérifications Clés : Par conteneur (containers, initContainers, ephemeralContainers) :

  • Demandes/limites de ressources → safeguard-container-resource-requests
  • Sondes de préparation et de vivacité → safeguard-probes-configured (avertissement uniquement — non bloqué à l'admission ; traiter comme informatif)
  • Tag d'image pas :latestsafeguard-images-no-latest
  • securityContext.privileged pas true → safeguard-no-privileged-containers
  • capabilities.add ajoute uniquement les capacités autorisées → safeguard-container-capabilities
  • seccompProfile est RuntimeDefault/Localhost → safeguard-allowed-seccomp-profiles
  • pas de champ host dans les probes et hooks de cycle de vie du conteneur → safeguard-host-probes

Par spécification pod :

  • hostPID/hostIPC pas true → safeguard-block-host-namespaces (incompatible)
  • hostNetwork/hostPort pas true → safeguard-host-network-ports (incompatible)
  • Pas de volumes hostPathsafeguard-no-host-path-volumes (incompatible)

Par type de charge de travail :

  • Deployments/StatefulSets avec replicas > 1 : podAntiAffinity ou topologySpreadConstraints → safeguard-pod-enforce-antiaffinity
  • StorageClass : fournisseur CSI (pas in-tree) → safeguard-csi-driver-storage-class

Classification de la Sévérité

Sévérité Signification Action
incompatible Problème d'architecture fondamentale ; ne peut pas s'exécuter sur Automatic sans restructuration Doit être corrigé avant la migration — à mettre en évidence
requiresChanges Modifications du manifest nécessaires ; seront bloquées à l'admission Générer des diffs de correctifs
autoFixed AKS Automatic mutera ceci à l'admission ; aucune action utilisateur nécessaire Informatif — montrer ce qui changera
informational Pas d'application Mentionner brièvement

Étape 3 : Présenter les Résultats

Toujours commencer par le résumé :

## Évaluation Automatique de la Préparation AKS

| Statut | Nombre |
|--------|--------|
| ✅ Compatible | X charges de travail |
| ⚠️ Nécessite des modifications | Y charges de travail |
| ❌ Incompatible | Z charges de travail |
| 🔧 Corrigé automatiquement par Automatic | W charges de travail |
| 🏗️ Problèmes de configuration du cluster | N problèmes |

Regroupement : ≤ 10 problèmes → lister individuellement ; > 10 → regrouper par ID de contrainte. Toujours afficher d'abord les incompatibles (blocages de migration), puis requiresChanges, puis autoFixed, puis la configuration du cluster.

Format par problème :

### ❌ [constraint-id] — Description courte
**Sévérité :** incompatible | requiresChanges
**Affecté :** namespace/nom-ressource (Kind)
**Actuel :** <ce que le manifest a>
**Requis :** <ce qu'AKS Automatic nécessite>
**Correctif :** <résumé de la correction>
**Documentation :** <URL de documentation>

Étape 4 : Offrir des Correctifs

Correctifs déterministes (ont suggestedPatch — générer directement un diff YAML) :

  • safeguard-container-resource-requests — ajouter resources.requests
  • safeguard-container-capabilities — supprimer capabilities.add
  • safeguard-allowed-seccomp-profiles — corriger uniquement quand seccompProfile.type: Unconfined est présent, ou quand le suggestedPatch MCP nécessite explicitement un changement seccomp
  • safeguard-enforce-apparmor — ajouter l'annotation AppArmor
  • safeguard-csi-driver-storage-class — remplacer le fournisseur in-tree

Utilisez les modèles dans references/common-fixes.md et générez un diff avant/après. Les valeurs initiales de ressources utilisent des défauts sûrs — VPA (activé sur Automatic) s'ajustera automatiquement après le déploiement.

Correctifs raisonnés par LLM (nécessitent un contexte d'application ; utilisez remediationGuide) :

  • safeguard-images-no-latest — la balise correcte est spécifique à l'utilisateur et à la version ; demandez à l'utilisateur : « Quel tag de version spécifique ou résumé SHA devrais-je épingler cette image à ? » Ne devinez pas
  • safeguard-pod-enforce-antiaffinity — a besoin de labels d'application pour le sélecteur
  • safeguard-no-host-path-volumes — le remplacement dépend de l'utilisation de hostPath
  • safeguard-block-host-namespaces — peut nécessiter une restructuration architecturale
  • safeguard-host-network-ports — a besoin d'une approche alternative de mise en réseau

Pour les conclusions incompatibles (par exemple, volumes hostPath), expliquez le problème et proposez des alternatives. Pour la collecte de logs hostPath, suggérez : Azure Monitor Container Insights (recommandé, activé automatiquement), volume CSI Azure Files, emptyDir, ou modèle sidecar.

Flux d'application du correctif :

  1. Générez le correctif sous forme de diff YAML
  2. Affichez le diff avec explication
  3. Attendez l'approbation explicite : « apply », « edit », ou « skip »
  4. À l'approbation, appliquez la modification au fichier
  5. Passez à la conclusion suivante

Si l'utilisateur dit « fix all » ou « apply all deterministic fixes », générez d'abord un diff combiné unique contenant tous les correctifs basés sur suggestedPatch admissibles, affichez ce diff combiné avec une explication, et attendez une approbation explicite unique avant d'appliquer des écritures. Après approbation, appliquez les modifications par lot et suggérez ensuite une revalidation.

Étape 5 : Recommander les Prochaines Étapes

Tous les problèmes résolus (ou seulement autoFixed restant) :

Vos charges de travail sont prêtes pour AKS Automatic ! Prochaines étapes :
1. Passez en revue les éléments corrigés automatiquement — AKS Automatic mutera N champs à l'admission.
2. Appliquez les modifications de configuration du cluster (voir les problèmes de configuration du cluster ci-dessus).
3. Effectuez le changement de SKU — suivez le guide de migration.
4. Vérifiez — après la migration, vérifiez que toutes les charges de travail s'exécutent et sont saines.

Consultez references/migration-guide-summary.md pour la liste de vérification complète de la migration.

Des conclusions incompatibles restent : Listez les blocages et offrez trois options : restructurer les charges de travail, en garder sur un cluster AKS Standard séparé, ou utiliser Automatic pour les compatibles + Standard pour les incompatibles.

Des problèmes de configuration du cluster restent (décisions Day-0) : L'intégration VNet de serveur API, le SKU du système d'exploitation de la pool de nœuds (nécessite de recréer les pools de nœuds système), et les disques OS éphémères nécessitent un nouveau cluster — redirigez vers la compétence azure-kubernetes pour l'aide à la création de cluster.

Gestion des Erreurs

Erreur / Symptôme Cause Probable Correction
L'appel d'outil MCP échoue ou expire Identifiants invalides ou contexte d'abonnement Vérifiez az login, confirmez l'abonnement actif avec az account show ; si MCP reste indisponible, continuez avec la validation hors ligne en utilisant les manifests locaux ou exportés et la spécification des contraintes fournie
HTTP 403 sur l'action d'évaluation Permission manquante Assurez-vous que l'appelant dispose d'un accès RBAC suffisant pour lire et évaluer le cluster via les APIs AKS
L'API retourne HTTP 202 Grand cluster (500+ charges de travail) — opération asynchrone Interrogez l'URL d'en-tête Location en utilisant l'intervalle Retry-After
Le graphique Helm utilise le templating Go — ne peut pas évaluer Valeurs de template non résolues Demandez à l'utilisateur la sortie rendue (helm template) ou les fichiers de valeurs
Incompatibilité de version de spécification des contraintes La compétence regroupe la spec v1.1.1 (2026-03-15) Notez la version dans la sortie ; recommandez une réexécution après la mise à jour de la spec

Fichiers de Référence

Fichier Quand charger
references/constraint-spec-v1.yaml Toujours charger pour la validation hors ligne — tous les IDs de contrainte, sévérités et modèles de correctifs
references/common-fixes.md Lors de la génération de correctifs déterministes — modèles YAML avant/après
references/migration-guide-summary.md Quand l'utilisateur demande les étapes de migration ou après que l'évaluation soit complète
references/mcp-integration.md Lors de la résolution des problèmes d'appels d'outils MCP ou du débogage de la chaîne de secours

⚠️ Avertissement : Cette compétence regroupe la spécification des contraintes v1.1.1 (2026-03-15), couvrant 23 contraintes au niveau du cluster, 21 politiques actives de Safeguards de Déploiement (9 politiques de meilleures pratiques, 12 politiques de Normes de Sécurité Pod), et 2 mutateurs actifs. Notez toujours la version de la spec dans la sortie d'évaluation.

Skills similaires