helmfile/examples
yxxhero b75c61b2e6 fix: configure kubedog rate limiter to prevent context cancellation
Fixes #2445

The default Kubernetes client rate limiter settings were too restrictive,
causing context cancellation errors when kubedog's reflector infrastructure
tried to watch multiple resources simultaneously. When the deployment becomes
ready before the rate limiter releases the request, the context gets canceled.

This fix:
- Increases default QPS from 5 to 100 and Burst from 10 to 200
- Makes QPS and Burst configurable per release via kubedogQPS and kubedogBurst
- Uses direct client-go configuration instead of kubedog's kube.Init
- Adds comprehensive documentation and examples

Users can now tune these settings based on their cluster size and requirements:
- Small clusters: QPS=50, Burst=100
- Medium clusters: QPS=100, Burst=200 (default)
- Large clusters: QPS=200, Burst=400

Signed-off-by: yxxhero <aiopsclub@163.com>
2026-03-03 08:08:42 +08:00
..
charts feat: add Helm 4 support while maintaining Helm 3 compatibility (#2262) 2025-11-19 07:49:30 +08:00
deployments update examples info (#658) 2023-01-26 07:34:43 +09:00
remote add example to demonstrate remote helmfiles & remote charts 2022-02-12 17:52:52 +09:00
values Adding in examples for readme 2017-10-03 20:23:55 -05:00
KUBEDOG_CONFIG_EXAMPLES.md fix: configure kubedog rate limiter to prevent context cancellation 2026-03-03 08:08:42 +08:00
README.md replace all mozilla/sops with getsops/sops (#1028) 2023-09-17 18:50:21 -05:00

README.md

Helmfile practical examples and advanced usages

Managing oneshot-jobs with Helmfile

In case you want to manage oneshot-jobs like a report generation or a database migration and so on, add a dedicated release spec for the job in helmfile.yaml like:

repositories:
  - name: yourorg
    url: https://yourorg.example.com/charts

releases:
  - name: dbmigrator
    labels:
      job: dbmigrator
    chart: ./dbmigrator
    # DB host, port, and connection opts for the environment
    values:
    - "deploy/environments/{{ env "RAILS_ENV" }}/values.yaml"
    # DB username and password encrypted with helm-secrets (getsops/sops)
    secrets:
    - "deploy/environments/{{ env "RAILS_ENV" }}/secrets.yaml"

You would then start a database migration job by executing:

# Start a database migration for the prod environment
$ RAILS_ENV=prod helmfile --selector job=dbmigrator sync

# Tail log until you are satisfied
$ kubectl logs -l job=dbmigrator

For more context, see this issue.