Skip to content

Commit 6ab3705

Browse files
authored
Add workflow for AKS access and health checks
1 parent b57730d commit 6ab3705

File tree

1 file changed

+102
-0
lines changed

1 file changed

+102
-0
lines changed

.github/workflows/copilot-aks.yml

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,3 +93,105 @@ jobs:
9393
- name: Check cluster
9494
run: |
9595
az aks agent "Is my cluster healthy?" --resource-group ${{ steps.cluster-info.outputs.RESOURCE_GROUP }} --name ${{ steps.cluster-info.outputs.CLUSTER_NAME }} --namespace aks-mcp --no-interactive
96+
name: "Copilot - AKS Access"
97+
98+
on:
99+
workflow_dispatch:
100+
inputs:
101+
resource_group:
102+
description: 'Azure Resource Group'
103+
required: true
104+
default: 'rg-anyscale-demo'
105+
cluster_name:
106+
description: 'AKS Cluster Name'
107+
required: true
108+
default: 'aks-eastus2'
109+
issues:
110+
types: [labeled]
111+
112+
env:
113+
ARM_CLIENT_ID: ${{ secrets.ARM_CLIENT_ID }}
114+
ARM_SUBSCRIPTION_ID: ${{ secrets.ARM_SUBSCRIPTION_ID }}
115+
ARM_TENANT_ID: ${{ secrets.ARM_TENANT_ID }}
116+
ARM_USE_OIDC: true
117+
118+
permissions:
119+
id-token: write
120+
contents: read
121+
issues: write
122+
123+
jobs:
124+
copilot-setup-steps:
125+
runs-on: ubuntu-latest
126+
environment: copilot
127+
# Only run on label events if the label starts with 'cluster/'
128+
if: github.event_name == 'workflow_dispatch' || startsWith(github.event.label.name, 'cluster/')
129+
130+
# Job-level permissions override workflow-level, so you must include id-token here
131+
permissions:
132+
contents: write
133+
id-token: write # Required for Azure federated identity
134+
135+
steps:
136+
- name: Checkout code
137+
uses: actions/checkout@v5
138+
139+
- name: Parse cluster info from label or inputs
140+
id: cluster-info
141+
run: |
142+
if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
143+
# Use workflow inputs
144+
echo "RESOURCE_GROUP=${{ github.event.inputs.resource_group }}" >> $GITHUB_OUTPUT
145+
echo "CLUSTER_NAME=${{ github.event.inputs.cluster_name }}" >> $GITHUB_OUTPUT
146+
echo "Using workflow inputs: RG=${{ github.event.inputs.resource_group }}, Cluster=${{ github.event.inputs.cluster_name }}"
147+
else
148+
# Parse from label: cluster/<resource-group>/<cluster-name>
149+
LABEL="${{ github.event.label.name }}"
150+
echo "Parsing label: $LABEL"
151+
152+
# Extract resource group and cluster name from label
153+
# Expected format: cluster/<resource-group>/<cluster-name>
154+
RESOURCE_GROUP=$(echo "$LABEL" | cut -d'/' -f2)
155+
CLUSTER_NAME=$(echo "$LABEL" | cut -d'/' -f3)
156+
157+
if [ -z "$RESOURCE_GROUP" ] || [ -z "$CLUSTER_NAME" ]; then
158+
echo "ERROR: Invalid label format. Expected: cluster/<resource-group>/<cluster-name>"
159+
echo "Got: $LABEL"
160+
exit 1
161+
fi
162+
163+
echo "RESOURCE_GROUP=$RESOURCE_GROUP" >> $GITHUB_OUTPUT
164+
echo "CLUSTER_NAME=$CLUSTER_NAME" >> $GITHUB_OUTPUT
165+
echo "Parsed from label: RG=$RESOURCE_GROUP, Cluster=$CLUSTER_NAME"
166+
fi
167+
168+
- name: Azure CLI Login
169+
uses: azure/login@v2
170+
with:
171+
client-id: ${{ secrets.ARM_CLIENT_ID }}
172+
tenant-id: ${{ secrets.ARM_TENANT_ID }}
173+
subscription-id: ${{ secrets.ARM_SUBSCRIPTION_ID }}
174+
175+
- name: Verify Azure Login
176+
run: |
177+
echo "Verifying Azure authentication..."
178+
az account show
179+
180+
- name: Get AKS Credentials
181+
run: |
182+
echo "Fetching kubeconfig for cluster ${{ steps.cluster-info.outputs.CLUSTER_NAME }}..."
183+
az aks get-credentials \
184+
--resource-group ${{ steps.cluster-info.outputs.RESOURCE_GROUP }} \
185+
--name ${{ steps.cluster-info.outputs.CLUSTER_NAME }} \
186+
--overwrite-existing
187+
echo "Kubeconfig fetched successfully!"
188+
- name: Run AKS agent health check (TTY-safe)
189+
uses: azure/CLI@v2
190+
with:
191+
inlineScript: |
192+
set -euo pipefail
193+
194+
# `script` provides a pseudo-TTY so the exec-in-pod path doesn't crash in CI
195+
script -q -e -c \
196+
'az aks agent "Is my cluster healthy?"--resource-group ${{ steps.cluster-info.outputs.RESOURCE_GROUP }} --name ${{ steps.cluster-info.outputs.CLUSTER_NAME }} --namespace aks-mcp --no-interactive' \
197+
/dev/null

0 commit comments

Comments
 (0)