๐ CNDO #22: Using the Argo CD ApplicationSet controller
๐๏ธ What's new this week
๐๐บ๐ธ Happy 4th, America!
Yes, if you live in the States, today was a holiday (and many made it a 4-day weekend), but I'm at home prepping for next week's live course. I'm anxious to get a break once it's over in a few weeks and get some sand in my shoes and a cold drink with tacos somewhere within walking distance! I live in Virginia Beach, just blocks from our tourist-covered oceanfront boardwalk, which is full of music, hotels, festivals, and wonderful food. I love the energy and vibe this time of year.
๐จโ๐ซ My final prep for the live GitHub Actions + Argo CD course
The cohort starts Monday (10th). I've got some great people signed up from teams with diverse requirements for implementing these tools, so I'm sure it'll lead to some fantastic discussions and problem-solving in class. I may be the teacher but I always learn things from students. The saying "If you want to learn something well, teach it" is true. The last day to enroll is this Friday (7th). If you've been on the fence about enrolling, now's the time to decide!
๐ด Live show: Learning Docker and Kubernetes: Live Q&A (Ep 224)
This week's livestream is the monthly Q&A focused on my Udemy and Maven course content and all things Kubernetes, Docker, GitOps, GitHub Actions, and DevOps-related.๐
Thursday, July 6, 13:00 US ET (UTC-4)
๐จโ๐ป What I'm working on
Argo CD ApplicationSet is the way to go
๐ Have you used Argo CD? Argo CD has been revolutionizing Kubernetes deployments the GitOps way. But let's talk about a newer feature that stands out - the ApplicationSet controller!
The ApplicationSet controller is an evolution of the "App of Apps" deployment pattern, enhancing its flexibility to cater to a broad spectrum of use cases. It runs as its own controller, supplementing the functionality of the Argo CD Application CRD and comes installed alongside Argo CD from version 2.3 onward (2022+).
Itโs my favorite way to set up auto-deployments for Helm or Kustomize apps, regardless of whether itโs a single chart/app or a monorepo full of many charts/apps and environments.
ApplicationSet is excellent for self-service models and is how I prefer to give Dev team permissions to create their own charts/manifests in their own repos and deploy to K8s clusters without giving them K8s admin powers or control of Argo CD itself.
How can ApplicationSet do this?
๐ก Purpose: The ApplicationSet controller serves as an "Application factory". It inputs an ApplicationSet and generates one or more Argo CD Applications. It manages the creation, update, and deletion of Argo CD Applications, ensuring consistency with the declared ApplicationSet resources.
5 reasons why the ApplicationSet controller is a game-changer:
1๏ธโฃ Multi-cluster deployments: With a single manifest, you can target multiple Kubernetes clusters, ideal for managing deployments across different environments.
2๏ธโฃ Multi-repo deployments: Deploy multiple Applications from a single or multiple git repos using a single manifest. This is a significant leap in managing complex application landscapes.
3๏ธโฃ Monorepo support: The ApplicationSet controller improves support for monolithic repository patterns, where many applications/environments are defined in a single repository. This is a big win for teams working on large-scale projects.
4๏ธโฃ Multi-tenant support: It enhances the ability of teams within a cluster to deploy applications using Argo CD, without the need for privilege escalation. This fosters secure and efficient team collaborations.
5๏ธโฃ Generators: The ApplicationSet controller uses "generators" that instruct how to generate Applications. There are different generators to tackle various scenarios and use cases, including the List, Cluster, and Git generators.
Compared to traditional ways of configuring Argo CD, the ApplicationSet feature further automates Application management, reducing PRs and increasing simplicity.
Join the discussion on my LinkedIn post about ApplicationSet where I asked these questions:
โ How do you use Argo CD? Single Application resources? The โApp of Appsโ pattern? ApplicationSet resources?
โ Do you wish you had fewer commits and PRs just to deploy an app update? Whatโs your โhuman workflow for deploymentsโ like for a one-line code change in your app?
๐ฆ Tweet of the week
๐ Next big thing๏ธ
A short rest. I'm looking forward to a little time off in August. We have family coming to visit and then we'll spend some time again on my Udemy course updates. I hope you're able to enjoy the summer so far ๐๏ธโ๏ธ๐ (or winter if you're on that half of the world).
๐ In case you missed it
(headlines from last week's newsletter that you can skip if you already read it)
๐ด Live show: Istio Ambient Mesh and Solo.io (Ep 223), June 29, 2023
On last week's livestream, Nirmal Mehta and I welcomed Idit Levine, Founder/CEO of Solo.io. Idit focuses on Service Mesh, API-GW and Multi-Cloud networking, and security. Sheโs been involved in the Containers/DevOps community for 10+ years, building products from Docker to Envoy to Kubernetes, and now Istio and Cilium. We have lots to talk about -- Istio, Ambient Mesh, Envoy, Zero-Trust Security, Cilium, eBPF, Multi-Cloud. We tried to get to it all.
๐ง Podcast
Ep 135: AWS containers with Corey Quinn
We released a podcast last week. My co-host Matt Williams and I go on an AWS adventure with Corey Quinn, the Chief Cloud Economist at the Duckbill Group. You may have seen or heard some of his in-depth AWS content, including his Last Week in AWS newsletter and blog, Corey's podcast Screaming in the Cloud and the AWS Morning Brief, or his highly produced YouTube videos on the Last Week in AWS channel.
New stuff in Docker Mastery
I just finished updating a section in my Docker Mastery course on Udemy. The section is titled Inspecting Kubernetes Resources. Originally, it was just one video. I've added new content and broken it into 5 lectures and a quiz. All of the lectures are shorter than 9 minutes.
I also added a quiz to the Kubernetes Architecture and Install and Your First Pods sections.