mirror of
https://github.com/helmfile/helmfile.git
synced 2026-09-30 06:02:58 +02:00
fix: configure kubedog rate limiter to prevent context cancellation (#2446)
This commit is contained in:
@@ -0,0 +1,186 @@
|
||||
# Example: Kubedog Resource Tracking Configuration
|
||||
|
||||
This example demonstrates various ways to configure kubedog resource tracking.
|
||||
|
||||
## Basic Example
|
||||
|
||||
```yaml
|
||||
releases:
|
||||
- name: simple-app
|
||||
namespace: default
|
||||
chart: ./charts/simple-app
|
||||
trackMode: kubedog
|
||||
```
|
||||
|
||||
Uses default QPS (100) and Burst (200).
|
||||
|
||||
## Customized Rate Limiting
|
||||
|
||||
```yaml
|
||||
releases:
|
||||
- name: high-throughput-app
|
||||
namespace: production
|
||||
chart: ./charts/app
|
||||
trackMode: kubedog
|
||||
# Increased limits for large-scale deployments
|
||||
kubedogQPS: 200
|
||||
kubedogBurst: 400
|
||||
trackTimeout: 600
|
||||
trackLogs: true
|
||||
trackKinds:
|
||||
- Deployment
|
||||
- StatefulSet
|
||||
```
|
||||
|
||||
## Multiple Releases with Different Settings
|
||||
|
||||
```yaml
|
||||
releases:
|
||||
# Small app - conservative limits
|
||||
- name: frontend
|
||||
namespace: web
|
||||
chart: ./charts/frontend
|
||||
trackMode: kubedog
|
||||
kubedogQPS: 50
|
||||
kubedogBurst: 100
|
||||
|
||||
# Medium app - default limits
|
||||
- name: backend
|
||||
namespace: api
|
||||
chart: ./charts/backend
|
||||
trackMode: kubedog
|
||||
|
||||
# Large app - increased limits
|
||||
- name: data-processor
|
||||
namespace: data
|
||||
chart: ./charts/processor
|
||||
trackMode: kubedog
|
||||
kubedogQPS: 150
|
||||
kubedogBurst: 300
|
||||
trackKinds:
|
||||
- Deployment
|
||||
- StatefulSet
|
||||
- Job
|
||||
```
|
||||
|
||||
## Environment-Specific Configuration
|
||||
|
||||
```yaml
|
||||
environments:
|
||||
development:
|
||||
values:
|
||||
- kubedogQPS: 50
|
||||
- kubedogBurst: 100
|
||||
staging:
|
||||
values:
|
||||
- kubedogQPS: 100
|
||||
- kubedogBurst: 200
|
||||
production:
|
||||
values:
|
||||
- kubedogQPS: 200
|
||||
- kubedogBurst: 400
|
||||
|
||||
releases:
|
||||
- name: myapp
|
||||
namespace: {{ .Environment.Name }}
|
||||
chart: ./charts/myapp
|
||||
trackMode: kubedog
|
||||
kubedogQPS: {{ .Values.kubedogQPS }}
|
||||
kubedogBurst: {{ .Values.kubedogBurst }}
|
||||
```
|
||||
|
||||
## With Global Defaults
|
||||
|
||||
```yaml
|
||||
helmDefaults:
|
||||
createNamespace: true
|
||||
timeout: 300
|
||||
|
||||
releases:
|
||||
- name: app1
|
||||
namespace: default
|
||||
chart: ./charts/app
|
||||
trackMode: kubedog
|
||||
# Uses release-specific settings
|
||||
kubedogQPS: 150
|
||||
kubedogBurst: 300
|
||||
|
||||
- name: app2
|
||||
namespace: default
|
||||
chart: ./charts/app
|
||||
trackMode: kubedog
|
||||
# Uses default QPS=100, Burst=200
|
||||
```
|
||||
|
||||
## Selective Tracking
|
||||
|
||||
```yaml
|
||||
releases:
|
||||
- name: complex-app
|
||||
namespace: default
|
||||
chart: ./charts/complex-app
|
||||
trackMode: kubedog
|
||||
kubedogQPS: 120
|
||||
kubedogBurst: 250
|
||||
# Only track deployments and jobs
|
||||
trackKinds:
|
||||
- Deployment
|
||||
- Job
|
||||
# Skip these resource types
|
||||
skipKinds:
|
||||
- ConfigMap
|
||||
- Secret
|
||||
- Ingress
|
||||
# Track specific resources only
|
||||
trackResources:
|
||||
- kind: Deployment
|
||||
name: main-app
|
||||
- kind: Job
|
||||
name: migration-job
|
||||
namespace: default
|
||||
```
|
||||
|
||||
## Testing the Configuration
|
||||
|
||||
To test your kubedog configuration:
|
||||
|
||||
```bash
|
||||
# Apply with kubedog tracking
|
||||
helmfile apply -n my-namespace -l app=myapp
|
||||
|
||||
# With debug logging
|
||||
helmfile apply -n my-namespace -l app=myapp --log-level debug
|
||||
|
||||
# With specific environment
|
||||
helmfile apply -e production -l app=myapp
|
||||
```
|
||||
|
||||
## Expected Output
|
||||
|
||||
When kubedog tracking is working correctly, you should see:
|
||||
|
||||
```
|
||||
Tracking 5 resources from release myapp with kubedog
|
||||
Tracking 5 resources with kubedog (filtered from 5 total)
|
||||
┌ Status progress
|
||||
│ DEPLOYMENT REPLICAS AVAILABLE UP-TO-DATE
|
||||
│ myapp-main 1/1 1 1
|
||||
└ Status progress
|
||||
All resources tracked successfully
|
||||
UPDATED RELEASES:
|
||||
NAME NAMESPACE CHART VERSION DURATION
|
||||
myapp default ./charts/app 1.0.0 1m32s
|
||||
```
|
||||
|
||||
## Troubleshooting Commands
|
||||
|
||||
```bash
|
||||
# Check current kubedog settings
|
||||
helmfile build -n my-namespace -l app=myapp | grep -A 5 "kubedog"
|
||||
|
||||
# Test with increased verbosity
|
||||
helmfile apply -n my-namespace -l app=myapp --log-level debug 2>&1 | grep -i kubedog
|
||||
|
||||
# Monitor API server requests (requires cluster access)
|
||||
kubectl get --raw /metrics | grep apiserver_request_count
|
||||
```
|
||||
@@ -0,0 +1,141 @@
|
||||
# Advanced Kubedog Configuration Examples
|
||||
|
||||
# Example 1: Basic kubedog tracking with custom QPS/Burst
|
||||
releases:
|
||||
- name: simple-app
|
||||
namespace: default
|
||||
chart: ./charts/simple-app
|
||||
trackMode: kubedog
|
||||
trackTimeout: 300
|
||||
trackLogs: true
|
||||
kubedogQPS: 50
|
||||
kubedogBurst: 100
|
||||
|
||||
---
|
||||
# Example 2: With resource filtering
|
||||
releases:
|
||||
- name: filtered-app
|
||||
namespace: production
|
||||
chart: ./charts/complex-app
|
||||
trackMode: kubedog
|
||||
trackTimeout: 600
|
||||
trackLogs: true
|
||||
trackKinds:
|
||||
- Deployment
|
||||
- StatefulSet
|
||||
skipKinds:
|
||||
- ConfigMap
|
||||
- Secret
|
||||
|
||||
---
|
||||
# Example 3: With specific resource tracking
|
||||
releases:
|
||||
- name: selective-tracking
|
||||
namespace: default
|
||||
chart: ./charts/microservices
|
||||
trackMode: kubedog
|
||||
trackResources:
|
||||
- kind: Deployment
|
||||
name: api-server
|
||||
namespace: default
|
||||
- kind: StatefulSet
|
||||
name: database
|
||||
namespace: default
|
||||
|
||||
---
|
||||
# Example 4: Production-grade configuration
|
||||
releases:
|
||||
- name: production-app
|
||||
namespace: production
|
||||
chart: ./charts/production-app
|
||||
trackMode: kubedog
|
||||
trackTimeout: 900
|
||||
trackLogs: true
|
||||
kubedogQPS: 30
|
||||
kubedogBurst: 60
|
||||
trackKinds:
|
||||
- Deployment
|
||||
- StatefulSet
|
||||
- DaemonSet
|
||||
- Job
|
||||
trackResources:
|
||||
- kind: Deployment
|
||||
name: frontend
|
||||
namespace: production
|
||||
- kind: Deployment
|
||||
name: backend
|
||||
namespace: production
|
||||
- kind: StatefulSet
|
||||
name: redis
|
||||
namespace: production
|
||||
|
||||
---
|
||||
# Example 5: With Helm values containing annotations (future feature)
|
||||
# Note: Annotation support is proposed but not yet implemented
|
||||
releases:
|
||||
- name: annotated-app
|
||||
namespace: default
|
||||
chart: ./charts/annotated-app
|
||||
trackMode: kubedog
|
||||
values:
|
||||
- values.yaml:
|
||||
# When annotation support is implemented, these would work:
|
||||
# metadata:
|
||||
# annotations:
|
||||
# helmfile.dev/track-termination-mode: "NonBlocking"
|
||||
# helmfile.dev/fail-mode: "HopeUntilEndOfDeployProcess"
|
||||
# helmfile.dev/failures-allowed-per-replica: "2"
|
||||
# helmfile.dev/log-regex: "^(ERROR|WARN)"
|
||||
# helmfile.dev/skip-logs-for-containers: "sidecar,init"
|
||||
# helmfile.dev/show-service-messages: "true"
|
||||
|
||||
---
|
||||
# Example 6: Multi-environment configuration
|
||||
environments:
|
||||
production:
|
||||
values:
|
||||
- kubedogQPS: 30
|
||||
- kubedogBurst: 60
|
||||
- trackTimeout: 900
|
||||
staging:
|
||||
values:
|
||||
- kubedogQPS: 100
|
||||
- kubedogBurst: 200
|
||||
- trackTimeout: 300
|
||||
|
||||
releases:
|
||||
- name: multi-env-app
|
||||
namespace: {{ .Environment.Name }}
|
||||
chart: ./charts/app
|
||||
trackMode: kubedog
|
||||
trackLogs: true
|
||||
kubedogQPS: {{ .Values.kubedogQPS }}
|
||||
kubedogBurst: {{ .Values.kubedogBurst }}
|
||||
trackTimeout: {{ .Values.trackTimeout }}
|
||||
|
||||
---
|
||||
# Example 7: With needs and tracking (tracking happens after dependencies)
|
||||
releases:
|
||||
- name: database
|
||||
namespace: default
|
||||
chart: ./charts/postgresql
|
||||
trackMode: kubedog
|
||||
trackTimeout: 600
|
||||
|
||||
- name: backend
|
||||
namespace: default
|
||||
chart: ./charts/backend
|
||||
needs:
|
||||
- database
|
||||
trackMode: kubedog
|
||||
trackTimeout: 300
|
||||
trackLogs: true
|
||||
|
||||
- name: frontend
|
||||
namespace: default
|
||||
chart: ./charts/frontend
|
||||
needs:
|
||||
- backend
|
||||
trackMode: kubedog
|
||||
trackTimeout: 300
|
||||
trackLogs: true
|
||||
Reference in New Issue
Block a user