ObservabilityAlertsNotificationChannel
An ObservabilityAlertsNotificationChannel defines a destination for alert notifications. These resources are environment-bound, meaning each channel is associated with a specific OpenChoreo environment.
In each environment, one ObservabilityAlertsNotificationChannel can be marked as the default. If an ObservabilityAlertRule is created without explicitly specifying a notificationChannel, it will automatically use the default channel for that environment.
Currently, only email notifications are supported, but other types such as Slack or Webhooks will be added in the future.
API Versionβ
openchoreo.dev/v1alpha1
Resource Definitionβ
Metadataβ
ObservabilityAlertsNotificationChannel resources are namespace-scoped.
apiVersion: openchoreo.dev/v1alpha1
kind: ObservabilityAlertsNotificationChannel
metadata:
name: <channel-name>
namespace: <org-namespace>
Spec Fieldsβ
| Field | Type | Required | Description |
|---|---|---|---|
environment | string | Yes | Name of the OpenChoreo environment this channel belongs to (Immutable) |
isEnvDefault | boolean | No | If true, this is the default channel for the environment. Default channels are used by alert rules that don't specify a channel. Defaults to false. First channel created in an environment will be marked as the default |
type | NotificationChannelType | Yes | The type of notification channel (currently only email) |
config | NotificationChannelConfig | Yes | Channel-specific configuration |
NotificationChannelTypeβ
| Value | Description |
|---|---|
email | Email notification channel |
Other notification channel types (e.g., Slack, Webhooks) will be added in the future.
NotificationChannelConfigβ
For type: email, the configuration includes the following fields:
| Field | Type | Required | Description |
|---|---|---|---|
from | string | Yes | The sender email address |
to | string[] | Yes | List of recipient email addresses (minimum 1) |
smtp | SMTPConfig | Yes | SMTP server configuration |
template | EmailTemplate | No | Email subject and body templates using CEL expressions |
SMTPConfigβ
| Field | Type | Required | Description |
|---|---|---|---|
host | string | Yes | SMTP server hostname |
port | integer | Yes | SMTP server port |
auth | SMTPAuth | No | SMTP authentication credentials |
tls | SMTPTLSConfig | No | TLS configuration for SMTP |
SMTPAuthβ
| Field | Type | Required | Description |
|---|---|---|---|
username | SecretValueFrom | No | Username for SMTP authentication (inline or secret ref) |
password | SecretValueFrom | No | Password for SMTP authentication (inline or secret ref) |
SMTPTLSConfigβ
| Field | Type | Required | Description |
|---|---|---|---|
insecureSkipVerify | boolean | No | If true, skips TLS certificate verification (not recommended for production) |
EmailTemplateβ
Defines the email template using CEL expressions.
| Field | Type | Required | Description |
|---|---|---|---|
subject | string | Yes | CEL expression for the email subject (e.g., "[${alert.severity}] - ${alert.name} Triggered") |
body | string | Yes | CEL expression for the email body |
SecretValueFromβ
Defines how to obtain a secret value.
| Field | Type | Required | Description |
|---|---|---|---|
secretKeyRef | SecretKeyRef | No | Reference to a key in a Kubernetes secret |
SecretKeyRefβ
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Name of the secret |
namespace | string | Yes | Namespace of the secret |
key | string | Yes | Key within the secret |
Examplesβ
Email Notification Channelβ
apiVersion: openchoreo.dev/v1alpha1
kind: ObservabilityAlertsNotificationChannel
metadata:
name: prod-email-notifications
namespace: my-org
spec:
environment: production
isEnvDefault: true
type: email
config:
from: "alerts@example.com"
to:
- "admin@example.com"
- "devops@example.com"
smtp:
host: "smtp.example.com"
port: 587
auth:
username:
secretKeyRef:
name: smtp-credentials
key: username
password:
secretKeyRef:
name: smtp-credentials
key: password
template:
subject: "[OpenChoreo] ${alert.severity}: ${alert.name}"
body: "Alert ${alert.name} triggered at ${alert.startsAt}.\n\nDescription: ${alert.description}"
Related Resourcesβ
- ObservabilityAlertRule - Rules that trigger notifications to these channels
- Environment - Notification channels are environment-specific
- ObservabilityPlane - Provides the underlying observability infrastructure