Commit Graph

47 Commits

Author SHA1 Message Date
cappyzawa 43b3104555
Add object-level workload identity support to Google Pub/Sub notifier
Add support for object-level GCP workload identity authentication to enable
individual Providers to authenticate using their own ServiceAccount without
needing to manage JSON credentials. This extends beyond the existing
controller-level workload identity that is automatically handled by
Google libraries.

The implementation maintains backward compatibility by prioritizing
JSON credentials when both authentication methods are available.
Proxy support is also added following the Azure DevOps pattern
for consistency across notifiers.

This change is part of the broader effort to support multi-tenant
workload identity across Flux controllers (RFC-0010).

Signed-off-by: cappyzawa <cappyzawa@gmail.com>
2025-08-03 07:35:37 +09:00
cappyzawa 98ecf2de79
Add mTLS support for postMessage-based notifiers
- Implement mTLS support for 10 postMessage notifiers
- Unify constructor signatures with tlsConfig parameter
- Make TLSConfig field public for consistency
- Update factory functions and fuzz tests
- Add mTLS test cases
- Replace CertPool with TLSConfig using runtime/secrets

Signed-off-by: cappyzawa <cappyzawa@gmail.com>
2025-07-03 21:39:16 +09:00
cappyzawa 8858332c27
Add ProxySecretRef field to Provider API
Introduce spec.proxySecretRef to enable secure proxy configuration
through dedicated Secrets. This provides a more secure alternative
to the deprecated spec.proxy field and secret proxy key.

The new field integrates with runtime/secrets for unified proxy
handling and maintains backward compatibility. Deprecation warnings
are implemented for existing proxy configuration methods.

Proxy priority: ProxySecretRef > secret proxy key > spec.proxy

Signed-off-by: cappyzawa <cappyzawa@gmail.com>
2025-06-27 23:31:02 +09:00
Dipti Pai 0beb3d02f7 Managed Identity support for Azure Event Hubs. Changes include -
- If authentication token is not specified in provider, attempt to get the token using workload identity.
= Add new field .spec.serviceAccountName to support multi-tenant workload identity as defined in RFC-0010 to use an identity with a service account other than the notification-controller.
- Use proxy to get the token if specified in provider spec.
- Cache the tokens if enabled in the notification controller options.
- If address has SAS connection string, use that for authentication, this takes priority over token-authentication
- If static JWT token is specified in the secret reference, use it for authentication, this takes priority over workload identity-acquired token.
- Update RBAC for notification-controller to be able to create service token requests.
- Add unit tests for the 3 authentication mechanisms (SAS, JWT, managed identity).
- Add documentation for using single-tenant and multi-tenant approaches of workload identity with azureeventhub provider.
- Add operation post to github helpers and provider controller for cache event metrics
- Enable token cache by default.

Signed-off-by: Dipti Pai <diptipai89@outlook.com>

review comments

Signed-off-by: Dipti Pai <diptipai89@outlook.com>

enable cache by default

Signed-off-by: Dipti Pai <diptipai89@outlook.com>
2025-05-05 12:03:52 -07:00
kathleen french 1967bc0c74 feat: support CEL expressions to construct commit statuses for v1beta3 provider types
Signed-off-by: kathleen french <kfrench@groq.com>
2025-03-14 08:53:55 -04:00
Kevin McDermott 28deef923f
Implement Receiver resource filtering with CEL
Signed-off-by: Kevin McDermott <bigkevmcd@gmail.com>
Co-authored-by: Matheus Pimenta <matheuscscp@gmail.com>
2025-02-10 16:21:50 +00:00
Matheus Pimenta 939a16620f
[RFC-0008] Custom Event Metadata from Annotations
Signed-off-by: Matheus Pimenta <matheuscscp@gmail.com>
2025-01-10 13:19:15 +00:00
Sunny 7f5eea0a2e Add .spec.interval in v1beta3 Provider
For backwards compatibility with v1beta2 Provider, add .spec.interval
with deprecation marker.
Interval was an optional field in v1beta2 with internal default. Only
the users who had explicitly set intervals would have encountered this
incompatibility error after upgrade.

Signed-off-by: Sunny <darkowlzz@protonmail.com>
2023-12-13 15:06:10 +05:30
Sunny 4bf469e61b Add Alert and Provider v1beta3 API
v1beta3 API for Alert and Provider makes them static objects, removing
the status subresource and spec fields that are relevant to dynamic
objects with reconcilers.

