helmfile/test/integration/test-cases/kubedog-tracking
yxxhero 6e21671228
feat: kubedog integration with unified resource handling (#2383)
* feat: add kubedog-based resource tracking integration

Add kubedog tracking as an alternative to Helm's --wait flag with:
- Real-time deployment progress tracking
- Container log streaming
- Fine-grained resource filtering (trackKinds/skipKinds/trackResources)

Features:
- New pkg/resource package for unified manifest parsing and filtering
- New pkg/kubedog package wrapping kubedog library
- CLI flags: --track-mode, --track-timeout, --track-logs
- Helmfile YAML support for trackMode, trackTimeout, trackLogs, trackKinds, skipKinds, trackResources
- Case-insensitive kind matching for filtering
- Multi-context support with proper kubeconfig/kubeContext handling

Tracking supports: Deployment, StatefulSet, DaemonSet, Job

Resource filtering priority (highest to lowest):
1. trackResources - explicit resource whitelist
2. skipKinds - blacklist specific kinds
3. trackKinds - whitelist specific kinds

Integration:
- Disable Helm --wait when using kubedog tracking
- Track after successful Helm sync/apply
- Respect release.Namespace as fallback for resources without namespace
- Use getKubeContext() for correct cluster targeting

Tests:
- Unit tests for resource filtering and kubedog options
- Integration test with httpbin chart
- E2E snapshot tests for YAML serialization
- Documentation in docs/advanced-features.md

Signed-off-by: yxxhero <aiopsclub@163.com>

* fix: address PR #2383 review comments (round 4)

1. resource/filter.go: Skip empty whitelist entries in matchWhitelist
   - At least one field (kind/name/namespace) must be specified
   - Prevents matching all resources with empty TrackResources entries

2. config/apply.go: Add ValidateConfig for track-mode validation
   - Validate --track-mode must be 'helm' or 'kubedog'
   - Reject invalid values like --track-mode foo

3. config/sync.go: Add ValidateConfig for track-mode validation
   - Same validation as apply command
   - Ensures consistent behavior across commands

Signed-off-by: yxxhero <aiopsclub@163.com>

---------

Signed-off-by: yxxhero <aiopsclub@163.com>
2026-03-02 17:15:12 +08:00
..
README.md
helmfile.yaml.gotmpl

README.md

Kubedog Integration Test

This test validates the kubedog resource tracking integration with Helmfile.

What it tests

  1. Basic kubedog tracking: Deploys httpbin with trackMode: kubedog enabled
  2. Whitelist filtering: Uses trackKinds to only track Deployment resources
  3. Specific resource tracking: Uses trackResources to track specific resources by name
  4. CLI flags usage: Tests --track-mode and --track-timeout flags
  5. Cleanup: Ensures all releases are properly deleted

Prerequisites

  • Kubernetes cluster (minikube for local testing)
  • Helm 3.x installed
  • kubedog library integrated (built into Helmfile)
  • kubectl configured to access the cluster

Test Cases

httpbin-basic

  • Simple deployment with kubedog tracking enabled
  • trackMode: kubedog
  • trackTimeout: 60 seconds
  • trackLogs: false

httpbin-with-whitelist

  • Deployment with resource kind whitelist
  • Only tracks Deployment resources
  • Skips ConfigMap and Secret resources

httpbin-with-resources

  • Deployment with specific resource tracking
  • Tracks only the deployment by name and kind

Running the test

# Run all integration tests including kubedog
./test/integration/run.sh

# Run only kubedog test (if supported by your test framework)
# Note: Currently all tests run together via run.sh

Expected behavior

  1. All three httpbin deployments should be created successfully
  2. Kubedog should track the resources during deployment
  3. Deployments should reach ready state
  4. All releases should be cleaned up after tests