42
42
- Kubernetes cluster (version 1.19+)
43
43
- ` kubectl ` configured to access your cluster
44
44
- Kustomize (built into kubectl v1.14+)
45
- - Docker image published to ` ghcr.io/graphprotocol/service-quality -oracle `
45
+ - Docker image published to ` ghcr.io/graphprotocol/rewards-eligibility -oracle `
46
46
- ** Storage class configured** (see Storage Configuration below)
47
47
48
48
## Quick Start
@@ -74,7 +74,7 @@ vim config.secret.yaml
74
74
./apply.sh
75
75
76
76
# Monitor
77
- kubectl logs -f deployment/service-quality -oracle -n service-quality -oracle
77
+ kubectl logs -f deployment/rewards-eligibility -oracle -n rewards-eligibility -oracle
78
78
```
79
79
80
80
### 3. Deploy to Mainnet
@@ -96,7 +96,7 @@ vim config.yaml
96
96
./apply.sh
97
97
98
98
# Monitor
99
- kubectl logs -f deployment/service-quality -oracle -n service-quality -oracle
99
+ kubectl logs -f deployment/rewards-eligibility -oracle -n rewards-eligibility -oracle
100
100
```
101
101
102
102
## Environment Configuration
@@ -133,6 +133,7 @@ kubectl get storageclass
133
133
```
134
134
135
135
** Common storage classes by platform:**
136
+
136
137
- ** AWS EKS** : ` gp2 ` , ` gp3 ` , ` ebs-csi `
137
138
- ** Google GKE** : ` standard ` , ` ssd `
138
139
- ** Azure AKS** : ` managed-premium ` , ` managed `
@@ -149,13 +150,13 @@ kubectl get storageclass
149
150
### View Logs
150
151
151
152
``` bash
152
- kubectl logs -f deployment/service-quality -oracle -n service-quality -oracle
153
+ kubectl logs -f deployment/rewards-eligibility -oracle -n rewards-eligibility -oracle
153
154
```
154
155
155
156
### Check Status
156
157
157
158
``` bash
158
- kubectl get all -n service-quality -oracle
159
+ kubectl get all -n rewards-eligibility -oracle
159
160
```
160
161
161
162
### Delete Environment
@@ -177,10 +178,11 @@ kubectl delete -k .
177
178
178
179
The service uses ** two persistent volumes** to maintain state across pod restarts:
179
180
180
- - ** ` service-quality -oracle-data` (10GB)** : Circuit breaker state, last run tracking, BigQuery cache, CSV outputs
181
- - ** ` service-quality -oracle-logs` (5GB)** : Application logs
181
+ - ** ` rewards-eligibility -oracle-data` (10GB)** : Circuit breaker state, last run tracking, BigQuery cache, CSV outputs
182
+ - ** ` rewards-eligibility -oracle-logs` (5GB)** : Application logs
182
183
183
184
** Mount points:**
185
+
184
186
- ` /app/data ` → Critical state files (circuit breaker, cache, outputs)
185
187
- ` /app/logs ` → Application logs
186
188
@@ -190,17 +192,20 @@ The service uses **two persistent volumes** to maintain state across pod restart
190
192
** Sensitive credentials** → ` Secret ` (generated from ` config.secret.yaml ` )
191
193
192
194
This separation provides:
195
+
193
196
- ✅ Easy configuration updates without rebuilding images
194
197
- ✅ Secure credential management with base64 encoding
195
198
- ✅ Clear separation of concerns
196
199
197
200
### Resource Allocation
198
201
199
202
** Requests (guaranteed):**
203
+
200
204
- CPU: 250m (0.25 cores)
201
205
- Memory: 512M
202
206
203
207
** Limits (maximum):**
208
+
204
209
- CPU: 1000m (1.0 core)
205
210
- Memory: 1G
206
211
@@ -217,7 +222,7 @@ With persistent volumes, the service maintains:
217
222
218
223
The deployment uses ** file-based health checks** (same as docker-compose):
219
224
220
- ** Liveness probe:** Checks ` /app/healthcheck ` file modification time
225
+ ** Liveness probe:** Checks ` /app/healthcheck ` file modification time
221
226
** Readiness probe:** Verifies ` /app/healthcheck ` file exists
222
227
223
228
## Troubleshooting
@@ -226,11 +231,11 @@ The deployment uses **file-based health checks** (same as docker-compose):
226
231
227
232
``` bash
228
233
# Check events
229
- kubectl describe pod -l app=service-quality -oracle
234
+ kubectl describe pod -l app=rewards-eligibility -oracle
230
235
231
236
# Common issues:
232
237
# - Missing secrets
233
- # - PVC provisioning failures
238
+ # - PVC provisioning failures
234
239
# - Image pull errors
235
240
```
236
241
@@ -241,28 +246,28 @@ kubectl describe pod -l app=service-quality-oracle
241
246
kubectl get pvc
242
247
243
248
# Check if volumes are mounted correctly
244
- kubectl exec -it deployment/service-quality -oracle -- ls -la /app/data
249
+ kubectl exec -it deployment/rewards-eligibility -oracle -- ls -la /app/data
245
250
```
246
251
247
252
### Debug Configuration
248
253
249
254
``` bash
250
255
# Check environment variables
251
- kubectl exec -it deployment/service-quality -oracle -- env | grep -E " (BIGQUERY|BLOCKCHAIN)"
256
+ kubectl exec -it deployment/rewards-eligibility -oracle -- env | grep -E " (BIGQUERY|BLOCKCHAIN)"
252
257
253
258
# Verify secrets are mounted
254
- kubectl exec -it deployment/service-quality -oracle -- ls -la /etc/secrets
259
+ kubectl exec -it deployment/rewards-eligibility -oracle -- ls -la /etc/secrets
255
260
```
256
261
257
262
## Security
258
263
259
- ✅ ** Never commit actual secrets** - ` config.secret.yaml ` files contain placeholders only
260
- ✅ ** Mainnet deployment safety checks** for production secrets
261
- ✅ ** Non-root containers** with dropped capabilities
262
- ✅ ** Service account** with minimal BigQuery permissions
263
- ✅ ** Private key** stored in Kubernetes secrets (base64 encoded)
264
- ✅ ** Resource limits** prevent resource exhaustion
265
- ✅ ** Workload Identity** configured for secure GCP access
264
+ ✅ ** Never commit actual secrets** - ` config.secret.yaml ` files contain placeholders only
265
+ ✅ ** Mainnet deployment safety checks** for production secrets
266
+ ✅ ** Non-root containers** with dropped capabilities
267
+ ✅ ** Service account** with minimal BigQuery permissions
268
+ ✅ ** Private key** stored in Kubernetes secrets (base64 encoded)
269
+ ✅ ** Resource limits** prevent resource exhaustion
270
+ ✅ ** Workload Identity** configured for secure GCP access
266
271
✅ ** SSD storage with retention** for data persistence
267
272
268
273
## Production Considerations
0 commit comments