Signed-off-by: Sunny <darkowlzz@protonmail.com>
2023-11-28 16:17:03 +05:30
Somtochi Onyekwere 23e733b9c7 use kubernetes tls style secret in provider
Signed-off-by: Somtochi Onyekwere <somtochionyekwere@gmail.com>
2023-08-23 14:06:15 +01:00
Matheus Pimenta 13d3d8f9ee
Lift HTTP/S validation from Provider spec.address
Signed-off-by: Matheus Pimenta <matheuscscp@gmail.com>
2023-07-04 10:36:04 +03:00
Matheus Pimenta 4c1978bc73 Fix Alert .spec.eventMetadata documentation
Signed-off-by: Matheus Pimenta <matheuscscp@gmail.com>
2023-06-05 16:21:29 +05:30
Matheus Pimenta 8c11d8a19b Fix Alert .spec.eventMetadata behavior
Signed-off-by: Matheus Pimenta <matheuscscp@gmail.com>
2023-05-24 11:27:27 +01:00
Matheus Pimenta e9d1fb3d86 Add event metadata field to Alert spec
Signed-off-by: Matheus Pimenta <matheuscscp@gmail.com>
2023-05-11 18:14:49 +01:00
Matheus Pimenta 9b7a80942f Add InclusionList to Alert CRD
Signed-off-by: Matheus Pimenta <matheuscscp@gmail.com>
Co-authored-by: Stefan Prodan <stefan.prodan@gmail.com>
2023-05-02 10:05:16 +01:00
Sunny 24509ce458
receiver/v1: Remove deprecated .status.url field
Receiver .status.url was deprecated in v1beta2 API and replaced with
.status.webhookPath. Remove it from v1 API and all references to it.

Signed-off-by: Sunny <darkowlzz@protonmail.com>
2023-04-21 20:38:09 +05:30
Max Jonas Werner dbeb5a3241
document receivers.spec.resources.matchLabels in v1 API
This functionality has been implemented in #482 but we only want to
expose it in v1 of the API.

