azure-kubernetes-automatic-readiness

É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/skills --skill azure-kubernetes-automatic-readiness

Évaluation Automatique de Disponibilité AKS

ORIENTATION FAISANT AUTORITÉ — 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 la compétence azure-kubernetes à la place. Consultez la spécification des contraintes pour toutes les règles de protection, 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 travail consiste à déterminer si les charges de travail Kubernetes et les configurations de cluster sont compatibles avec AKS Automatic, identifier les problèmes et aider les utilisateurs à les corriger.

AKS Automatic applique les Garanties de déploiement (25 stratégies Deny actives), les Normes de sécurité des pods (Baseline obligatoire, Restricted optionnel), les 2 mutateurs webhook actifs qui corrigent automatiquement certains champs à l'admission (valeurs par défaut des demandes de ressources et anti-affinité/distribution de topologie), et les 26 exigences de configuration au niveau du cluster.

Référence rapide

Propriété Valeur
Idéal pour Validation de disponibilité pour migration AKS Automatic et des manifests
Outils MCP mcp_azure_mcp_aks
Compétences connexes azure-kubernetes (création de cluster), azure-diagnostics (dépannage en direct), azure-validate (vérifications de disponibilité)

Quand utiliser cette compétence

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

Règles de routage

Acheminer vers azure-kubernetes à la place :

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

Acheminer vers azure-diagnostics à la place :

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

Garde-fous — À LIRE D'ABORD

  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 modifie le cluster.
  2. Pas de secrets : NE PAS transmettre, afficher ou inclure dans les diffs : les valeurs des données Secret, les valeurs des données ConfigMap, les valeurs des variables d'environnement provenant de valueFrom.secretKeyRef, les jetons de compte de service ou les chaînes de connexion.
  3. Approbation utilisateur pour les modifications de fichiers : Présentez chaque correctif comme un diff. L'utilisateur doit approuver explicitement avant d'écrire dans tout fichier.
  4. Limites de portée : 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 la portée

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

Option A — Évaluation connectée au cluster (via AKS MCP) À utiliser quand l'utilisateur dispose d'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 d'overlays 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 de portée.

Étape 2 : Exécuter l'évaluation

Mode connecté au cluster

Appelez l'outil AKS MCP — c'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'à obtenir une réponse 200.

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 (Pointeur JSON), suggestedPatch (Patch JSON pour les correctifs déterministes), remediationGuide (pour les correctifs fondés sur le raisonnement du 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 aucun 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 du 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 en mode hors ligne.

Mode hors ligne

Chargez la spécification des contraintes depuis references/constraint-spec-v1.yaml et évaluez chaque manifest. Vérifications clés :

Par conteneur (containers, initContainers, ephemeralContainers) :

  • Demandes/limites de ressources → safeguard-container-resource-requests
  • Sondes d'activité et de disponibilité → safeguard-probes-configured (avertissement uniquement — non bloqué à l'admission ; traiter comme informatif)
  • Balise d'image pas :latestsafeguard-images-no-latest
  • securityContext.privileged pas vrai → safeguard-no-privileged-containers
  • allowPrivilegeEscalation pas vrai → safeguard-no-privilege-escalation
  • capabilities.add vide → safeguard-container-capabilities
  • seccompProfile est RuntimeDefault/Localhost → safeguard-allowed-seccomp-profiles

Par spec de pod :

  • hostPID/hostIPC pas vrai → safeguard-block-host-namespaces (incompatible)
  • hostNetwork/hostPort pas vrai → safeguard-host-network-ports (incompatible)
  • Pas de volumes hostPathsafeguard-no-host-path-volumes (incompatible)
  • Les types de volume sont standard → safeguard-allowed-volume-types

Par type de charge de travail :

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

Classification de la gravité

Gravité Signification Action
incompatible Problème architectural fondamental ; ne peut pas s'exécuter sur Automatic sans reconception Doit être corrigé avant la migration — signaler en évidence
requiresChanges Modifications de manifest nécessaires ; sera rejeté à l'admission Générer des diffs de correctif
autoFixed AKS Automatic va muter cela à l'admission ; aucune action utilisateur nécessaire Informatif — afficher ce qui changera
informational Aucune application Mentionner brièvement

