At VMware, one of my main missions as a technical solutions architect is to focus on synergies between our own products as well as integrations with eco-system tools, the goal being to help customers get the best possible outcomes and realize value from their investments in our technology.
This often means running workshops, creating demos, building POCs, etc...
My area of focus in the last couple of years has been and still is application and infrastructure modernization efforts.
For business reasons, I've recently had to quickly build a demo showcasing integration between Tanzu Kubernetes Grid, VMware's flagship upstream-compliant Kubernetes enterprise offering, and vRealize Codestream, a continous deployment tool that is part of the vRealize suite and which I consider to (unfortunately) be one the best hidden secrets here at VMware.
The point of this demo was to showcase fully automated application release pipelines that get triggered upon source code modification. I've broken down the demo in two parts and published videos corresponding to each:
- part 1 introduces the end to end toolchain, the sample application and the personnas involved (Mike the dev and Alex the ops) and shows a successsfull application deployment initiated by Mike.
- part 2 builds on the previous setup and expands into a canary upgrade workflow applied to the same sample application (from purple website color and initial title/headline to light blue website color and modified title/headlines).
Note1: for those unfamiliar with Canary upgrade/deployment strategies, the basic idea of a canary upgrade is to deploy new code to a small subset of your production infrastructure to see how the new code (the canary) compares to the old code (the baseline).
Note2: Just in case you're wondering why the name "Canary" (I wondered...)
Some more foreword before sharing the links:
- Mike works on his laptop (white shell background in the videos) and uses an IDE to modify his source code and checks into gitlab.com.
- Alex also uses a Linux server as workstation (dark shell background in the videos) to track what's going on in the infrastructure.
- They also both access Codestream, the CICD system, in a collaborative maner.
- The demos aren't meant to be a step-by-step configuration guide but rather a simplified live workflow which can be extrapolated upon.
- Videos assume general knowledge and understanding of git technologies, IDE concepts, kubernetes infrastructure, etc...
Summary of the code and tools used:
- Bulletin Board sample applicatioon. Super simple nodejs application packaged in a single container image. I made a kubernetes micro-service from it.
- Visual Studio Code as an IDE, running on (my) MAC OS.
- Gitlab.com as a VCS (version control system). SaaS version. Both the application source code and the kuberntes infrastructure deployment files are checked in gitlab.com but in the demo, only the app source code is iterated upon.
- VMware vRealize Codestream as a CI/CD tool. SaaS version.
- Gitlab.com, again, as a container image registry.
- A Tanzu Kubernetes Grid infrastructure upon which the application is deployed with the networking and the load-balancing handled by VMware NSX.
It's important to note that most of the tools are interachangeable in this demo and one would have tens of good reasons to use another registry, another vcs system, etc... It would work.
Thank you if you've read this far, I owe you !
The series of two videos can be accessed here:
https://youtube.com/playlist?list=PLhbRCQQCoLzde0IRm9BtIIufOpTBr7AEI
Resources:
- App source code
https://gitlab.com/hassanhamade/node-bulletin-board_csbuild - Infra code
https://gitlab.com/hassanhamade/bulletin-board_infra - Container images
https://gitlab.com/hassanhamade/node-bulletin-board_csbuild/container_registry
Ackowledgements:
- my esteemed colleague Alexandre Hugla has created the base of this demo. I've built on his initial application pipeline and augmented it. Thanks Alex !
- my colleague Sam McGeown has created a "similar" demonstration showcasing a Blue/Green deployment of a different application using vRealize Codestream. His blog article can be found here.