MULTICLUSTER COM LINKERD – PARTE 2
Author
AdonaiTue Mar 28 2023

MULTICLUSTER COM LINKERD – PARTE 2

Nesta série de cinco partes, nosso SRE/Kubernetes Admin, Adonai Costa, ensina a criar e manter multicluster com um service mesh que realmente funciona: o Linkerd.

Parte 1

Instale o metallb para obter LoadBalancers nos seus clusters

helm repo add metallb https://metallb.github.io/metallb
helm repo update

for ctx in kind-demo kind-demo3; do
 helm install metallb -n metallb --create-namespace metallb/metallb --kube-context=${ctx}
done

Crie um `ipaddresspool` para cada cluster baseado em sua rede docker kind, mas lembre-se para cada cluster, um `ipaddresspool` diferente, para evitar conflito.

Para isso, primeiro descubra o range de IP do seu kind network

docker network inspect kind -f '{{.IPAM.Config}}'
{172.17.0.0/16  172.17.0.1 map[]} {fc00:f853:ccd:e793::/64  fc00:f853:ccd:e793::1 map[]}]

O meu é `172.17.0.16`, então vou utilizá-lo na configuração de IPs para meus services do tipo `LoadBalancer`.

kubectl --context=kind-demo apply -f - <<EOF
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: first-pool
  namespace: metallb-system
spec:
  addresses:
  - 172.17.0.61-172.17.0.70

---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
  labels:
    todos: verdade
  name: example
  namespace: metallb-system
EOF

E DEPOIS….

kubectl --context=kind-demo3 apply -f - <<EOF
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: first-pool
  namespace: metallb-system
spec:
  addresses:
  - 172.17.0.71-172.17.0.80
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
  labels:
    todos: verdade
  name: example
  namespace: metallb-system
EOF

Essa é a hora de você validar se sua máquina consegue se conectar a um serviço nos clusters, do tipo `LoadBalancer`.

# crie um deploy simples:

kubectl create deploy web --image nginx --context=kind-demo

# expõe o deploy como LoadBalancer

kubectl expose deploy web --port 80 --target-port 80 --type LoadBalancer --context=kind-demo

# verifique o IP designado ao seu service

kubectl get service web --context=kind-demo
NAMESPACE   NAME       TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)           AGE
default     web        LoadBalancer   10.101.106.156   172.17.0.61   80:31507/TCP      20s

# faça um teste pra ver se está no ar

curl 172.17.0.61
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; } .... bla bla bla bla
```

# deu certo? Pode apagar

kubectl delete deploy,svc web --context=kind-demo

Faça o mesmo no outro cluster mudando o `–context=kind-demo3`

Em caso de problemas verifique:

 – firewall dentro da sua máquina, 

 – rede correta do docker network kind

 – se você distribuiu corretamente os `ipaddresspool` nos metallb, sem repeti-los nos clusters, a idéia é cada um com seu pool de IPs para LoadBalancers, hein.

Em breve publicaremos a parte 3! Fique ligado.

Já assinou a nossa Newsletter?

Artigos em destaque

Encontre oportunidades na Jornada Kubernetes

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.