-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathTaskfile.yml
More file actions
173 lines (157 loc) · 5.78 KB
/
Copy pathTaskfile.yml
File metadata and controls
173 lines (157 loc) · 5.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
version: '3'
vars:
CLUSTER_NAME: envoy-ai-gateway-demo
KIND_VERSION: v0.29.0
ENVOY_GATEWAY_VERSION: v0.0.0-latest
ENVOY_AI_GATEWAY_VERSION: v0.0.0-latest
PORT_FORWARD: 8080
tasks:
# Main setup tasks in execution order
setup-all:
desc: Complete setup - create cluster and install all components
deps: [install-deps, install-envoy-ai-gateway]
cmds:
- echo "🎉 Setup complete! Your Envoy AI Gateway is ready."
- echo "Next steps:"
- echo "1. Run 'task port-forward' to access the gateway"
- echo "2. Check the README.md for usage examples"
- echo "3. Explore AI Gateway features at https://aigateway.envoyproxy.io/"
- task: verify-installation
generates:
- .task/setup-all.done
status:
- test -f .task/setup-all.done
install-deps:
desc: Install required dependencies (kind, helm, kubectl, docker)
cmds:
- mkdir -p .task
- ./scripts/install-deps.sh {{.KIND_VERSION}}
- touch .task/install-deps.done
generates:
- .task/install-deps.done
status:
- test -f .task/install-deps.done
- which kind
- which helm
- which kubectl
create-cluster:
desc: Create kind cluster
deps: [install-deps]
cmds:
- ./scripts/create-cluster.sh {{.CLUSTER_NAME}}
- kind export kubeconfig --name {{.CLUSTER_NAME}}
- touch .task/create-cluster.done
generates:
- .task/create-cluster.done
status:
- test -f .task/create-cluster.done
- kind get clusters | grep -q "{{.CLUSTER_NAME}}"
install-envoy-gateway:
desc: Install Envoy Gateway using Helm
deps: [create-cluster]
cmds:
- ./scripts/install-envoy-gateway.sh {{.ENVOY_GATEWAY_VERSION}}
- touch .task/install-envoy-gateway.done
generates:
- .task/install-envoy-gateway.done
status:
- test -f .task/install-envoy-gateway.done
- kubectl get namespace envoy-gateway-system
- kubectl get deployment -n envoy-gateway-system envoy-gateway
install-envoy-ai-gateway:
desc: Install Envoy AI Gateway using Helm
deps: [install-envoy-gateway]
cmds:
- ./scripts/install-envoy-ai-gateway.sh {{.ENVOY_AI_GATEWAY_VERSION}}
- touch .task/install-envoy-ai-gateway.done
generates:
- .task/install-envoy-ai-gateway.done
status:
- test -f .task/install-envoy-ai-gateway.done
- kubectl get namespace envoy-ai-gateway-system
- kubectl get deployment -n envoy-ai-gateway-system ai-gateway-controller
- kubectl get deployment -n redis-system redis
- kubectl get clusterrole ai-gateway-controller
# Status and verification tasks
verify-installation:
desc: Show current status of all components
cmds:
- |
echo "=== Installation Status ==="
echo "Use 'task --status <task-name>' to check individual tasks"
echo "Use 'task --status setup-all' to check overall setup"
echo ""
- ./scripts/verify-installation.sh
# Utility tasks
cleanup:
desc: Clean up the kind cluster and resources
cmds:
- ./scripts/cleanup.sh {{.CLUSTER_NAME}}
# Monitoring and debugging tasks
logs-envoy-gateway:
desc: Show Envoy Gateway logs
cmds:
- kubectl logs -n envoy-gateway-system -l app.kubernetes.io/name=envoy-gateway --tail=100
logs-ai-gateway:
desc: Show Envoy AI Gateway logs
cmds:
- kubectl logs -n envoy-ai-gateway-system -l app.kubernetes.io/name=ai-gateway-controller --tail=100
port-forward:
desc: "Start port forwarding in background"
cmds:
- |
# Check if port-forward is already running
if [ -f .task/port-forward.pid ]; then
PID=$(cat .task/port-forward.pid)
if kill -0 $PID 2>/dev/null; then
echo "Port forwarding already running on PID $PID"
exit 0
fi
fi
# Start port forwarding in background
mkdir -p .task
ENVOY_SERVICE=$(kubectl get svc -n envoy-gateway-system -l gateway.envoyproxy.io/owning-gateway-name={{.GATEWAY_NAME}} -o jsonpath='{.items[0].metadata.name}')
echo "Starting port forwarding to service: $ENVOY_SERVICE on port {{.PORT_FORWARD}}"
nohup kubectl port-forward -n envoy-gateway-system svc/$ENVOY_SERVICE {{.PORT_FORWARD}}:80 > .task/port-forward.log 2>&1 &
echo $! > .task/port-forward.pid
# Wait for port forwarding to be ready
echo "Waiting for port forwarding to be ready..."
sleep 3
echo "✅ Port forwarding started in background (PID: $(cat .task/port-forward.pid))"
echo "Use 'task stop-port-forward' to stop"
generates:
- .task/port-forward.pid
status:
- test -f .task/port-forward.pid
- kill -0 $(cat .task/port-forward.pid 2>/dev/null) 2>/dev/null
stop-port-forward:
desc: "Stop background port forwarding"
cmds:
- |
if [ -f .task/port-forward.pid ]; then
PID=$(cat .task/port-forward.pid)
if kill -0 $PID 2>/dev/null; then
echo "Stopping port forwarding (PID: $PID)"
kill $PID
sleep 2
# Force kill if still running
kill -9 $PID 2>/dev/null || true
echo "✅ Port forwarding stopped"
else
echo "Port forwarding process not running"
fi
rm -f .task/port-forward.pid .task/port-forward.log
else
echo "No port forwarding process found"
fi
# Also kill any kubectl port-forward processes for this port
pkill -f "kubectl.*port-forward.*{{.PORT_FORWARD}}" || true
kubectx:
desc: Switch to the kind cluster context
cmds:
- kind export kubeconfig --name {{.CLUSTER_NAME}}
# Default task - shows tasks in definition order
default:
desc: Show available tasks in logical order
cmds:
- task --list --sort=none