Skip to content

Commit c7bbe3b

Browse files
committed
feat: add Knative integration for notifications
- Add CloudEvents sink deployment for eoapi-notifier integration - Configure dynamic secret name for PostgreSQL connection - Add local development configuration with reduced resources - Support both CI and local test environments
1 parent 212f0c9 commit c7bbe3b

File tree

14 files changed

+720
-6
lines changed

14 files changed

+720
-6
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1414
- Base local development values file (`local-base-values.yaml`)
1515
- Unified local cluster management with `CLUSTER_TYPE` variable
1616
- Improved CI and local debugging; added debug-deployment.sh script
17+
- Added knative in CI to test eoapi-notifier.
1718

1819
## [0.7.12] - 2025-10-17
1920

charts/eoapi/Chart.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ dependencies:
5454
repository: "https://devseed.com/eoapi-k8s/"
5555
condition: postgrescluster.enabled
5656
- name: eoapi-notifier
57-
version: 0.0.8
57+
version: 0.0.9
5858
repository: "oci://ghcr.io/developmentseed/charts"
5959
condition: eoapi-notifier.enabled
60+
- name: knative-operator
61+
version: 1.17.8
62+
repository: https://knative.github.io/operator
63+
condition: knative.enabled

charts/eoapi/local-k3s-values.yaml

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,65 @@ ingress:
77
className: "traefik"
88
annotations:
99
traefik.ingress.kubernetes.io/router.entrypoints: web
10+
11+
# Knative components for CloudEvents
12+
knative:
13+
enabled: true
14+
cloudEventsSink:
15+
enabled: true
16+
17+
# eoapi-notifier configuration with CloudEvents output
18+
eoapi-notifier:
19+
enabled: true
20+
waitForKnativeCRDs: false
21+
config:
22+
logLevel: DEBUG
23+
sources:
24+
- type: pgstac
25+
config:
26+
channel: pgstac_items_change
27+
connection:
28+
existingSecret:
29+
name: "" # Set dynamically by deploy script
30+
keys:
31+
username: "user"
32+
password: "password"
33+
host: "host"
34+
port: "port"
35+
database: "dbname"
36+
outputs:
37+
- type: cloudevents
38+
config:
39+
source: /eoapi/pgstac
40+
event_type: org.eoapi.stac.item
41+
destination:
42+
ref:
43+
apiVersion: serving.knative.dev/v1
44+
kind: Service
45+
name: eoapi-cloudevents-sink
46+
resources:
47+
requests:
48+
cpu: "50m"
49+
memory: "64Mi"
50+
limits:
51+
cpu: "200m"
52+
memory: "128Mi"
53+
54+
# Reduce PostgreSQL resources for local development
55+
postgrescluster:
56+
instances:
57+
- name: "postgres"
58+
replicas: 1
59+
dataVolumeClaimSpec:
60+
accessModes:
61+
- "ReadWriteOnce"
62+
resources:
63+
requests:
64+
storage: "1Gi"
65+
resources:
66+
requests:
67+
cpu: "100m"
68+
memory: "512Mi"
69+
limits:
70+
cpu: "500m"
71+
memory: "1Gi"

