Luxury Definition by a Kubernetes Engineer

What’s your definition of Luxury ? What is your perspective of Luxury ? How can you define the Luxury ?

If you love traveling & visiting Resorts, you may think about this :

Luxury

If you are fond of cars, you may define the Luxury with the following :

If you are Kuberenetes engineer, how you will define the Luxury ?

The last month, I had the opportunity to setup a new Kuberntes cluster EKS.

While preparing this cluster, I feel the Luxury of the environment and I want to share this experience with the cloud-native community:

Ansible

ansible 🖤k8s

Your local machine requires some applications & executables ( docker, kubectl, helm, helmfile, aws-iam-authenticator, terraform, kind, aws cli, ..).

Ansible is used to setup my local environment; I don’t need to struggle with brew install kubernetes-helm or similar commands, instead, I just reuse ready-made Ansible roles (i.e: abdennour.helmfile, andrewrothstein.kubernetes-helm , andrewrothstein.kubectl ).

The playbook will reuse these roles, prepare your local environment, and you just need to watch its execution progress like a Boss 😎

This is my playbook to install kube utilities.Enjoy it !

Terraform

Terraform 💜 k8s

I don’t need to login to the AWS console and provision the EKS cluster by my hands.

I don’t have to struggle with aws-iam-authenticator and required IAM roles.

I don’t need to even provision worker nodes with Cloudformation.

Instead, I used ready Terraform module(s) and I just played with module’s attributes :

Helm

Helm 💙 k8s

I don’t need to loop thru my k8s yaml manifests and run apply each one.

I don’t have to repeat myself by copying redundant names among all manifests to establish consistency.

I don’t need to write custom bash script to automate deployment of k8s manifests.

I don’t have to assign version for each change of k8s manifests

Instead, I create a Helm Chart for each microservice category, then I let Helm continue the mission.

Also, I don’t have to reinvent the wheel, hence, I reused a lot of ready-made Helm charts ( Prometheus Chart, Ingress Chart,… ).

Helm is my Release engineer 🌹. Thanks Helm!

Helmfile

Oops! 😬 I have a lot of Charts: Charts from scratch & Community Charts

Customizing community Charts require providing Values during installation.

How shall I organize these Values files ? How can I make them maintainable ?

Helmfile is one of the best solution : It’s the Helm of Helm.

Organize your Helm releases in a file named helmfile.yml ,which a definition file of charts that you want to install inside a k8s cluster.

Like docker-composee.yaml, it is a definition file of containers that you want to run.

Sync your Kubernetes cluster state to the desired one by running only one command :

😎

This is how my helmfile looks like :

Bonus:

Udemy course about running EKS on production : https://www.udemy.com/course/aws-eks-kubernetes

Software engineer, Cloud Architect, 5/5 AWS|GCP|PSM Certified, Owner of kubernetes.tn

Software engineer, Cloud Architect, 5/5 AWS|GCP|PSM Certified, Owner of kubernetes.tn