Étape 3 : Présenter les résultats

Toujours commencer par le résumé :

## Évaluation de disponibilité AKS Automatic

| 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 |

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

Format par problème :

### ❌ [constraint-id] — Description brève
**Gravité :** incompatible | requiresChanges
**Affecté :** namespace/resource-name (Kind)
**Actuel :** <ce que le manifest a>
**Requis :** <ce qu'AKS Automatic requiert>
**Correctif :** <résumé de la correction>
**Docs :** <URL de documentation>

Étape 4 : Proposer des correctifs

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

  • safeguard-container-resource-requests — ajouter resources.requests
  • safeguard-no-privilege-escalation — définir allowPrivilegeEscalation: false
  • safeguard-container-capabilities — supprimer capabilities.add
  • safeguard-allowed-seccomp-profiles — ajouter seccompProfile: RuntimeDefault
  • safeguard-enforce-apparmor — ajouter annotation AppArmor
  • safeguard-csi-driver-storage-class — remplacer le provisionnement in-tree

Utiliser les modèles de references/common-fixes.md et générer un diff avant/après. Les valeurs de ressources de démarrage utilisent des valeurs par défaut sûres — VPA (activé sur Automatic) auto-accordera après le déploiement.

Correctifs fondés sur le raisonnement du LLM (requièrent le contexte de l'application ; utiliser remediationGuide) :

  • safeguard-images-no-latest — la balise correcte est spécifique à l'utilisateur et à la version ; demander à l'utilisateur : « À quelle balise de version spécifique ou condensé SHA dois-je épingler cette image ? » Ne pas deviner
  • 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 reconception architecturale
  • safeguard-host-network-ports — a besoin d'une approche réseau alternative

Pour les résultats incompatibles (par exemple, les volumes hostPath), expliquez le problème et proposez des alternatives. Pour la collecte de logs hostPath, suggérer : Azure Monitor Container Insights (recommandé, auto-activé), volume CSI Azure Files, emptyDir, ou motif sidecar.

Flux d'application du correctif :

  1. Générer le correctif comme un diff YAML
  2. Afficher le diff avec explication
  3. Attendre approbation explicite : « apply », « edit » ou « skip »
  4. À l'approbation, appliquer la modification au fichier
  5. Passer au problème suivant

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

Étape 5 : Recommander les étapes suivantes

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

Vos charges de travail sont prêtes pour AKS Automatic ! Étapes suivantes :
1. Passez en revue les éléments auto-corrigés — 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 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 contrôle complète de migration.

Les résultats incompatibles restent : Lister les bloqueurs et proposer trois options : reconcevoir les charges de travail, conserver sur un cluster AKS Standard séparé, ou utiliser Automatic pour les charges compatibles + Standard pour les charges incompatibles.

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

Gestion des erreurs

Erreur / Symptôme Cause probable Correction
L'appel de l'outil MCP échoue ou expire Informations d'identification 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 des manifests locaux ou exportés et la spécification de contrainte groupée
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 API AKS
L'API retourne HTTP 202 Grand cluster (500+ charges de travail) — opération asynchrone Interrogez l'URL en-tête Location en utilisant l'intervalle Retry-After
Le graphique Helm utilise le templage Go — ne peut pas évaluer Valeurs de template non résolues Demander à l'utilisateur la sortie rendue (helm template) ou les fichiers de valeurs
Incompatibilité de version de spécification de contrainte La compétence groupe la spécification v1.1.1 (2026-03-15) Noter la version dans la sortie ; recommander de relancer après mise à jour de spécification

Fichiers de référence

Fichier Quand charger
references/constraint-spec-v1.yaml Toujours charger pour la validation hors ligne — tous les ID de contrainte, gravités et modèles de correctif
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 la fin de l'évaluation
references/mcp-integration.md Lors du dépannage des appels d'outils MCP ou du débogage de la chaîne de secours

⚠️ Avertissement : Cette compétence groupe la spécification de contrainte v1.1.1 (2026-03-15), couvrant 26 contraintes au niveau du cluster, 25 stratégies de garanties de déploiement actives, 2 mutateurs webhook actifs, et 5 stratégies de base de sécurité de pod. Toujours noter la version de spécification dans la sortie d'évaluation.

Skills similaires