charts/eoapi/local-minikube-values.yaml

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,65 @@ ingress:
88
annotations:
99
nginx.ingress.kubernetes.io/rewrite-target: /$2
1010
nginx.ingress.kubernetes.io/use-regex: "true"
11+
12+
# Knative components for CloudEvents
13+
knative:
14+
enabled: true
15+
cloudEventsSink:
16+
enabled: true
17+
18+
# eoapi-notifier configuration with CloudEvents output
19+
eoapi-notifier:
20+
enabled: true
21+
waitForKnativeCRDs: false
22+
config:
23+
logLevel: DEBUG
24+
sources:
25+
- type: pgstac
26+
config:
27+
channel: pgstac_items_change
28+
connection:
29+
existingSecret:
30+
name: "" # Set dynamically by deploy script
31+
keys:
32+
username: "user"
33+
password: "password"
34+
host: "host"
35+
port: "port"
36+
database: "dbname"
37+
outputs:
38+
- type: cloudevents
39+
config:
40+
source: /eoapi/pgstac
41+
event_type: org.eoapi.stac.item
42+
destination:
43+
ref:
44+
apiVersion: serving.knative.dev/v1
45+
kind: Service
46+
name: eoapi-cloudevents-sink
47+
resources:
48+
requests:
49+
cpu: "50m"
50+
memory: "64Mi"
51+
limits:
52+
cpu: "200m"
53+
memory: "128Mi"
54+
55+
# Reduce PostgreSQL resources for local development
56+
postgrescluster:
57+
instances:
58+
- name: "postgres"
59+
replicas: 1
60+
dataVolumeClaimSpec:
61+
accessModes:
62+
- "ReadWriteOnce"
63+
resources:
64+
requests:
65+
storage: "1Gi"
66+
resources:
67+
requests:
68+
cpu: "100m"
69+
memory: "512Mi"
70+
limits:
71+
cpu: "500m"
72+
memory: "1Gi"
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
apiVersion: serving.knative.dev/v1
2+
kind: Service
3+
metadata:
4+
name: eoapi-cloudevents-sink
5+
namespace: eoapi
6+
spec:
7+
template:
8+
metadata:
9+
annotations:
10+
autoscaling.knative.dev/minScale: "1"
11+
autoscaling.knative.dev/maxScale: "1"
12+
spec:
13+
containers:
14+
- name: cloudevents-sink
15+
image: gcr.io/knative-samples/helloworld-go
16+
ports:
17+
- containerPort: 8080
18+
env:
19+
- name: TARGET
20+
value: "CloudEvents Sink"
21+
resources:
22+
requests:
23+
cpu: 100m
24+
memory: 128Mi
25+
limits:
26+
cpu: 200m
27+
memory: 256Mi
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
{{- $hasCloudEventsOutput := false }}
2+
{{- range (index .Values "eoapi-notifier").outputs }}
3+
{{- if eq .type "cloudevents" }}
4+
{{- $hasCloudEventsOutput = true }}
5+
{{- end }}
6+
{{- end }}
7+
{{- if and (index .Values "eoapi-notifier").enabled .Values.knative.enabled .Values.knative.cloudEventsSink.enabled $hasCloudEventsOutput }}
8+
---
9+
apiVersion: serving.knative.dev/v1
10+
kind: Service
11+
metadata:
12+
name: eoapi-cloudevents-sink
13+
namespace: {{ .Release.Namespace }}
14+
labels:
15+
{{- include "eoapi.labels" . | nindent 4 }}
16+
app.kubernetes.io/component: cloudevents-sink
17+
annotations:
18+
helm.sh/hook: "post-install,post-upgrade"
19+
helm.sh/hook-weight: "10"
20+
helm.sh/hook-delete-policy: "before-hook-creation"
21+
spec:
22+
template:
23+
metadata:
24+
annotations:
25+
autoscaling.knative.dev/minScale: "1"
26+
autoscaling.knative.dev/maxScale: "1"
27+
labels:
28+
{{- include "eoapi.selectorLabels" . | nindent 8 }}
29+
app.kubernetes.io/component: cloudevents-sink
30+
spec:
31+
containers:
32+
- name: cloudevents-sink
33+
image: gcr.io/knative-samples/helloworld-go:latest
34+
ports:
35+
- containerPort: 8080
36+
env:
37+
- name: TARGET
38+
value: "eoAPI CloudEvents Sink"
39+
readinessProbe:
40+
httpGet:
41+
path: /
42+
port: 8080
43+
initialDelaySeconds: 5
44+
periodSeconds: 10
45+
livenessProbe:
46+
httpGet:
47+
path: /
48+
port: 8080
49+
initialDelaySeconds: 15
50+
periodSeconds: 20
51+
resources:
52+
{{- toYaml .Values.knative.cloudEventsSink.resources | nindent 10 }}
53+
{{- end }}

0 commit comments

Comments
 (0)