aks-automatic-2025

AKS Automatic - 2025 GA Features

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "aks-automatic-2025" with this command: npx skills add josiahsiegel/claude-plugin-marketplace/josiahsiegel-claude-plugin-marketplace-aks-automatic-2025

AKS Automatic - 2025 GA Features

Complete knowledge base for Azure Kubernetes Service Automatic mode (GA October 2025).

Overview

AKS Automatic is a fully-managed Kubernetes offering that eliminates operational overhead through intelligent automation and built-in best practices.

Key Features (GA October 2025)

  1. Zero Operational Overhead
  • Fully-managed control plane and worker nodes

  • Automatic OS patching and security updates

  • Built-in monitoring and diagnostics

  • Integrated security and compliance

  1. Karpenter Integration
  • Dynamic node provisioning based on real-time demand

  • Intelligent bin-packing for cost optimization

  • Automatic node consolidation and deprovisioning

  • Support for multiple node pools and instance types

  1. Auto-Scaling (Enabled by Default)
  • Horizontal Pod Autoscaler (HPA): Scale pods based on CPU/memory

  • Vertical Pod Autoscaler (VPA): Adjust pod resource requests/limits

  • KEDA: Event-driven autoscaling for external triggers

  1. Enhanced Security
  • Microsoft Entra ID integration for authentication

  • Azure RBAC for Kubernetes authorization

  • Network policies enabled by default

  • Automatic security patches

  • Workload identity for pod-level authentication

  1. Advanced Networking
  • Azure CNI Overlay for efficient IP usage

  • Cilium dataplane for high-performance networking

  • Network policies for microsegmentation

  • Private clusters supported

  1. New Billing Model (Effective October 19, 2025)
  • Hosted control plane fee: $0.16/cluster/hour

  • Compute charges based on actual node usage

  • No separate cluster management fee

  • Cost savings from Karpenter optimization

  1. Node Operating System
  • Ubuntu 22.04 for Kubernetes < 1.34

  • Ubuntu 24.04 for Kubernetes >= 1.34

  • Automatic OS upgrades with node image channel

Creating AKS Automatic Cluster

Basic Creation

az aks create
--resource-group MyRG
--name MyAKSAutomatic
--sku automatic
--kubernetes-version 1.34
--location eastus

Production-Ready Configuration

az aks create
--resource-group MyRG
--name MyAKSAutomatic
--location eastus
--sku automatic
--tier standard
\

Kubernetes version

--kubernetes-version 1.34
\

Karpenter (default in automatic mode)

--enable-karpenter
\

Networking

--network-plugin azure
--network-plugin-mode overlay
--network-dataplane cilium
--service-cidr 10.0.0.0/16
--dns-service-ip 10.0.0.10
--load-balancer-sku standard
\

Use custom VNet (optional)

--vnet-subnet-id /subscriptions/<sub-id>/resourceGroups/MyRG/providers/Microsoft.Network/virtualNetworks/MyVNet/subnets/AKSSubnet
\

Availability zones

--zones 1 2 3
\

Authentication and authorization

--enable-managed-identity
--enable-aad
--enable-azure-rbac
--aad-admin-group-object-ids <group-object-id>
\

Auto-upgrade

--auto-upgrade-channel stable
--node-os-upgrade-channel NodeImage
\

Security

--enable-defender
--enable-workload-identity
--enable-oidc-issuer
\

Monitoring

--enable-addons monitoring
--workspace-resource-id /subscriptions/<sub-id>/resourceGroups/MyRG/providers/Microsoft.OperationalInsights/workspaces/MyWorkspace
\

Tags

--tags Environment=Production ManagedBy=AKSAutomatic

With Azure Policy Add-on

az aks create
--resource-group MyRG
--name MyAKSAutomatic
--sku automatic
--enable-addons azure-policy
--kubernetes-version 1.34

Karpenter Configuration

AKS Automatic uses Karpenter for intelligent node provisioning. Customize node provisioning with AKSNodeClass and NodePool CRDs.

Default AKSNodeClass

apiVersion: karpenter.azure.com/v1alpha1 kind: AKSNodeClass metadata: name: default spec:

OS Image - Ubuntu 24.04 for K8s 1.34+

osImage: sku: Ubuntu version: "24.04"

VM Series

vmSeries: - Standard_D - Standard_E

Max pods per node

maxPodsPerNode: 110

Security

securityProfile: sshAccess: Disabled securityType: Standard

Custom NodePool

apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: general-purpose spec:

Constraints

