| name | Azure Kubernetes |
| description | Deep expertise in Azure Kubernetes operations with deterministic runbooks, fail-fast context validation, and redacted output requirements.
|
| allowed-tools | ["Read","Write","Edit","Glob","Grep","Bash"] |
| triggers | ["aks","azure kubernetes","pod crashloop","node pool scale","azure policy for aks"] |
Azure Kubernetes
Integration Context Contract
| Workflow | tenantId | subscriptionId | environmentCloud | principalType | scopesOrRoles |
|---|
| Azure Kubernetes operations | required | required | AzureCloud* | service-principal or delegated-user | Azure Kubernetes Service RBAC Cluster Admin, Reader |
- Use sovereign cloud values from the canonical contract when applicable.
Fail fast before API calls when required context is missing or malformed. Redact tenant, subscription, and object identifiers.
Command Surface
| Command | Purpose |
|---|
aks-setup | Deterministic workflow for aks setup. |
aks-cluster-inventory | Deterministic workflow for aks cluster inventory. |
aks-pod-failure-scan | Deterministic workflow for aks pod failure scan. |
aks-nodepool-scale | Deterministic workflow for aks nodepool scale. |
aks-policy-status | Deterministic workflow for aks policy status. |
Guardrails
- Validate context schema and minimum grants before any API call.
- Run read-only discovery first whenever possible.
- Require explicit confirmation for destructive actions.
- Re-query and verify post-action state.
- Return structured, redacted output.
Progressive Disclosure - Reference Files
Azure CLI Reference
All commands below require Azure CLI (az) with an authenticated session (az login).
Replace <cluster>, <rg>, and other placeholders with actual values.
Cluster Lifecycle
az aks create --name <cluster> --resource-group <rg> --location <region> \
--node-count 3 --node-vm-size Standard_DS2_v2 --generate-ssh-keys \
--network-plugin azure --enable-managed-identity
az aks create --name <cluster> --resource-group <rg> \
--node-count 3 --node-vm-size Standard_DS3_v2 --generate-ssh-keys \
--network-plugin azure --network-policy calico \
--vnet-subnet-id <subnet-id> --service-cidr 10.0.0.0/16 --dns-service-ip 10.0.0.10 \
--enable-managed-identity --enable-addons monitoring \
--workspace-resource-id <workspace-id> --zones 1 2 3 --tier standard
az aks get-credentials --name <cluster> --resource-group <rg>
az aks get-credentials --name <cluster> --resource-group <rg> --admin
az aks get-credentials --name <cluster> --resource-group <rg> --overwrite-existing
az aks show --name <cluster> --resource-group <rg>
az aks list --resource-group <rg> --output table
az aks list --output table
az aks delete --name <cluster> --resource-group <rg> --yes --no-wait
az aks update --name <cluster> --resource-group <rg> --enable-cluster-autoscaler --min-count 1 --max-count 10
az aks update --name <cluster> --resource-group <rg> --attach-acr <acr-name>
az aks update --name <cluster> --resource-group <rg> --enable-azure-rbac
az aks update --name <cluster> --resource-group <rg> --api-server-authorized-ip-ranges "1.2.3.4/32,5.6.7.8/32"
az aks install-cli
az aks command invoke --name <cluster> --resource-group <rg> --command "kubectl get pods -A"
az aks command invoke --name <cluster> --resource-group <rg> --command "kubectl apply -f deployment.yaml" --file deployment.yaml
Node Pool Management
az aks nodepool add --cluster-name <cluster> --resource-group <rg> \
--name <pool-name> --node-count 3 --node-vm-size Standard_DS3_v2 --mode User
az aks nodepool add --cluster-name <cluster> --resource-group <rg> \
--name spotpool --node-count 3 --node-vm-size Standard_DS3_v2 \
--priority Spot --eviction-policy Delete --spot-max-price -1
az aks nodepool add --cluster-name <cluster> --resource-group <rg> \
--name gpupool --node-count 1 --node-vm-size Standard_NC6s_v3 \
--node-taints "sku=gpu:NoSchedule" --labels gpu=true
az aks nodepool add --cluster-name <cluster> --resource-group <rg> \
--name winpool --node-count 2 --os-type Windows --node-vm-size Standard_D4s_v3
az aks nodepool scale --cluster-name <cluster> --resource-group <rg> --name <pool-name> --node-count 5
az aks nodepool update --cluster-name <cluster> --resource-group <rg> --name <pool-name> \
--enable-cluster-autoscaler --min-count 1 --max-count 10
az aks nodepool update --cluster-name <cluster> --resource-group <rg> --name <pool-name> --labels env=prod tier=backend
az aks nodepool update --cluster-name <cluster> --resource-group <rg> --name <pool-name> --node-taints "dedicated=special:NoSchedule"
az aks nodepool show --cluster-name <cluster> --resource-group <rg> --name <pool-name>
az aks nodepool list --cluster-name <cluster> --resource-group <rg> --output table
az aks nodepool delete --cluster-name <cluster> --resource-group <rg> --name <pool-name> --yes
Upgrades
az aks get-upgrades --name <cluster> --resource-group <rg> --output table
az aks upgrade --name <cluster> --resource-group <rg> --kubernetes-version <version> --yes
az aks nodepool upgrade --cluster-name <cluster> --resource-group <rg> --name <pool-name> --kubernetes-version <version>
az aks nodepool upgrade --cluster-name <cluster> --resource-group <rg> --name <pool-name> --node-image-only
az aks nodepool get-upgrades --cluster-name <cluster> --resource-group <rg> --nodepool-name <pool-name>
ACR Integration
az aks update --name <cluster> --resource-group <rg> --attach-acr <acr-name>
az aks update --name <cluster> --resource-group <rg> --detach-acr <acr-name>
az aks check-acr --name <cluster> --resource-group <rg> --acr <acr-name>.azurecr.io
Addons
az aks enable-addons --name <cluster> --resource-group <rg> --addons monitoring --workspace-resource-id <workspace-id>
az aks enable-addons --name <cluster> --resource-group <rg> --addons azure-policy
az aks enable-addons --name <cluster> --resource-group <rg> --addons azure-keyvault-secrets-provider
az aks enable-addons --name <cluster> --resource-group <rg> --addons http_application_routing
az aks enable-addons --name <cluster> --resource-group <rg> --addons keda
az aks disable-addons --name <cluster> --resource-group <rg> --addons monitoring
az aks show --name <cluster> --resource-group <rg> --query "addonProfiles"
Identity & RBAC
az aks update --name <cluster> --resource-group <rg> --enable-managed-identity
az aks show --name <cluster> --resource-group <rg> --query "identity"
az aks show --name <cluster> --resource-group <rg> --query "identityProfile.kubeletidentity.objectId" -o tsv
az aks update --name <cluster> --resource-group <rg> --enable-azure-rbac
az role assignment create --assignee <user-or-sp-id> \
--role "Azure Kubernetes Service Cluster User Role" --scope <cluster-resource-id>
az role assignment create --assignee <user-or-sp-id> \
--role "Azure Kubernetes Service RBAC Writer" --scope <cluster-resource-id>/namespaces/<ns>
az aks update --name <cluster> --resource-group <rg> --enable-oidc-issuer --enable-workload-identity
az aks show --name <cluster> --resource-group <rg> --query "oidcIssuerProfile.issuerUrl" -o tsv
Networking
az aks show --name <cluster> --resource-group <rg> --query "networkProfile"
az aks update --name <cluster> --resource-group <rg> --api-server-authorized-ip-ranges "1.2.3.4/32"
az aks create --name <cluster> --resource-group <rg> --enable-private-cluster \
--node-count 3 --generate-ssh-keys
az aks show --name <cluster> --resource-group <rg> --query "fqdn" -o tsv
az aks show --name <cluster> --resource-group <rg> --query "privateFqdn" -o tsv
Maintenance Windows
az aks maintenanceconfiguration add --cluster-name <cluster> --resource-group <rg> \
--name default --weekday Monday --start-hour 1
az aks maintenanceconfiguration list --cluster-name <cluster> --resource-group <rg>
az aks maintenanceconfiguration delete --cluster-name <cluster> --resource-group <rg> --name default
Diagnostics & Monitoring
az aks kollect --name <cluster> --resource-group <rg> --storage-account <sa-name>
az monitor log-analytics query --workspace <workspace-id> --analytics-query \
"KubePodInventory | where ClusterName == '<cluster>' | where Namespace != 'kube-system' | summarize count() by Name, PodStatus | order by count_ desc" --output table
az monitor log-analytics query --workspace <workspace-id> --analytics-query \
"ContainerLog | where LogEntry contains 'error' or LogEntry contains 'fatal' | where TimeGenerated > ago(1h) | project TimeGenerated, ContainerID, LogEntry | order by TimeGenerated desc | take 50" --output table
az monitor log-analytics query --workspace <workspace-id> --analytics-query \
"KubeNodeInventory | where ClusterName == '<cluster>' | project Computer, Status, KubeletVersion, LastTransitionTimeReady | order by Status" --output table
az monitor metrics alert create --resource-group <rg> --name "aks-pod-failures" \
--scopes <cluster-resource-id> --condition "total restartingContainerCount > 5" \
--window-size PT15M --evaluation-frequency PT5M --severity 2 --action <action-group-id>
az monitor diagnostic-settings create --resource <cluster-resource-id> --name "aks-diag" \
--workspace <workspace-id> \
--logs '[{"categoryGroup":"allLogs","enabled":true}]' \
--metrics '[{"category":"AllMetrics","enabled":true}]'
az aks show --name <cluster> --resource-group <rg> \
--query "{PowerState:powerState.code, ProvisioningState:provisioningState, KubernetesVersion:kubernetesVersion, NodeCount:agentPoolProfiles[].count}"
Start / Stop Cluster
az aks stop --name <cluster> --resource-group <rg>
az aks start --name <cluster> --resource-group <rg>
az aks show --name <cluster> --resource-group <rg> --query "powerState" -o tsv