microsoft / aroworkshop

Azure Red Hat OpenShift workshop
Creative Commons Attribution 4.0 International
58 stars 121 forks source link

Separate concepts and cluster-creation from the labs, as a proposal to make the workshop more flexible. #103

Closed jamesread closed 1 year ago

jamesread commented 1 year ago

Hey, first of all, I'm long overdue committing back to aroworkshop.io - so I hope it's not too late, and you'd be kind enough to consider some PRs :-)

This workshop content covers a lot, and that is a great thing - it really is. I'd like to start a series of PRs to help simplify some of this content, and re-order: with a goal to;

  1. make it easier to introduce 1 concept at a time, and build on it
    • If you look at the current path through the workshop, kinda goes off on some tangents (eg, you start to create a project by then going to login to the cluster, eg, you start deploying a ratings-api, but then have to fork the project). I find that people learning new concepts just want to be introduced to 1 thing at a time, and come back to make it more sophisticated (eg, build a project first, get it deployed, then come back and add webhooks).
  2. make the workshop more flexible for running with a multi-tenant cluster, and for more experienced OpenShift users.
    • If a customer wanted to run this in a multi-tenant way as well, it assumes every workshop attendee creates their own cluster too - which is unrealistic! For large events I'd like a workshop that can be used for many attendees with a pre-provisioned cluster (eg from a partner's subscription, RHPDS, or something else). If this customer comes from on-premises OpenShift, they start the workshop by reading about a lot of concepts they already know.

So, if you agree with me allowing to try to simplify and re-order a bit, I'd like to propose a couple of PRs (with this being the first).

  1. (this PR) Separate concepts and cluster-creation from the labs. At the moment there is a /lot/ of reading suggested, about Builds, ImageStreams, etc, and again, it kinda goes forward-and-backward about creating a cluster, Azure Cloud Shell, etc. This PR makes the starting table of contents look like this;

ARO Workshop -- 1.1 Prerequisites -- 1.2 Create Cluster -- 1.3 Connect to the cluster (added the web terminal operator as an option if attendees don't get Azure access) Lab 1 - Go Microservices -- 2.1 Application Overview -- 2.2 Create Project (which is now, just creating the project, rather than connecting to the cluster), etc. ... Lab 2 - ARO Internals ... Concepts -- Source-to-image (S2I) -- Routes ...

One huge advantage this has, is that an ARO cluster can be pre-provisioned for many attendees, and this workshop can now be run multi-tenant (assuming everyone creates their own separate namespace name), and all the workshop facilitator would need to say is "Start at 1.3".

I didn't want to go ahead and bombard you with more PRs if you don't like this approach, but here is what I had in mind for the future;

  1. Streamline lab 1 to just get something deployed (basic OpenShift - nothing specific about ARO). Deploy MongoDB from the pretty catalog (all point and click). Move the instructions for repository forking, webhooks, and modifying the Dockerfile into a separate lab - "Implementing basic CI/CD" - so Lab 1 is simple, just getting something deployed fast, seeing the ease of use of OpenShift, then Lab 2 becomes more exciting!
  2. Infrastructure / Azure storage (PVs)
  3. Infrastructure / Azure compute (MachineSets) and autoscaling
  4. Infrastructure / Azure networking (vnets, NSGs, and OpenShift SDN/OVN)
  5. Development Platform / OpenShift Pipelines
  6. Development Platform / Azure DevOps integration
  7. Development Platform / Azure Service Operator
  8. etc :-)

So, "TLDR" version of this PR: If you like the idea of a series of PRs to help simplify and re-order a bit (so that it can be extended later), then that is what I am asking you to consider accepting here!

Lastly, when I was writing the AROv4 book this year, I deliberately tried to focus it's content on planning a ARO environment, concepts, things to consider. The book wasn't supposed to be a "hands-on" guide - that sort of content is best suited to aroworkshop.io. It did have a brief chapter about a hands-on-workshop (deploying the ratings-api, etc), but I think that if you're open to the ideas above, this repo could be the ultimate ARO "hands-on-workshop" :-)

Oh, and Merry Christmas! :christmas_tree: :gift:

sabbour commented 1 year ago

I like this approach

0kashi commented 1 year ago

This sounds like a good idea to me. Thanks for offering to help James!