template: spec: requirements: - key: kubernetes.io/arch operator: In values: ["amd64"] - key: karpenter.sh/capacity-type operator: In values: ["on-demand"] - key: kubernetes.azure.com/agentpool operator: In values: ["general"]

  # Node labels
  labels:
    workload-type: general

  # Taints (optional)
  taints:
    - key: "dedicated"
      value: "general"
      effect: "NoSchedule"

  # NodeClass reference
  nodeClassRef:
    group: karpenter.azure.com
    kind: AKSNodeClass
    name: default

Limits

limits: cpu: "1000" memory: 4000Gi

Disruption budget

disruption: consolidationPolicy: WhenEmpty consolidateAfter: 30s expireAfter: 720h # 30 days budgets: - nodes: "10%" duration: 5m

GPU NodePool for AI Workloads

apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: gpu-workloads spec: template: spec: requirements: - key: kubernetes.io/arch operator: In values: ["amd64"] - key: karpenter.sh/capacity-type operator: In values: ["on-demand"] - key: node.kubernetes.io/instance-type operator: In values: ["Standard_NC6s_v3", "Standard_NC12s_v3", "Standard_NC24s_v3"]

  labels:
    workload-type: gpu
    gpu-type: nvidia-v100

  taints:
    - key: "nvidia.com/gpu"
      value: "true"
      effect: "NoSchedule"

  nodeClassRef:
    group: karpenter.azure.com
    kind: AKSNodeClass
    name: gpu-nodeclass

limits: cpu: "200" memory: 800Gi nvidia.com/gpu: "16"

disruption: consolidationPolicy: WhenEmpty consolidateAfter: 300s

Autoscaling with HPA, VPA, and KEDA

Horizontal Pod Autoscaler (HPA)

apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: myapp-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: myapp minReplicas: 2 maxReplicas: 50 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 70 - type: Resource resource: name: memory target: type: Utilization averageUtilization: 80 behavior: scaleUp: stabilizationWindowSeconds: 0 policies: - type: Percent value: 100 periodSeconds: 15 - type: Pods value: 4 periodSeconds: 15 selectPolicy: Max scaleDown: stabilizationWindowSeconds: 300 policies: - type: Percent value: 50 periodSeconds: 15

Vertical Pod Autoscaler (VPA)

apiVersion: autoscaling.k8s.io/v1 kind: VerticalPodAutoscaler metadata: name: myapp-vpa spec: targetRef: apiVersion: apps/v1 kind: Deployment name: myapp updatePolicy: updateMode: "Auto" # Auto, Recreate, Initial, Off resourcePolicy: containerPolicies: - containerName: "*" minAllowed: cpu: 100m memory: 128Mi maxAllowed: cpu: 4 memory: 8Gi controlledResources: ["cpu", "memory"] controlledValues: RequestsAndLimits

KEDA ScaledObject (Event-Driven)

apiVersion: keda.sh/v1alpha1 kind: ScaledObject metadata: name: myapp-queue-scaler spec: scaleTargetRef: name: myapp minReplicaCount: 0 # Scale to zero maxReplicaCount: 100 pollingInterval: 30 cooldownPeriod: 300 triggers: # Azure Service Bus Queue - type: azure-servicebus metadata: queueName: myqueue namespace: myservicebus messageCount: "5" authenticationRef: name: azure-servicebus-auth

# Azure Storage Queue
- type: azure-queue
  metadata:
    queueName: myqueue
    queueLength: "10"
    accountName: mystorageaccount
  authenticationRef:
    name: azure-storage-auth

# Prometheus metrics
- type: prometheus
  metadata:
    serverAddress: http://prometheus.monitoring.svc.cluster.local:9090
    metricName: http_requests_per_second
    threshold: "100"
    query: sum(rate(http_requests_total[2m]))

Workload Identity (Replaces AAD Pod Identity)

Setup

Workload identity is enabled by default in AKS Automatic

Create managed identity

az identity create
--name myapp-identity
--resource-group MyRG

Get identity details

export IDENTITY_CLIENT_ID=$(az identity show -g MyRG -n myapp-identity --query clientId -o tsv) export IDENTITY_OBJECT_ID=$(az identity show -g MyRG -n myapp-identity --query principalId -o tsv)

Assign role to identity

az role assignment create
--assignee $IDENTITY_OBJECT_ID
--role "Storage Blob Data Contributor"
--scope /subscriptions/<sub-id>/resourceGroups/MyRG/providers/Microsoft.Storage/storageAccounts/mystorage

Create federated credential

export AKS_OIDC_ISSUER=$(az aks show -g MyRG -n MyAKSAutomatic --query oidcIssuerProfile.issuerUrl -o tsv)

az identity federated-credential create
--name myapp-federated-credential
--identity-name myapp-identity
--resource-group MyRG
--issuer $AKS_OIDC_ISSUER
--subject system:serviceaccount:default:myapp-sa

