All skills
microsoft avatar

/airunway-aks-setup

@d0c21c0 official

Set up AI Runway on AKS — from bare cluster to running model. Covers cluster verification, controller install, GPU assessment, provider setup, and first deployment. WHEN: "setup AI Runway", "onboard AKS cluster", "install AI Runway", "airunway setup", "deploy model to AKS", "GPU inference on AKS", "KAITO setup on AKS", "run LLM on AKS", "vLLM on AKS", "set up model serving on AKS", "AI Runway controller".

Use this Skill: https://skilld.dev/gh/microsoft/github-copilot-for-azure/airunway-aks-setup

This session only. Nothing lands on disk.

referencespowershell-notes.md

≈805 tokens on demand. Your agent reads this file only when SKILL.md points to it.

PowerShell Command Variants

This reference provides PowerShell equivalents for commands in steps 1, 4, 5, and 6 that use Bash-specific syntax.

Prerequisite Check (Step 1)

@('kubectl', 'make', 'curl') | ForEach-Object {
  if (Get-Command $_ -ErrorAction SilentlyContinue) {
    Write-Host "✓ $_ found"
  } else {
    Write-Host "✗ $_ NOT FOUND — install before continuing"
  }
}

GPU Detection (Step 1)

# Extract GPU count and model per node (requires NVIDIA device plugin labels)
# PowerShell does not need the bash single-quote escaping — pass the jsonpath directly
kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.allocatable.nvidia\.com/gpu}{"\t"}{.metadata.labels.nvidia\.com/gpu\.product}{"\n"}{end}'

Note: If the output shows empty GPU fields, use the fallback:

kubectl describe nodes | Select-String -Pattern "nvidia" -Context 0,2

Provider Check (Step 4)

# Check if providers are already registered (errors indicate CRD not yet installed — expected on a fresh cluster)
kubectl get inferenceproviderconfigs --all-namespaces

Provider Discovery (Step 4)

# List available providers
Get-ChildItem providers/

# Check default image for a provider
Get-Content providers/<provider>/Makefile | Select-String -Pattern 'IMG\s*\?='

HuggingFace Token Secret (Step 5)

$token = Read-Host -Prompt "HuggingFace token" -AsSecureString
$bstr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($token)
try {
  [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($bstr) |
    Set-Content -NoNewline -Encoding UTF8 -Path "$env:TEMP\hf-token.txt"
} finally {
  [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($bstr)
}

kubectl create secret generic hf-token `
  --from-file=token="$env:TEMP\hf-token.txt" `
  -n <namespace> `
  --dry-run=client -o yaml | kubectl apply -f -

Remove-Item -Force "$env:TEMP\hf-token.txt"

ModelDeployment CR (Step 5)

For gated models (Llama etc.):

$manifest = @"
apiVersion: airunway.ai/v1alpha1
kind: ModelDeployment
metadata:
  name: <model-name>
  namespace: <namespace>
spec:
  model:
    id: <model-id>
    huggingFaceTokenSecretRef:
      name: hf-token
      key: token
  provider:
    name: <provider-name>
"@
$manifest | kubectl apply -f -

For non-gated models (Phi-3, Gemma etc.):

$manifest = @"
apiVersion: airunway.ai/v1alpha1
kind: ModelDeployment
metadata:
  name: <model-name>
  namespace: <namespace>
spec:
  model:
    id: <model-id>
  provider:
    name: <provider-name>
"@
$manifest | kubectl apply -f -

Smoke Test (Step 6)

$endpoint = kubectl get modeldeployment <model-name> -n <namespace> -o jsonpath='{.status.endpoint}'

if ([string]::IsNullOrEmpty($endpoint)) {
  Write-Host "Endpoint not yet available — model may still be starting"
} else {
  $body = @{
    model    = "<model-id>"
    messages = @(@{ role = "user"; content = "Hello!" })
  } | ConvertTo-Json -Depth 3

  Invoke-RestMethod -Method Post -Uri "$endpoint/v1/chat/completions" `
    -ContentType "application/json" -Body $body
}

Source: SKILL.md on GitHub

No alerts5mo3 checks · Risk SAFE
  • Gen Agent Trust Hub5mo

    This skill facilitates the setup of AI Runway on Azure Kubernetes Service (AKS) using standard administrative tools. It incorporates security best practices, particularly regarding the handling of sensitive HuggingFace tokens during deployment. No security considerations were identified.

  • Socket5mo

    No alerts

  • Snyk5mo

    Risk: LOW · No issues

Signed by skilld at d0c21c0. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 18 hours ago.

Activeupdated 5 months ago
metadata
{
  "author": "Microsoft",
  "version": "0.0.0-placeholder"
}
argument-hint
[skip-to-step N]
  • kubernetes
  • aks
  • azure
  • llm
  • model-serving
  • gpu
  • inference
  • kaito
  • vllm
  • mlops

README badge

README badge for microsoft/github-copilot-for-azure/airunway-aks-setup

Installs and configures AI Runway on an existing AKS cluster, walking through controller setup, GPU assessment, inference provider selection, and model deployment. Targets users deploying large language models or other GPU-accelerated workloads to Kubernetes via KAITO, Dynamo, or KubeRay.

Generated from the current SKILL.md.

Do I need an existing AKS cluster to use this skill?
Yes. This skill assumes you already have an AKS cluster. If you don't, the skill will hand off to the azure-kubernetes skill to provision one first, then return here.
What inference providers does this skill support?
The skill covers KAITO, Dynamo, and KubeRay as inference provider options. Step 4 recommends and installs the appropriate provider for your setup.
Does this skill work with CPU-only clusters?
Yes, CPU-only inference is acceptable, though the skill includes GPU assessment and provider setup primarily designed for GPU workloads. A bare cluster without GPU resources is still supported.
What happens if I already have part of AI Runway set up?
You can use the `skip-to-step N` argument to resume from a specific phase. The skill will report the current state and skip already-completed steps.
What are the cost implications of using this skill?
GPU node pools incur significant charges — A100-80GB can cost $3–5+/hr. The skill will confirm you understand these costs before provisioning GPU resources.

Generated from the current SKILL.md. These answers refresh after source changes.