https://github.com/rhecosystemappeng/knative-quickstarts
https://github.com/rhecosystemappeng/knative-quickstarts
Last synced: about 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/rhecosystemappeng/knative-quickstarts
- Owner: RHEcosystemAppEng
- License: apache-2.0
- Created: 2022-07-29T07:24:32.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2023-03-07T09:18:19.000Z (over 3 years ago)
- Last Synced: 2025-02-15T02:15:22.972Z (over 1 year ago)
- Language: Java
- Size: 244 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# knative-quickstarts
Generate, display and store recurring events (polyglot)
## Sample architecture
Deployment architecture of the demo application:
```mermaid
graph TD
poller(sources.eventing.knative.dev.CronJobSource
poller)
producer(serving.knative.dev.Service
<Python> producer)
producer-binding(SinkBinding
producer-binding)
broker[eventing.knative.dev.Broker
default]
poller --sink.ref--> producer
producer-binding --subject
env.K_SINK--> producer
producer-binding --sink.ref--> broker
dispatcher(serving.knative.dev.Service
<Go> dispatcher)
dispatcher-binding(SinkBinding
dispatcher-binding)
dispatcher-trigger(Trigger
dispatcher-trigger)
dispatcher-binding --subject
env.K_SINK--> dispatcher
dispatcher-binding --sink.uri--> event-channel
dispatcher-trigger --subscriber--> dispatcher
dispatcher-trigger --broker--> broker
event-channel(Channel
event-channel)
loader(serving.knative.dev.Service
<Quarkus> loader)
loader-subscription(messaging.knative.dev.Subscription
loader-subscription)
loader-subscription --channel--> event-channel
loader-subscription --subscriber--> loader
event-display(serving.knative.dev.Service
<Image>
<min-scale=1>
event-display)
event-display-trigger(Trigger
event-display-trigger)
event-display-subscription(messaging.knative.dev.Subscription
event-display-subscription)
event-display-trigger --subscriber--> event-display
event-display-trigger --broker--> broker
event-display-subscription --channel--> event-channel
event-display-subscription --subscriber--> event-display
event-store[(v1.Service
<PostgreSQL>
event-store)]
loader --env.POSTGRES_HOST-->event-store
```
Configured event flow:
```mermaid
graph TD
poller(sources.eventing.knative.dev.CronJobSource
poller)
producer(serving.knative.dev.Service
producer)
broker[eventing.knative.dev.Broker
default]
poller -.type: dev.knative.sources.ping.-> producer
producer -.type: com.redhat.knative.demo.Produced.-> broker
dispatcher(serving.knative.dev.Service
dispatcher)
event-channel(Channel
event-channel)
broker -.type: com.redhat.knative.demo.Produced.-> dispatcher
dispatcher -.type: com.redhat.knative.demo.Dispatched.-> event-channel
loader(serving.knative.dev.Service
loader)
event-channel -.type: com.redhat.knative.demo.Dispatched.-> loader
event-display(serving.knative.dev.Service
event-display)
broker -.type: com.redhat.knative.demo.Produced.-> event-display
event-channel -.type: com.redhat.knative.demo.Dispatched.-> event-display
event-store[(v1.Service
event-store)]
loader -.type: com.redhat.knative.demo.Loaded.->event-store
```
## Installing the application
We'll install the application on the [OpenShift Sandbox](https://developers.redhat.com/developer-sandbox), that already includes an
instance of the `Red Hat OpenShift Serverless` operator.
```bash
export APP_NAMESPACE=
export IMAGE_NAMESPACE=
export DB_NAMESPACE=
oc project ${APP_NAMESPACE}
oc new-app --name=postgresql --template=postgresql-ephemeral \
-e POSTGRESQL_USER=demo -e POSTGRESQL_PASSWORD=demo123 -e POSTGRESQL_DATABASE=demodb\
-e NAMESPACE=${DB_NAMESPACE}
oc process -p=APP_NAMESPACE=${APP_NAMESPACE} -f config/infra | oc apply -f -
oc process -p=IMAGE_NAMESPACE=${IMAGE_NAMESPACE} -f config/build | oc apply -f -
oc process -p=APP_NAMESPACE=${APP_NAMESPACE} -f config/app | oc apply -f -
```
Commands to monitor the applications or the CloudEvents:
```bash
oc logs -f -l app=knative-quickstarts-demo -c knative-quickstarts-demo-app
oc logs -f -l module=event-display -c user-container
```
Commands to check the DB status:
```bash
PSQL_POD=$(oc get pod -l name=postgresql -oname) && oc exec ${PSQL_POD} -- psql -Udemo -h localhost demodb -c "/dt"
PSQL_POD=$(oc get pod -l name=postgresql -oname) && oc exec ${PSQL_POD} -- psql -Udemo -h localhost demodb -c "select * from loadedrecord"
```
Sample commands to update the configuration of the Knative services (require `kn` Knative CLI):
```bash
kn service update producer-python --scale-min=0
kn service update producer-python --traffic @latest=100
```
## Uninstalling the application
```bash
oc process -p=APP_NAMESPACE=${APP_NAMESPACE} -f config/infra | oc delete -f -
oc process -p=IMAGE_NAMESPACE=${IMAGE_NAMESPACE} -f config/build | oc delete -f -
oc process -p=APP_NAMESPACE=${APP_NAMESPACE} -f config/app | oc delete -f -
oc delete dc/postgresql
oc delete svc/postgresql
```