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 )
Esse repositório foi escrito em 2022/Dezembro, podendo ser atualizado os binários e os paths, [contate-me](mailto:adonai.costa@gmailcom) se precisar de ajuda! Mas tente entender os passos 😉
A ideia aqui é mostrar o quão fácil é criar e manter multiclusters com um service mesh que realmente funciona. Até então, esta demanda era um era hype e agora chega como uma necessidade real, visto que há, sim, indisponibilidade nas clouds públicas ou privadas.
Após pesquisar bastante entendi que o linkerd se mostrou capaz de realizar essa tarefa com facilidade, rastreabilidade, segurança e observabilidade. Outros service meshs apresentam limitações mil que nos impedem de implementar, dar manutenção ou sequer conseguirmos fazer um simples troubleshoot.
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
Bora lá!
O KinD, que todo mundo já conhece, cria clusters Kubernetes na sua máquina pessoal para testes e validações. Muito útil para que você não faça caca no seu ambiente produtivo.
O kubectl e Helm não precisam de apresentações.
O step é um utilitário que facilita a criação de certificados que vamos usar.
O binário linkerd, obviamente, foi elaborado com a graça de Deus e pelos meus amigos da Buoyant para criar, atualizar, interagir com o service mesh mais gostosinho do mundo.
E por fim o linkerd-smi é o complemento/extensão usado para criar custom resources como o TrafficSplit, que pode inclusive interagir com o flagger para rollout de deploys do tipo canary automáticos.
Vou demonstrar aqui a função multi-Cluster localmente utilizando essas ferramentas.
❯ 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 🙂
Já assinou a nossa Newsletter?
Artigos em destaque
O Kubernetes já faz muito por você e a Getup faz o resto. Oferecemos apoio técnico e estratégico para encontrar oportunidades na sua operação.