redhat-middleware-workshops / dayinthelife-streaming Goto Github PK
View Code? Open in Web Editor NEWDay in the Streaming Life (Event-Driven) Workshop
Day in the Streaming Life (Event-Driven) Workshop
For moving this as a virtual event we need to add markers to the slides to make it fit on 30 mins sessions for each block.
make a tag / release with the current version so we can then add the changes from the move to rhpds.
There are some updates required to run on OCP 4.5 workshop cluster as looks like they removed the sample-credentials for the registry.
Hi, I am following the install steps. I have a OpenShift 4.4 RHPDS. I ssh into it and when i run the ansible playbook, i see that the stream operator fails to install. Any insights as to why that might be? I have also tried it with a 4.3 RHPDS with the same issue.
bash -c "ansible-playbook -i inventory/inventory.example playbooks/openshift/install.yaml -e num_users=15"
[WARNING]: A duplicate localhost-like entry was found (localhost). First found localhost was 127.0.0.1
PLAY [Install DIL Streaming Workshop] *****************************************************************************
TASK [Check if desired virtualenv is available on the host] *******************************************************
ok: [localhost]
TASK [Set Ansible Python interpreter to virtualenv] ***************************************************************
ok: [localhost]
TASK [include_role : provision_camelk] ****************************************************************************
TASK [provision_camelk : Evaluate workshop-operators namespace if not exists] *************************************
changed: [localhost]
TASK [provision_camelk : Evaluate Operator Group] *****************************************************************
changed: [localhost]
TASK [provision_camelk : Evaluate Camel K Subscription] ***********************************************************
changed: [localhost]
TASK [include_role : provision_streams] ***************************************************************************
TASK [provision_streams : Evaluate workshop-operators namespace if not exists] ************************************
ok: [localhost]
TASK [provision_streams : Evaluate Operator Group] ****************************************************************
ok: [localhost]
TASK [provision_streams : Evaluate Streams Subscription] **********************************************************
changed: [localhost]
TASK [provision_streams : Wait for Streams operator to install] ***************************************************
FAILED - RETRYING: Wait for Streams operator to install (10 retries left).
FAILED - RETRYING: Wait for Streams operator to install (9 retries left).
FAILED - RETRYING: Wait for Streams operator to install (8 retries left).
FAILED - RETRYING: Wait for Streams operator to install (7 retries left).
FAILED - RETRYING: Wait for Streams operator to install (6 retries left).
FAILED - RETRYING: Wait for Streams operator to install (5 retries left).
FAILED - RETRYING: Wait for Streams operator to install (4 retries left).
FAILED - RETRYING: Wait for Streams operator to install (3 retries left).
FAILED - RETRYING: Wait for Streams operator to install (2 retries left).
FAILED - RETRYING: Wait for Streams operator to install (1 retries left).
fatal: [localhost]: FAILED! => {"attempts": 10, "changed": false, "resources": []}
PLAY RECAP ********************************************************************************************************
localhost : ok=8 changed=4 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
Running on OCP 4.4 the user cannot complete "7. Create your AMQ Online Topic" since they cannot view the catalog. They need "cluserservices" permissions.
The event
integration times out after 20 seconds. In the logs of the pod the following warning is produced for every invocation:
2020-05-11 15:29:57.839 WARN 1 --- [incomingorders]] o.a.c.c.j.r.TemporaryQueueReplyManager : Timeout occurred after 20000 millis waiting for reply message with correlationID [Camel-i-M73Ll5moKQHbPkgvWAKz] on destination amqp:/_$temp.6wMxV1PJLOHYzHF. Setting ExchangeTimedOutException on (MessageId: i-M73Ll5loKQHbPkgvWAIz on ExchangeId: i-M73Ll5coKQHbPkgvWAEz) and continue routing.
{"exchange":"i-M73Ll5coKQHbPkgvWAEz","step":"-M73JRLv8KbE6Z4fzb2L","id":"i-M73Ll5loKQHbPkgvWAJz","duration":21151076946}
{"exchange":"i-M73Ll5coKQHbPkgvWAEz","status":"done","failed":false}
It seems the Camel route generated for this integration expects a reply message from AMQP, which never comes.
I'm having to run this task manually after the installation.
Environment:
In module 2 step 2.1 when you need to load the csv the link is broken. It's target to URL https://raw.githubusercontent.com/RedHatWorkshops/dayinthelife-streaming/master/support/module-1/earth-orders.csv but this url does not exists anymore. The correct url is https://raw.githubusercontent.com/RedHatWorkshops/dayinthelife-streaming/master/support/module-2/earth-orders.csv. Please, fix in the labs instruction.
The following part of the ansible install script is failing to during install:
Both AddressSpacePlan and AuthenticationService are unpopulated in the GUI dropdown
The only way to install this workshop should be through the agnosticd deployer.
Ops team suggested we used a catalog snapshot to pin the operator versions and in this way avoid unwanted changes when deploying a new cluster.
It would be really nice to have a way to track users progress throughout the various modules.
In the solution explorer is there a way to intercept the button clicks when they go from one task to another or when they start a lab? Maybe throw some google analytics or something in there?
Open to help figuring out the right approach for doing such a thing.
Currently the ms-sqlserver DB is ephemeral. Whenever the OCP 4 cluster reboots, the International DB is lost.
Now that user registration is installed we need to redirect people to that link and explain how to use it.
to avoid the problem with the solution explorer multi-line copy we need to update all those commands to single line commands.
If A-Cloud-Native-Applications lab is completed before Lab 1, you'll receive an error in Lab 1, task 4.5, step 3 when you run this command
oc -n {user-username} set env deployment/www-store ORDERS_EVENT_BASE_URL="http://i-events.fuse-{user-username}.svc:8080"
. It's because the previous lab deploys the node.js app via nodeshift and not a deployment config so www-store1 deployment doesn't exist. However, the ORDERS_EVENT_BASE_URL
is already set to the correct URL based on the .nodeshift/deployment.yml
. Maybe this should be called out somewhere in Lab 1
Review install playbook optimizations to reduce install time.
Related Issue in Camel K
Waiting for Camel K to fix this problem
Inventory services in lab1 is overlapping with one in lab3
Need to move lab 3 and 4 to a new namespace
Steps and 6 references two camel deployments - invoice-events and inventroy-events. However, the instructions to deploy invoice-events and inventory-events are missing.
Change the devfile template to create the workspace using the username instead of random generator
Reported by Marc,
We're about to run a module 2 of the DIL streaming workshop for one of our clients here in ANZ and I wanted to alert you to an issue.
When we provision a 1 user training environment (and the bug might be localized to this) we get the error below when the user attempts to rsh to the sqlserver pod
The issue is that the pod-exec ClusterRole never gets created. I suspect it has something to do with this late January change to this file (provision_userprojects.yaml) in agnosticd. Given the nature of the change it's possible this issue only appears for training environments.
Error is (when trying the oc rsh option)
oc rsh mssql-server-linux-58685677bd-xzhr6
Error from server (Forbidden): pods "mssql-server-linux-58685677bd-xzhr6" is forbidden: User "user1" cannot create resource "pods/exec" in API group "" in the namespace "shared-db-earth": RBAC: clusterrole.rbac.authorization.k8s.io "pod-exec" not found
Consider that each lab can be delivered individually without any dependency on previous labs.
While doing Lab 1 and ordering in section 2.3 the response in 2.4 come back with message of Order Success. The instructions and illustration show detailed order item should be the response. Should I be concerned about that difference.
Add a way to retrieve the solution patterns URL either from Ansible playbook finish or email.
In module 2 when setting up the Debezium connector, it would be better to use a KafkaConnector
CR instead of manually POSTing json. This way you don't need to do the oc expose
of the kafka connect cluster either.
This link on the lab 2 walkthrough results in an authorization issue.
With the move to RHPDS there is no need to run the ansible installer. So update the instructions on how to order the catalog item.
By having access to the admin console, the lab instructor can block or release usernames
I need to correct line 19 of the YAML file to include java.util.HashMap to the whitelist:
infinispan.client.hotrod.java_serial_whitelist=java.util.ArrayList,java.util.LinkedHashMap,java.util.HashMap
Please update the template premiumshipping-config.yaml file to include this whitelist entry.
Update instructions to use MM2 on lab 2
Need to grab session key every time instead of using it for just once. or login again if 401
In Module 1 section 7.1 after step 8 the screenshots seem to indicate the user being brought back to the AddressSpaces list, which they don't seem to do.
Instead they are brought back to the topology view. This is important because later on when trying to determine the service.host
, there is no listing of AddressSpaces to pick from.
The sole existing inventory file has OCP 3 cluster as a target environment.
Since the installation instructions state that OCP 4 should be used, an inventory file meant for an OCP 4 environment should be provided.
Create a pull request to transform this into an AgnosticD deployment for RHPDS.
When several people used the registration app after the recent merge from module-split to master, multiple people received the same user id.
The snippet from the pod log in the registration project:
[0mGET /images/logo.jpg �[32m200 �[0m1.175 ms - 14966�[0m
�[0mGET /favicon.ico �[33m404 �[0m1.616 ms - 584�[0m
[2020-08-12T02:19:23.542Z] user requested account with realname: mary maryson
�[0mPOST /request-account �[36m302 �[0m2.477 ms - 46�[0m
[2020-08-12T02:19:23.593Z] the incoming connection has no user in the session, requesting new user assignment
[2020-08-12T02:19:23.595Z] checking if user1 is assignable { username: 'user1' }
[2020-08-12T02:19:23.595Z] checking if user2 is assignable { username: 'user2' }
[2020-08-12T02:19:23.595Z] setting cached data for user user1 to: {
assignedTs: '2020-08-12T02:19:23.595Z',
ip: '69.131.11.87',
disabled: undefined,
realname: 'redacted',
username: 'user1'
}
[2020-08-12T02:19:23.595Z] checking if user3 is assignable { username: 'user3' }
[2020-08-12T02:19:23.595Z] checking if user4 is assignable { username: 'user4' }
[2020-08-12T02:19:23.595Z] checking if user5 is assignable { username: 'user5' }
[2020-08-12T02:19:23.595Z] checking if user6 is assignable { username: 'user6' }
[2020-08-12T02:19:23.595Z] checking if user7 is assignable { username: 'user7' }
[2020-08-12T02:19:23.595Z] checking if user8 is assignable { username: 'user8' }
[2020-08-12T02:19:23.595Z] checking if user9 is assignable { username: 'user9' }
[2020-08-12T02:19:23.595Z] checking if user10 is assignable { username: 'user10' }
[2020-08-12T02:19:23.595Z] checking if user11 is assignable { username: 'user11' }
[2020-08-12T02:19:23.596Z] checking if user12 is assignable { username: 'user12' }
[2020-08-12T02:19:23.596Z] checking if user13 is assignable { username: 'user13' }
[2020-08-12T02:19:23.596Z] checking if user14 is assignable { username: 'user14' }
[2020-08-12T02:19:23.596Z] checking if user15 is assignable { username: 'user15' }
[2020-08-12T02:19:23.596Z] checking if user16 is assignable { username: 'user16' }
[2020-08-12T02:19:23.596Z] checking if user17 is assignable { username: 'user17' }
[2020-08-12T02:19:23.596Z] checking if user18 is assignable { username: 'user18' }
[2020-08-12T02:19:23.596Z] checking if user19 is assignable { username: 'user19' }
[2020-08-12T02:19:23.596Z] checking if user20 is assignable { username: 'user20' }
[2020-08-12T02:19:23.596Z] checking if user21 is assignable { username: 'user21' }
[2020-08-12T02:19:23.596Z] checking if user22 is assignable { username: 'user22' }
[2020-08-12T02:19:23.596Z] checking if user23 is assignable { username: 'user23' }
[2020-08-12T02:19:23.596Z] checking if user24 is assignable { username: 'user24' }
[2020-08-12T02:19:23.596Z] checking if user25 is assignable { username: 'user25' }
[2020-08-12T02:19:23.596Z] found free user is User { username: 'user1', cacheKey: 'user:user1' }
�[0mGET / �[32m200 �[0m4.608 ms - 1662�[0m
�[0mGET /stylesheets/style.css �[36m304 �[0m2.303 ms - -�[0m
�[0mGET /images/logo.jpg �[36m304 �[0m2.020 ms - -�[0m
�[0mGET /request-account �[32m200 �[0m0.930 ms - 1604�[0m
�[0mGET /stylesheets/style.css �[32m200 �[0m1.836 ms - 95�[0m
�[0mGET /images/logo.jpg �[32m200 �[0m1.557 ms - 14966�[0m
�[0mGET /favicon.ico �[33m404 �[0m1.668 ms - 584�[0m
[2020-08-12T13:17:59.919Z] user requested account with realname: joe sho
�[0mPOST /request-account �[36m302 �[0m2.468 ms - 46�[0m
[2020-08-12T13:17:59.977Z] the incoming connection has no user in the session, requesting new user assignment
[2020-08-12T13:17:59.979Z] checking if user1 is assignable { username: 'user1' }
[2020-08-12T13:17:59.979Z] setting cached data for user user1 to: {
assignedTs: '2020-08-12T13:17:59.979Z',
ip: '71.88.98.167',
disabled: undefined,
realname: 'redacted',
username: 'user1'
}
[2020-08-12T13:17:59.979Z] checking if user2 is assignable { username: 'user2' }
[2020-08-12T13:17:59.979Z] checking if user3 is assignable { username: 'user3' }
[2020-08-12T13:17:59.979Z] checking if user4 is assignable { username: 'user4' }
[2020-08-12T13:17:59.979Z] checking if user5 is assignable { username: 'user5' }
[2020-08-12T13:17:59.979Z] checking if user6 is assignable { username: 'user6' }
[2020-08-12T13:17:59.979Z] checking if user7 is assignable { username: 'user7' }
[2020-08-12T13:17:59.979Z] checking if user8 is assignable { username: 'user8' }
[2020-08-12T13:17:59.979Z] checking if user9 is assignable { username: 'user9' }
[2020-08-12T13:17:59.979Z] checking if user10 is assignable { username: 'user10' }
[2020-08-12T13:17:59.979Z] checking if user11 is assignable { username: 'user11' }
[2020-08-12T13:17:59.980Z] checking if user12 is assignable { username: 'user12' }
[2020-08-12T13:17:59.980Z] checking if user13 is assignable { username: 'user13' }
[2020-08-12T13:17:59.980Z] checking if user14 is assignable { username: 'user14' }
[2020-08-12T13:17:59.980Z] checking if user15 is assignable { username: 'user15' }
[2020-08-12T13:17:59.980Z] checking if user16 is assignable { username: 'user16' }
[2020-08-12T13:17:59.980Z] checking if user17 is assignable { username: 'user17' }
[2020-08-12T13:17:59.980Z] checking if user18 is assignable { username: 'user18' }
[2020-08-12T13:17:59.980Z] checking if user19 is assignable { username: 'user19' }
[2020-08-12T13:17:59.980Z] checking if user20 is assignable { username: 'user20' }
[2020-08-12T13:17:59.980Z] checking if user21 is assignable { username: 'user21' }
[2020-08-12T13:17:59.980Z] checking if user22 is assignable { username: 'user22' }
[2020-08-12T13:17:59.980Z] checking if user23 is assignable { username: 'user23' }
[2020-08-12T13:17:59.980Z] checking if user24 is assignable { username: 'user24' }
[2020-08-12T13:17:59.980Z] checking if user25 is assignable { username: 'user25' }
[2020-08-12T13:17:59.980Z] found free user is User { username: 'user1', cacheKey: 'user:user1' }
�[0mGET / �[32m200 �[0m4.839 ms - 1664�[0m
�[0mGET /stylesheets/style.css �[36m304 �[0m2.326 ms - -�[0m
�[0mGET /images/logo.jpg �[36m304 �[0m2.230 ms - -�[0m
�[0mGET /request-account �[32m200 �[0m0.850 ms - 1604�[0m
�[0mGET /stylesheets/style.css �[32m200 �[0m1.474 ms - 95�[0m
�[0mGET /images/logo.jpg �[32m200 �[0m1.272 ms - 14966�[0m
�[0mGET /favicon.ico �[33m404 �[0m1.623 ms - 584�[0m
�[0mGET /request-account �[36m304 �[0m2.346 ms - -�[0m
�[0mGET /stylesheets/style.css �[36m304 �[0m2.506 ms - -�[0m
�[0mGET /images/logo.jpg �[36m304 �[0m2.300 ms - -�[0m
[2020-08-12T14:45:36.521Z] user requested account with realname: joe joe
�[0mPOST /request-account �[36m302 �[0m2.302 ms - 46�[0m
[2020-08-12T14:45:36.583Z] the incoming connection has no user in the session, requesting new user assignment
[2020-08-12T14:45:36.585Z] checking if user1 is assignable {
assignedTs: '2020-08-12T13:17:59.979Z',
ip: '71.88.98.167',
realname: 'redacted',
username: 'user1'
}
[2020-08-12T14:45:36.585Z] checking if user2 is assignable { username: 'user2' }
[2020-08-12T14:45:36.585Z] setting cached data for user user2 to: {
assignedTs: '2020-08-12T14:45:36.585Z',
ip: '24.211.192.26',
disabled: undefined,
realname: 'redacted',
username: 'user2'
}
[2020-08-12T14:45:36.585Z] checking if user3 is assignable { username: 'user3' }
[2020-08-12T14:45:36.585Z] checking if user4 is assignable { username: 'user4' }
[2020-08-12T14:45:36.585Z] checking if user5 is assignable { username: 'user5' }
[2020-08-12T14:45:36.585Z] checking if user6 is assignable { username: 'user6' }
[2020-08-12T14:45:36.585Z] checking if user7 is assignable { username: 'user7' }
[2020-08-12T14:45:36.585Z] checking if user8 is assignable { username: 'user8' }
[2020-08-12T14:45:36.585Z] checking if user9 is assignable { username: 'user9' }
[2020-08-12T14:45:36.585Z] checking if user10 is assignable { username: 'user10' }
[2020-08-12T14:45:36.585Z] checking if user11 is assignable { username: 'user11' }
[2020-08-12T14:45:36.585Z] checking if user12 is assignable { username: 'user12' }
[2020-08-12T14:45:36.586Z] checking if user13 is assignable { username: 'user13' }
[2020-08-12T14:45:36.586Z] checking if user14 is assignable { username: 'user14' }
[2020-08-12T14:45:36.586Z] checking if user15 is assignable { username: 'user15' }
[2020-08-12T14:45:36.586Z] checking if user16 is assignable { username: 'user16' }
[2020-08-12T14:45:36.586Z] checking if user17 is assignable { username: 'user17' }
[2020-08-12T14:45:36.586Z] checking if user18 is assignable { username: 'user18' }
[2020-08-12T14:45:36.586Z] checking if user19 is assignable { username: 'user19' }
[2020-08-12T14:45:36.586Z] checking if user20 is assignable { username: 'user20' }
[2020-08-12T14:45:36.586Z] checking if user21 is assignable { username: 'user21' }
[2020-08-12T14:45:36.586Z] checking if user22 is assignable { username: 'user22' }
[2020-08-12T14:45:36.586Z] checking if user23 is assignable { username: 'user23' }
[2020-08-12T14:45:36.586Z] checking if user24 is assignable { username: 'user24' }
[2020-08-12T14:45:36.586Z] checking if user25 is assignable { username: 'user25' }
[2020-08-12T14:45:36.586Z] found free user is User { username: 'user2', cacheKey: 'user:user2' }
�[0mGET / �[32m200 �[0m4.795 ms - 1659�[0m
�[0mGET /stylesheets/style.css �[36m304 �[0m3.044 ms - -�[0m
�[0mGET /images/logo.jpg �[36m304 �[0m1.877 ms - -�[0m
It takes too long to create the namespaces and set permissions using a loop in the install, we need to change it to something that is quicker.
We added user registration app, so we need to update docs and enablement material to point people there.
The uninstall script only deletes a single user namespace. It needs to also delete the remaining 14 user namespaces, plus remove the codeready workspace and uninstall the codeready operator as well.
TASK [include_role : uninstall_project] ***********************************************************************************************************************************************
TASK [uninstall_project : Delete user1 Namespace] *************************************************************************************************************************************
changed: [localhost]
PLAY RECAP ****************************************************************************************************************************************************************************
localhost : ok=14 changed=11 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
After provisioning the workshop the email includes the admin credentials for the user registration page, but not the link to it.
Add integreatly app for user assignation for workshops.
https://github.com/Crosbie/username-distribution
This web app distributes usernames and passwords to individuals who are taking part in an OpenShift based workshop. Deploying this app in OpenShift and exposing it publicly will give users a central access point, giving them their individual login credentials and links to lab guides.
When clicking on the code ready containers link I get a new browser tab with the link http://che-che.%7Bopenshift-app-host%7D/. does not seem like the desired behavior.
This is the line
To get started go to the Codeready console and log in using your username and password credentials.
Clean up unused variables in inventory file and add documentation to explain the variables that are availabe for use.
Include information in installation on dependencies and versions required to run the installation. Also, add information about running installation with sudo.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.