{"id":18291207,"url":"https://github.com/rhecosystemappeng/knative-quickstarts","last_synced_at":"2025-04-09T07:49:45.219Z","repository":{"id":91815722,"uuid":"519120746","full_name":"RHEcosystemAppEng/knative-quickstarts","owner":"RHEcosystemAppEng","description":null,"archived":false,"fork":false,"pushed_at":"2023-03-07T09:18:19.000Z","size":250,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-15T02:15:22.972Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RHEcosystemAppEng.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-07-29T07:24:32.000Z","updated_at":"2023-03-07T07:40:00.000Z","dependencies_parsed_at":null,"dependency_job_id":"ede3a68d-252f-45fe-ac71-4ec4fb0af289","html_url":"https://github.com/RHEcosystemAppEng/knative-quickstarts","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RHEcosystemAppEng%2Fknative-quickstarts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RHEcosystemAppEng%2Fknative-quickstarts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RHEcosystemAppEng%2Fknative-quickstarts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RHEcosystemAppEng%2Fknative-quickstarts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RHEcosystemAppEng","download_url":"https://codeload.github.com/RHEcosystemAppEng/knative-quickstarts/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247999840,"owners_count":21031044,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-05T14:13:31.385Z","updated_at":"2025-04-09T07:49:45.197Z","avatar_url":"https://github.com/RHEcosystemAppEng.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# knative-quickstarts\nGenerate, display and store recurring events (polyglot)\n\n## Sample architecture\nDeployment architecture of the demo application:\n```mermaid\ngraph TD\n   poller(\u003cb\u003esources.eventing.knative.dev.CronJobSource\u003c/b\u003e\u003cbr/\u003epoller)\n   producer(\u003cb\u003eserving.knative.dev.Service\u003c/b\u003e\u003cbr/\u003e\u0026ltPython\u0026gt producer)\n   producer-binding(\u003cb\u003eSinkBinding\u003c/b\u003e\u003cbr/\u003eproducer-binding)\n   broker[\u003cb\u003eeventing.knative.dev.Broker\u003c/b\u003e\u003cbr/\u003edefault]\n   poller --sink.ref--\u003e producer\n   producer-binding --subject\u003cbr/\u003eenv.K_SINK--\u003e producer\n   producer-binding --sink.ref--\u003e broker\n\n   dispatcher(\u003cb\u003eserving.knative.dev.Service\u003c/b\u003e\u003cbr/\u003e\u0026ltGo\u0026gt dispatcher)\n   dispatcher-binding(\u003cb\u003eSinkBinding\u003c/b\u003e\u003cbr/\u003edispatcher-binding)\n   dispatcher-trigger(\u003cb\u003eTrigger\u003c/b\u003e\u003cbr/\u003edispatcher-trigger)\n   dispatcher-binding --subject\u003cbr/\u003eenv.K_SINK--\u003e dispatcher\n   dispatcher-binding --sink.uri--\u003e event-channel\n   dispatcher-trigger --subscriber--\u003e dispatcher\n   dispatcher-trigger --broker--\u003e broker\n\n   event-channel(\u003cb\u003eChannel\u003c/b\u003e\u003cbr/\u003eevent-channel)\n\n   loader(\u003cb\u003eserving.knative.dev.Service\u003c/b\u003e\u003cbr/\u003e\u0026ltQuarkus\u0026gt loader)\n   loader-subscription(\u003cb\u003emessaging.knative.dev.Subscription\u003c/b\u003e\u003cbr/\u003eloader-subscription)\n   loader-subscription --channel--\u003e event-channel\n   loader-subscription --subscriber--\u003e loader\n\n   event-display(\u003cb\u003eserving.knative.dev.Service\u003c/b\u003e\u003cbr/\u003e\u0026ltImage\u0026gt\u003cbr/\u003e\u0026ltmin-scale=1\u0026gt\u003cbr/\u003eevent-display)\n   event-display-trigger(\u003cb\u003eTrigger\u003c/b\u003e\u003cbr/\u003eevent-display-trigger)\n   event-display-subscription(\u003cb\u003emessaging.knative.dev.Subscription\u003c/b\u003e\u003cbr/\u003eevent-display-subscription)\n   event-display-trigger --subscriber--\u003e event-display\n   event-display-trigger --broker--\u003e broker\n   event-display-subscription --channel--\u003e event-channel\n   event-display-subscription --subscriber--\u003e event-display\n\n   event-store[(\u003cb\u003ev1.Service\u003c/b\u003e\u003cbr/\u003e\u0026ltPostgreSQL\u0026gt\u003cbr/\u003eevent-store)]\n   loader --env.POSTGRES_HOST--\u003eevent-store\n```\n\nConfigured event flow:\n```mermaid\ngraph TD\n   poller(\u003cb\u003esources.eventing.knative.dev.CronJobSource\u003c/b\u003e\u003cbr/\u003epoller)\n   producer(\u003cb\u003eserving.knative.dev.Service\u003c/b\u003e\u003cbr/\u003eproducer)\n   broker[\u003cb\u003eeventing.knative.dev.Broker\u003c/b\u003e\u003cbr/\u003edefault]\n   poller -.type: dev.knative.sources.ping.-\u003e producer\n   producer -.type: com.redhat.knative.demo.Produced.-\u003e broker\n\n   dispatcher(\u003cb\u003eserving.knative.dev.Service\u003c/b\u003e\u003cbr/\u003edispatcher)\n   event-channel(\u003cb\u003eChannel\u003c/b\u003e\u003cbr/\u003eevent-channel)\n   broker -.type: com.redhat.knative.demo.Produced.-\u003e dispatcher\n   dispatcher -.type: com.redhat.knative.demo.Dispatched.-\u003e event-channel\n\n   loader(\u003cb\u003eserving.knative.dev.Service\u003c/b\u003e\u003cbr/\u003eloader)\n   event-channel -.type: com.redhat.knative.demo.Dispatched.-\u003e loader\n\n   event-display(\u003cb\u003eserving.knative.dev.Service\u003c/b\u003e\u003cbr/\u003eevent-display)\n   broker -.type: com.redhat.knative.demo.Produced.-\u003e event-display\n   event-channel -.type: com.redhat.knative.demo.Dispatched.-\u003e event-display\n\n   event-store[(\u003cb\u003ev1.Service\u003c/b\u003e\u003cbr/\u003eevent-store)]\n   loader -.type: com.redhat.knative.demo.Loaded.-\u003eevent-store\n```\n## Installing the application\nWe'll install the application on the [OpenShift Sandbox](https://developers.redhat.com/developer-sandbox), that already includes an\ninstance of the `Red Hat OpenShift Serverless` operator.\n\n```bash\nexport APP_NAMESPACE=\u003cYOUR_NS\u003e\nexport IMAGE_NAMESPACE=\u003cYOUR_NS\u003e\nexport DB_NAMESPACE=\u003cYOUR_NS\u003e\noc project ${APP_NAMESPACE}\noc new-app --name=postgresql --template=postgresql-ephemeral \\\n   -e POSTGRESQL_USER=demo -e POSTGRESQL_PASSWORD=demo123 -e POSTGRESQL_DATABASE=demodb\\\n   -e NAMESPACE=${DB_NAMESPACE}\noc process -p=APP_NAMESPACE=${APP_NAMESPACE} -f config/infra | oc apply -f -\noc process -p=IMAGE_NAMESPACE=${IMAGE_NAMESPACE} -f config/build | oc apply -f -\noc process -p=APP_NAMESPACE=${APP_NAMESPACE} -f config/app | oc apply -f -\n```\n\nCommands to monitor the applications or the CloudEvents:\n```bash\noc logs -f -l app=knative-quickstarts-demo -c knative-quickstarts-demo-app\noc logs -f -l module=event-display -c user-container\n```\n\nCommands to check the DB status:\n```bash\nPSQL_POD=$(oc get pod -l name=postgresql -oname) \u0026\u0026 oc exec ${PSQL_POD} -- psql -Udemo -h localhost demodb -c \"/dt\" \nPSQL_POD=$(oc get pod -l name=postgresql -oname) \u0026\u0026 oc exec ${PSQL_POD} -- psql -Udemo -h localhost demodb -c \"select * from loadedrecord\" \n```\n\nSample commands to update the configuration of the Knative services (require `kn` Knative CLI):\n```bash\nkn service update producer-python --scale-min=0\nkn service update producer-python --traffic @latest=100\n```\n\n## Uninstalling the application\n```bash\noc process -p=APP_NAMESPACE=${APP_NAMESPACE} -f config/infra | oc delete -f -\noc process -p=IMAGE_NAMESPACE=${IMAGE_NAMESPACE} -f config/build | oc delete -f -\noc process -p=APP_NAMESPACE=${APP_NAMESPACE} -f config/app | oc delete -f -\n\noc delete dc/postgresql \noc delete svc/postgresql \n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhecosystemappeng%2Fknative-quickstarts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frhecosystemappeng%2Fknative-quickstarts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhecosystemappeng%2Fknative-quickstarts/lists"}