Here are a list of things we considered before creating this demo block. FYI.
- Ensure Jenkins bring-up as well as cleanup is swift.
- We have chosen Jenkins on Kubernetes
- Don't add additional plugins and cause complexity as well as make Jenkins slower
- Avoid Kubernetes, Kubernetes-CD, Kubernetes-CLI, GKE and other plugins. Pipeline syntax involves groovy classes, storing secret files etc.,
- Simplify application deployment & stability checks
- Make Jenkins & Application co-located. Use custom images based on jenkins:lts & updated permissions to jenkins-admin svcaccount
- Use rollout status to track health
- Our GraphQL APIs are extremely cumbersome for users to navigate. Despite being able to download curl commands from our Postman collection, it is not easy to parameterize and push the command into a bash script due to the challenging task of escaping multiple special characters inside the original curl cmd.
- Instead, we have a simple CLI client to help construct the API calls and execute the commands. It can also output the fully formed curl cmd for need.
- Deploy a microservice, subject it to a chaos experiment and rollback based on the chaos testing outcomes
- Parameterize requirements (experiment IDs) and expectations (resilience score) in the pipeline (just as the Harness step provides)
Note: Store account information and api keys as secrets
The detailed documentation for the tutorial/demo-block can be found in tutorial.md