silence-operator release v0.17.0

Added

  • Add advanced filtering capabilities for both v1alpha1 and v1alpha2 controllers:
    • Add silence selector feature to filter Silence resources by labels (configure via --silence-selector flag).
    • Add namespace selector for v1alpha2 controller to restrict watched namespaces (configure via --namespace-selector flag).
  • Allow filtering of Silence custom resources based on a label selector. The operator will only process Silence CRs that match the selector provided via the --silence-selector command-line flag or the silenceSelector Helm chart value. If no selector is provided, all Silence CRs are processed.
  • Add new observability.giantswarm.io/v1alpha2 API with namespace-scoped Silence CRD for improved multi-tenancy.
    • Add MatchType enum field using Alertmanager operator symbols (=, !=, =~, !~) for intuitive matching logic.
    • Add SilenceV2Reconciler controller to handle v1alpha2 resources while maintaining full backward compatibility with v1alpha1.
    • Add comprehensive field validation: matcher names (1-256 chars), values (max 1024 chars), minimum 1 matcher required.
    • Add printer columns to v1alpha2 CRD for better kubectl get silences output showing Age.
  • Add automated migration script (hack/migrate-silences.sh) for v1alpha1 to v1alpha2 conversion.
    • Automatically converts boolean matcher fields (isRegex/isEqual) to enum format (matchType).
    • Intelligently preserves user annotations/labels while filtering out Kubernetes and FluxCD system metadata.
    • Supports dry-run mode for safe migration testing.
  • Add comprehensive migration documentation (MIGRATION.md) with examples and best practices.
  • Add clean service layer architecture (pkg/service/) separating business logic from Kubernetes controller concerns.

Changed

  • BREAKING (v1alpha2 only): Replace isRegex and isEqual boolean fields with single matchType enum field using Alertmanager symbols.
  • BREAKING (v1alpha2 only): Change from cluster-scoped to namespace-scoped resources for better multi-tenancy and RBAC isolation.
  • BREAKING (v1alpha2 only): Remove deprecated fields in v1alpha2: targetTags, owner, postmortem_url, and issue_url for cleaner API design.
  • Improve code organization with dependency injection and clear separation between controller logic and business logic.

Deprecated

  • The monitoring.giantswarm.io/v1alpha1 API is now considered legacy. New deployments should use observability.giantswarm.io/v1alpha2. Migration Note: Existing v1alpha1 silences continue to work unchanged. Use the automated migration script and see MIGRATION.md for detailed guidance.