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.

This part of our documentation refers to our vintage product. The content may be not valid anymore for our current product. Please check our new documentation hub for the latest state of our docs.