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
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.