EN

Multicluster with Linkerd – Part 1

Create and manage multi-Kubernetes clusters with Linkerd using KinD, kubectl, Helm, Step, and Linkerd-SMI. Try it now!

SRE/Kubernetes Admin

Adonai Costa

First of ALL 🎈 # Welcome! 💚                                                                                                                    

Really Thanks to my friends of Buoyant and Linkerd project - Catherine Paganini, Jason and Bill Morgan and Flynn, without you, we can't reach multiclusters in mesh ( because others meshs, are slipslop )

This repository was written in 2022/December, and the binaries and paths may be updated, [contact me](mailto:adonai.costa@gmailcom) if you need help! But try to understand the steps ;-)

The idea here is to show how easy it is to create and maintain multiclusters with a service mesh that actually works. Until now, this demand was a hype and now it arrives as a real need, given that there is indeed unavailability in public or private clouds.

After researching a lot, I understood that linkerd proved to be capable of performing this task with ease, traceability, security, and observability. Other service meshes present countless limitations that prevent us from implementing, maintaining, or even being able to perform a simple troubleshoot.

Install the tools that will make you eager to create clusters in mesh. 

kind: https://kind.sigs.k8s.io/docs/user/quick-start/#installation  
kubectl: https://kubernetes.io/docs/tasks/tools/ 
helm: https://helm.sh/docs/intro/install/
step: https://smallstep.com/docs/step-cli/installation
linkerd: https://github.com/linkerd/linkerd2/releases/tag/stable-2.12.3
linkerd-smi: https://github.com/linkerd/linkerd-smi/releases/tag/v0.2.0

Let's go!

KinD, which everyone already knows, creates Kubernetes clusters on your personal machine for tests and validations. Very useful so you don't mess up your productive environment.
kubectl and Helm need no introduction.
step is a utility that facilitates the creation of certificates that we are going to use.
The linkerd binary, obviously, was developed by the grace of God and my friends at Buoyant to create, update, and interact with the finest service mesh in the world.
And finally, linkerd-smi is the add-on/extension used to create custom resources like TrafficSplit, which can even interact with flagger for automatic canary-type deployment rollouts.

I will demonstrate here the local multi-Cluster function using these tools.

Creating the kind-demo and kind-demo3 clusters, YES, YOU CAN! Go! Go! Go! 

❯ cat << EOF >> kind.yaml

kind: Cluster

apiVersion: kind.x-k8s.io/v1alpha4

name: demo

networking:

  apiServerAddress: 192.168.1.61 # PUT YOUR IP ADDRESSS OF YOUR MACHINE HERE DUMMIE! ;-) 

  podSubnet: "10.244.0.0/16"

  serviceSubnet: "10.96.0.0/12"

nodes:

- role: control-plane

  image: kindest/node:v1.24.7@sha256:577c630ce8e509131eab1aea12c022190978dd2f745aac5eb1fe65c0807eb315

- role: worker

  image: kindest/node:v1.24.7@sha256:577c630ce8e509131eab1aea12c022190978dd2f745aac5eb1fe65c0807eb315

- role: worker

  image: kindest/node:v1.24.7@sha256:577c630ce8e509131eab1aea12c022190978dd2f745aac5eb1fe65c0807eb315

EOF

kind create cluster --config kind.yaml

Creating cluster "demo" ...

 ✓ Ensuring node image (kindest/node:v1.24.7) 🖼 

 ✓ Preparing nodes 📦 📦 📦  

 ✓ Writing configuration 📜 

 ✓ Starting control-plane 🕹️ 

 ✓ Installing CNI 🔌 

 ✓ Installing StorageClass 💾 

 ✓ Joining worker nodes 🚜 

Set kubectl context to "kind-demo"

You can now use your cluster with:

kubectl cluster-info --context kind-demo

Have a question, bug, or feature request? Let us know! https://kind.sigs.k8s.io/#community 🙂

❯ cat << EOF >> kind3.yaml

kind: Cluster

apiVersion: kind.x-k8s.io/v1alpha4

name: demo3

networking:

  apiServerAddress: 192.168.1.61 # PUT YOUR IP ADDRESSS OF YOUR MACHINE, HERE DUMMIE! ;-)

  podSubnet: "10.245.0.0/16"

  serviceSubnet: "10.97.0.0/12"

nodes:

- role: control-plane

  image: kindest/node:v1.24.7@sha256:577c630ce8e509131eab1aea12c022190978dd2f745aac5eb1fe65c0807eb315

- role: worker

  image: kindest/node:v1.24.7@sha256:577c630ce8e509131eab1aea12c022190978dd2f745aac5eb1fe65c0807eb315

- role: worker

  image: kindest/node:v1.24.7@sha256:577c630ce8e509131eab1aea12c022190978dd2f745aac5eb1fe65c0807eb315

EOF

kind create cluster --config kind3.yaml

Creating cluster "demo3" ...

 ✓ Ensuring node image (kindest/node:v1.24.7) 🖼 

 ✓ Preparing nodes 📦 📦 📦  

 ✓ Writing configuration 📜 

 ✓ Starting control-plane 🕹️ 

 ✓ Installing CNI 🔌 

 ✓ Installing StorageClass 💾 

 ✓ Joining worker nodes 🚜 

Set kubectl context to "kind-demo3"

You can now use your cluster with:

kubectl cluster-info --context kind-demo3

Have a question, bug, or feature request? Let us know! https://kind.sigs.k8s.io/#community 🙂

Newsletter Getup.

Atualizações sobre Kubernetes e Software Supply Chain Security todos os meses.

Operating Kubernetes in production for more than 13 years. With Quor, this experience extends to software supply chain security as well.