Signed-off-by: Max Jonas Werner <mail@makk.es>
2023-03-30 15:47:49 +02:00
Max Jonas Werner ec03bd20a3
Introduce v1 API and bump Receiver version to v1
This commit bumps the Receiver API version to v1 in preparation of
the Flux GitOps GA milestone
(https://fluxcd.io/roadmap/#flux-gitops-ga-q1-2023).

We are now actively maintaining two versions of the notification API
group in parallel: v1 which currently only holds the Receiver kind and
v1beta2 for all other kinds.

Since we haven't run into this situation before, I had to change the
way we expose the API docs in ./docs/api: The directory now has
sub-directories for each active API version. Therefore we need to
change our scripts in the website repository to take this change into
account so that we expose both API group version at
https://fluxcd.io/flux/components/notification/api/. This change is
implemented in https://github.com/fluxcd/website/pull/1427.

refs #436

Signed-off-by: Max Jonas Werner <mail@makk.es>
2023-03-30 15:40:54 +02:00
Max Jonas Werner e7c8c7b6a8
un-document receivers.spec.resources.matchLabels
This has been introduced in #482 but we actually want this feature to
only be available in v1 of the API. A follow-up PR will re-add this to
the v1 API.

Signed-off-by: Max Jonas Werner <mail@makk.es>
2023-03-27 17:20:01 +02:00
Raffael Sahli 57f62f400c
feat: support multi receiver by matchLabels
Signed-off-by: Raffael Sahli <raffael.sahli@doodle.com>
2023-03-20 08:11:30 +00:00
Stefan Prodan d16588a193 Deprecate `Receiver.status.url` in favor of `.status.webhookPath`
Signed-off-by: Stefan Prodan <stefan.prodan@gmail.com>
2022-12-09 12:05:51 +00:00
Stefan Prodan 70c678f691 Make interval optional
Signed-off-by: Stefan Prodan <stefan.prodan@gmail.com>
2022-12-09 12:05:51 +00:00
Stefan Prodan ae65712eb6 Add reconciliation interval to providers and receivers
Periodically reconcile providers and receivers with their
Secret references to surface config errors after initialisation.

Signed-off-by: Stefan Prodan <stefan.prodan@gmail.com>
2022-12-09 12:05:51 +00:00
Stefan Prodan 2b35ef5845 API: Consolidate the documentation style for v1beta2
Signed-off-by: Stefan Prodan <stefan.prodan@gmail.com>
2022-12-09 12:05:51 +00:00
Stefan Prodan 974a77da00 Refactor reconcilers and introduce v1beta2 API
Signed-off-by: Stefan Prodan <stefan.prodan@gmail.com>
2022-12-09 11:03:53 +00:00
Somtochi Onyekwere 25eeaf46dd Add .spec.timeout to Provider
Signed-off-by: Somtochi Onyekwere <somtochionyekwere@gmail.com>
2022-08-31 11:25:09 +01:00
Somtochi Onyekwere 519b6a5c5c Add LabelSelectors for Event Sources
Signed-off-by: Somtochi Onyekwere <somtochionyekwere@gmail.com>
2022-02-10 11:09:39 +01:00
Somtochi Onyekwere 19a0daa906 Use conditions helper in reconciler
Co-authored-by: Piaras Hoban <piaras@weave.works>
Co-authored-by: Hidde Beydals <hiddeco@users.noreply.github.com>
Co-authored-by: souleb <bah.soule@gmail.com>
Signed-off-by: Somtochi Onyekwere <somtochionyekwere@gmail.com>
2021-11-01 14:20:12 +01:00
Max Jonas Werner 2d55e609fa
feat: set default observedGeneration to -1 on CRDs
This sets the `status.observedGeneration` field to -1 by default. This
is a follow-up to https://github.com/fluxcd/helm-controller/pull/294,
porting the same code to the notification-controller so that all Flux
2 controllers work the same way in this regard.

Signed-off-by: Max Jonas Werner <mail@makk.es>
2021-08-27 17:18:38 +02:00
Philip Laine 8f3b685f17 Add self signed cert to provider
Signed-off-by: Philip Laine <philip.laine@gmail.com>
2021-04-15 00:08:59 +02:00
Somtochi Onyekwere 71bbb3cf82 Add observedGeneration to status of alert and receivers
Signed-off-by: Somtochi Onyekwere <somtochionyekwere@gmail.com>
2021-03-25 15:55:27 +01:00
Stefan Prodan 6c51b28411
Update dependencies
- sigs.k8s.io/controller-runtime v0.8.2
- sigs.k8s.io/controller-tools/cmd/controller-gen v0.4.1
- fluxcd/pkg/runtime v0.8.3

Signed-off-by: Stefan Prodan <stefan.prodan@gmail.com>
2021-02-24 15:40:54 +02:00
Stefan Prodan 5c9e95ca02
Implement regex exclusions for alerts
Signed-off-by: Stefan Prodan <stefan.prodan@gmail.com>
2021-02-08 15:45:11 +02:00
Stefan Prodan dff79355ec
Update fluxcd/pkg/runtime to v0.8.0
Signed-off-by: Stefan Prodan <stefan.prodan@gmail.com>
2021-01-22 10:23:47 +02:00
Joshua Mühlfort 57e243d9ff Add hint about used "address" data key to the Provider CRD's SecretRef
Signed-off-by: Joshua Mühlfort <muehlfort@gonicus.de>
2021-01-06 13:04:08 +01:00
Stefan Prodan f2e96a88e0
Add summary field to Alert API
Signed-off-by: Stefan Prodan <stefan.prodan@gmail.com>
2020-12-06 11:36:41 +02:00
Gert Dewit 27bd991f53
Fix "Notification API reference" title
Signed-off-by: Gert Dewit <gert@hobbiton.be>
2020-11-24 09:45:03 +01:00
Aurel Canciu ce214b9fa9
Refactor to adopt k8s standardized Condition type
Updates to use metav1.Condition type and removes references for
deprecated corev1.Condition* constants and uses the new k8s api/meta
helpers in place of the old pkg/apis/meta types.

Signed-off-by: Aurel Canciu <aurelcanciu@gmail.com>
2020-11-19 19:51:40 +02:00
Stefan Prodan 46666dae22
Add URL prefix validation to CRDs
Signed-off-by: Stefan Prodan <stefan.prodan@gmail.com>
2020-10-17 15:58:49 +03:00
Stefan Prodan 2f14e4b74b
Add Proxy field to Provider API
Signed-off-by: Stefan Prodan <stefan.prodan@gmail.com>
2020-10-17 14:19:54 +03:00
stefanprodan d90acda9e6 Promote API to v1beta1 2020-09-30 18:21:17 +03:00
stefanprodan d4e3755515 Implement `fluxcd/pkg/meta/api` in APIs 2020-09-30 11:33:32 +03:00
Philip Laine eb7a25506f Change default value to use default annotation 2020-09-15 19:54:17 +02:00
Hidde Beydals bb7c241c83 Change CRD domain 'notification.toolkit.fluxcd.io'
Due to required domain changes for the helm-controller so that it
can co-exist in a cluster with the Helm Operator, other Toolkit
components are moving to a *.toolklit.fluxcd.io domain too.
2020-07-30 22:32:07 +02:00
stefanprodan 28e8477e29 Implement GitHub receiver 2020-07-04 08:19:06 +03:00
stefanprodan 99fc71c17a Add receiver to API 2020-07-03 16:38:17 +03:00
stefanprodan 5c1768c426 Generate API documentation 2020-07-02 09:45:02 +03:00