93 lines
2.0 KiB
Markdown
93 lines
2.0 KiB
Markdown
# Provider
|
|
|
|
The `Provider` API defines how events are encoded and the webhook address where they are dispatched.
|
|
|
|
## Specification
|
|
|
|
Spec:
|
|
|
|
```go
|
|
type ProviderSpec struct {
|
|
// Type of provider
|
|
// +kubebuilder:validation:Enum=slack;discord;msteams;rocket;generic
|
|
// +required
|
|
Type string `json:"type"`
|
|
|
|
// Alert channel for this provider
|
|
// +optional
|
|
Channel string `json:"channel,omitempty"`
|
|
|
|
// Bot username for this provider
|
|
// +optional
|
|
Username string `json:"username,omitempty"`
|
|
|
|
// HTTP(S) webhook address of this provider
|
|
// +optional
|
|
Address string `json:"address,omitempty"`
|
|
|
|
// Secret reference containing the provider webhook URL
|
|
// +optional
|
|
SecretRef *corev1.LocalObjectReference `json:"secretRef,omitempty"`
|
|
}
|
|
```
|
|
|
|
Notification providers:
|
|
|
|
* Slack
|
|
* Discord
|
|
* Microsoft Teams
|
|
* Rocket
|
|
* Generic webhook
|
|
|
|
Status:
|
|
|
|
```go
|
|
// ProviderStatus defines the observed state of Provider
|
|
type ProviderStatus struct {
|
|
// +optional
|
|
Conditions []Condition `json:"conditions,omitempty"`
|
|
}
|
|
```
|
|
|
|
Status condition types:
|
|
|
|
```go
|
|
const (
|
|
// ReadyCondition represents the fact that a given object has passed
|
|
// validation and was acknowledge by the controller.
|
|
ReadyCondition string = "Ready"
|
|
)
|
|
```
|
|
|
|
## Example
|
|
|
|
```yaml
|
|
apiVersion: notification.fluxcd.io/v1alpha1
|
|
kind: Provider
|
|
metadata:
|
|
name: slack
|
|
namespace: gitops-system
|
|
spec:
|
|
type: slack
|
|
channel: general
|
|
# webhook address (ignored if secretRef is specified)
|
|
address: https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK
|
|
# secret containing the webhook address (optional)
|
|
secretRef:
|
|
name: webhook-url
|
|
```
|
|
|
|
Webhook URL secret:
|
|
|
|
```sh
|
|
kubectl -n gitops-system create secret generic webhook-url \
|
|
--from-literal=address=https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK
|
|
```
|
|
|
|
Note that the secret must contain an `address` field.
|
|
|
|
The provider type can be: `slack`, `msteams`, `rocket`, `discord` or `generic`.
|
|
|
|
When type `generic` is specified, the notification controller will post the
|
|
incoming [event](event.md) in JSON format to the webhook address.
|