Files
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

53 lines
1.5 KiB
Markdown

# 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
```bash
# 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