An open API service indexing awesome lists of open source software.

https://github.com/rhecosystemappeng/knative-quickstarts


https://github.com/rhecosystemappeng/knative-quickstarts

Last synced: about 1 year ago
JSON representation

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
&ltPython&gt 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
&ltGo&gt 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
&ltQuarkus&gt loader)
loader-subscription(messaging.knative.dev.Subscription
loader-subscription)
loader-subscription --channel--> event-channel
loader-subscription --subscriber--> loader

event-display(serving.knative.dev.Service
&ltImage&gt
&ltmin-scale=1&gt
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
&ltPostgreSQL&gt
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
```