rht-labs / tech-exercise Goto Github PK
View Code? Open in Web Editor NEWTL500 Tech Exercises - ArgoCD, Helm & other cool stuff ๐
Home Page: https://rht-labs.com/tech-exercise
License: Apache License 2.0
TL500 Tech Exercises - ArgoCD, Helm & other cool stuff ๐
Home Page: https://rht-labs.com/tech-exercise
License: Apache License 2.0
Feature Toggles - AKA Feature Flags/Bits/Flipping/Controls
...link to the docs where the slides content should be added or links to blogs etc that form the basis of the content.
Use PrometheusRule
to fire alerts when specific events happen.
As a team, come up with new metric to alert on... Extend the base alerts to include this new alert
alerting for pet-battle stuff here
Stop the World
...link to the docs where the slides content should be added or links to blogs etc that form the basis of the content.
Big Picture
...link to the docs where the slides content should be added or links to blogs etc that form the basis of the content.
Add sonar scanning for the application code quality. This should run independently of any other Quality Gate module in order to maintain executing the exercise in any order.
The <pre></pre>
blocks in the markdown are not syntax highlighted. They should be to make it easier for the learner to see what need changing
... if applicable
Look into prism or highlightjs. I know Docsify loads prismjs
so perhaps we could / should be able to use it without if affecting the copy plugin....
Create content for this practice showed in content loop.
Prioritization of Experiments
...link to the docs where the slides content should be added or links to blogs etc that form the basis of the content.
Dark Launches - Letting a small group of interested users test features before others
...link to the docs where the slides content should be added or links to blogs etc that form the basis of the content.
Introduce Code coverage and linting for front end and API (Jenkins & Tekton)
Docs:
Code coverage and linting - General Info
Jenkins
Tekton
Definition of Done
...link to the docs where the slides content should be added or links to blogs etc that form the basis of the content.
Scrum Framework to acelerate delivery loop. This practice could cover the following entries in the content loop:
It could be great to add a new image in the content loop for Scrum, as there is already for Kanban
...link to the docs where the slides content should be added or links to blogs etc that form the basis of the content.
Guerilla Testing - Lean, agile and low-cost method of quickly capturing user feedback
...link to the docs where the slides content should be added or links to blogs etc that form the basis of the content.
Design of Experiments - Learn Fast, Move Even Faster
...link to the docs where the slides content should be added or links to blogs etc that form the basis of the content.
Blue Green Deployments - Always have a fall back solution
...link to the docs where the slides content should be added or links to blogs etc that form the basis of the content.
Usability Testing - Observe and learn from real users
...link to the docs where the slides content should be added or links to blogs etc that form the basis of the content.
Example Mapping - Involving stakeholders in defining acceptance criteria
...link to the docs where the slides content should be added or links to blogs etc that form the basis of the content.
discsuss ....
Simulate an A/B deployment for the frontend. Update the pet-battle applications with Matomo chart and update the frontend overwrites to point to this new instance. Update arogcd config to house an a and b deployment for the front end. configure the weights using config as code. Show results of experiment in the matomo ui.
matomo lives here
pb-config change is here
Team Sentiment - Track the mood of a team with visible feedback
...link to the docs where the slides content should be added or links to blogs etc that form the basis of the content.
Emerging Architecture
...link to the docs where the slides content should be added or links to blogs etc that form the basis of the content.
Introduce Load testing for front end and API (Jenkins & Tekton)
Following instrucctions of Exercise 1 to deploy ArgoCD I found an exception related with RBAC policies for my user.
Error: rendered manifests contain a resource that already exists. Unable to continue with install: could not get information about the resource: clusterrolebindings.rbac.authorization.k8s.io "team8-ci-cd-argocd-application-controller" is forbidden: User "team8" cannot get resource "clusterrolebindings" in API group "rbac.authorization.k8s.io" at the cluster scope
Output of the command with the error:
sh-4.4$ helm upgrade --install argocd \
> --namespace ${TEAM_NAME}-ci-cd \
> -f /projects/tech-exercise/argocd-values.yaml \
> redhat-cop/argocd-operator
Release "argocd" does not exist. Installing it now.
Error: rendered manifests contain a resource that already exists. Unable to continue with install: could not get information about the resource: clusterrolebindings.rbac.authorization.k8s.io "team8-ci-cd-argocd-application-controller" is forbidden: User "team8" cannot get resource "clusterrolebindings" in API group "rbac.authorization.k8s.io" at the cluster scope
This is a OCP 4.6 cluster deployed automatically by LodeStar, as part of a coming DO500 Enablement, and I am connected using a developer user (e.g: team8) with the default capabilities of a DO500 developer user.
Should my user has more capabilities? Is it missed something in the cluster to execute this step?
Here's a thought....
there are sections of the docs that have yaml like this:
source: "https://gitlab-ce.apps.<CLUSTER_DOMAIN>/<TEAM_NAME>/tech-exercise.git"
team: <TEAM_NAME>
we have the attendees do a find and replace, but Im just thinking, we could probs write a docsify plugin or something along those lines to parse the page before it's rendered and replace these with the values used by a team. Im thinking, something lightweight with just two text boxes or something that you fill in when you open the docs and can set the values in local storage so refreshes etc are still good. I think this will help some of the typo issues we have seen historically and also mean we don't maintain forks of the repo for each team. What do you guys think?
@philipdouble - i see that docsify has lifecycle hooks perhaps we can use these to our advantage? https://docsify.js.org/#/write-a-plugin
FYI @eformat / @philipdouble / @Rileyi / @ckavili
ArgoCD config to enable hpa in stage or test
Add the HPA yaml to the pet-battle api charts.
Fire some load, watch it scale up / down.
come up with good metrics to scale on and tweak via argocd override or app change
hpa for pb is disabled by default. chart is here
Definition of Ready
...link to the docs where the slides content should be added or links to blogs etc that form the basis of the content.
Understand, prioritise, and clarify items in the backlog to ensure they're ready to work on.
...link to the docs where the slides content should be added or links to blogs etc that form the basis of the content.
ADD - some branding for TL500 to make this more downstream "producty"
@christusa to add brand guidelines
Add Licence to the repo & pages
Add PDF to docsify [epub for bonus points]
Following the instructions described here to create the Jenkins pipeline of the pet-battle application, I cannot get the new pipeline be created.
I executed the seed-multibranch-pipelines
pipeline manually, the following exceptions are showed in the Jenkins' pod logs:
2021-11-29 07:52:02 WARNING hudson.model.listeners.RunListener report RunListener failed
java.lang.NoClassDefFoundError: org/junit/rules/ExternalResource
at org.jvnet.hudson.test.BuildWatcher$Listener.onStarted(BuildWatcher.java:89)
at hudson.model.listeners.RunListener.fireStarted(RunListener.java:237)
at hudson.model.Run.execute(Run.java:1886)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:99)
at hudson.model.Executor.run(Executor.java:431)
Basically follow the instructions of the technical exercise. This is a blocker to follow other exercises using Jenkins, instead of Tekton.
Learners should extend their pet-battle infra with the grafana
chart. This is done for each team as it is namespaced. Probs need one for test
& stage
. Then via argocd override, we can enable ServiceMonitor. Teams should discuss what are important measures eg api response time or uptime etc and build a simple query for their dashboard to show this.
grafana from pb-infra here
service monitor on chart is here
Add image signing step for front end and API (Jenkins & Tekton)
Docs:
Image Signing - General Info
Jenkins
Tekton
Create content for this practice showed in Content Loop
How-Now-Wow Prioritization (Experiments Prioritization)
...link to the docs where the slides content should be added or links to blogs etc that form the basis of the content.
Canary Release - Exposing a small number of real users to a new version
...link to the docs where the slides content should be added or links to blogs etc that form the basis of the content.
Split Testing - A/B Testing -Quantitative testing of two alternative designs to learn which better leads to a specific goal
...link to the docs where the slides content should be added or links to blogs etc that form the basis of the content.
Each module should be independent of the previous one... etc
Add OWASP ZAP scanning for front end and API (Jenkins & Tekton)
Docs:
OWASP Zap Scanning - General Info
Jenkins
Tekton
Add tests to the pipeline for front end & api (Jenkins & Tekkers)
Add extension to the pipeline to automatically promote image from test to stage when pipeline successful.
docs go here
Accentance Criteria
...link to the docs where the slides content should be added or links to blogs etc that form the basis of the content.
Non-Functional Requirements Map - A collaborative approach for capturing non-functional requirements
...link to the docs where the slides content should be added or links to blogs etc that form the basis of the content.
Weighted Shortest Job First - Practice for quantitatively assessing and agreeing backlog prioritisation
...link to the docs where the slides content should be added or links to blogs etc that form the basis of the content.
Design Sprint - A five-day process for testing new ideas
...link to the docs where the slides content should be added or links to blogs etc that form the basis of the content.
Network Mapping - Build a network of relationships in your organization or team
...link to the docs where the slides content should be added or links to blogs etc that form the basis of the content.
Introduce StackRox for container and hist security for front end and API (Jenkins & Tekton)
Docs:
StackRox - General Info
Jenkins
Tekton
Radiate ALL THE THINGS!! ๐ช
Introduce Blue/Green deployment for pet-battle-api.
Update pipelines (Jenkins & Tekton) and pet-battle helm charts accordingly.
Run the pipeline and see it switches the traffic (from blue to green) after the green one passes the tests.
suggested blue/green approach for pipeline (swapping labels from active/ inactive once smoke test has been successful)
Add image security steps for front end and API (Jenkins & Tekton)
Docs:
Image Security - General Info
Jenkins
Tekton
North Star
...link to the docs where the slides content should be added or links to blogs etc that form the basis of the content.
Containers
...link to the docs where the slides content should be added or links to blogs etc that form the basis of the content.
assume the workload logging operator is deployed as part of the enablement-framework. Attendees should login to kibana, create a search index and query their logs from pet-battle. Delete a pod and find results from old container logs or something to that affect ๐คท
OpenShift cluster logging is here
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.