Kubernetes Resources

Service Account

apiVersion: v1 kind: ServiceAccount metadata: name: myapp-sa namespace: default annotations: azure.workload.identity/client-id: "<IDENTITY_CLIENT_ID>"


Deployment using workload identity

apiVersion: apps/v1 kind: Deployment metadata: name: myapp spec: replicas: 2 selector: matchLabels: app: myapp template: metadata: labels: app: myapp azure.workload.identity/use: "true" # Enable workload identity spec: serviceAccountName: myapp-sa containers: - name: myapp image: myregistry.azurecr.io/myapp:latest env: - name: AZURE_CLIENT_ID value: "<IDENTITY_CLIENT_ID>" - name: AZURE_TENANT_ID value: "<TENANT_ID>" - name: AZURE_FEDERATED_TOKEN_FILE value: /var/run/secrets/azure/tokens/azure-identity-token volumeMounts: - name: azure-identity-token mountPath: /var/run/secrets/azure/tokens readOnly: true volumes: - name: azure-identity-token projected: sources: - serviceAccountToken: path: azure-identity-token expirationSeconds: 3600 audience: api://AzureADTokenExchange

Monitoring and Observability

Enable Container Insights

Already enabled with --enable-addons monitoring

Query logs using Azure Monitor

Get cluster logs

az monitor log-analytics query
--workspace <workspace-id>
--analytics-query "KubePodInventory | where ClusterName == 'MyAKSAutomatic' | take 10"
--output table

Get Karpenter logs

kubectl logs -n kube-system -l app.kubernetes.io/name=karpenter

Prometheus and Grafana

Enable managed Prometheus

az aks update
--resource-group MyRG
--name MyAKSAutomatic
--enable-azure-monitor-metrics

Access Grafana dashboards through Azure Portal

Cost Optimization

Billing Model (October 2025)

  • Control plane: $0.16/hour per cluster

  • Compute: Pay for actual node usage

  • Karpenter: Automatic bin-packing and consolidation

  • Scale-to-zero: Possible with KEDA and Karpenter

Cost-Saving Tips

  • Use Spot Instances for Non-Critical Workloads

  • key: karpenter.sh/capacity-type operator: In values: ["spot"]

  • Configure Aggressive Consolidation

disruption: consolidationPolicy: WhenUnderutilized consolidateAfter: 30s

  • Implement Pod Disruption Budgets

apiVersion: policy/v1 kind: PodDisruptionBudget metadata: name: myapp-pdb spec: minAvailable: 1 selector: matchLabels: app: myapp

  • Use VPA for Right-Sizing

  • VPA automatically adjusts resource requests based on actual usage

Migration from Standard AKS to Automatic

AKS Automatic is a new cluster mode - in-place migration is not supported. Follow these steps:

  • Create new AKS Automatic cluster

  • Install workloads in new cluster

  • Validate functionality

  • Switch traffic (DNS, load balancer)

  • Decommission old cluster

Best Practices

✓ Use AKS Automatic for new production clusters ✓ Enable workload identity for pod authentication ✓ Configure custom NodePools for specific workload types ✓ Implement HPA, VPA, and KEDA for comprehensive scaling ✓ Use spot instances for batch and fault-tolerant workloads ✓ Enable Container Insights and Managed Prometheus ✓ Configure Pod Disruption Budgets for critical apps ✓ Use network policies for microsegmentation ✓ Enable Azure Policy add-on for compliance ✓ Implement GitOps with Flux or Argo CD

Troubleshooting

Check Karpenter Status

kubectl logs -n kube-system -l app.kubernetes.io/name=karpenter --tail=100 kubectl get nodepools kubectl get nodeclaims

View Node Provisioning Events

kubectl get events --field-selector involvedObject.kind=NodePool -A

Debug Workload Identity Issues

Check service account annotation

kubectl get sa myapp-sa -o yaml

Check pod labels

kubectl get pod <pod-name> -o yaml | grep azure.workload.identity

Check federated credential

az identity federated-credential show
--identity-name myapp-identity
--resource-group MyRG
--name myapp-federated-credential

References

  • AKS Automatic Documentation

  • Karpenter on Azure

  • Workload Identity

  • AKS Release Notes

AKS Automatic represents the future of managed Kubernetes on Azure - zero operational overhead with maximum automation!

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

tailwindcss-advanced-layouts

No summary provided by upstream source.

Repository SourceNeeds Review
General

tailwindcss-animations

No summary provided by upstream source.

Repository SourceNeeds Review
General

tailwindcss-mobile-first

No summary provided by upstream source.

Repository SourceNeeds Review
General

docker-best-practices

No summary provided by upstream source.

Repository SourceNeeds Review