Instalando Linkerd e sua família que vai nos ajudar com o MultiCluster
Antes de mais nada, é preciso criar a cadeia de certificado pro linkerd, a ser instalado em todos os clusters igualmente:
mkdir certs && cd certs
step certificate create root.linkerd.cluster.local ca.crt ca.key \
--profile root-ca \
--no-password \
--insecure
step certificate create identity.linkerd.cluster.local \
issuer.crt issuer.key \
--profile intermediate-ca --not-after 8760h \
--no-password --insecure --ca ca.crt --ca-key ca.key
Guarde os certificados, eles são umas das partes core do seu linkerd, mas se perder você precisará reinstalar e reiniciar pods que estão em mesh.
Execute essas instruções aqui ainda no diretório certs com os certificados criados:
alias linkerd='linkerd'
for ctx in kind-demo kind-demo3; do
echo "install crds ${ctx}"
linkerd install --context=${ctx} --crds | kubectl apply -f - --context=${ctx};
echo "install linkerd ${ctx}";
linkerd install --context=${ctx} \
--identity-trust-anchors-file=ca.crt \
--identity-issuer-certificate-file=issuer.crt \
--identity-issuer-key-file=issuer.key | kubectl apply -f - --context=${ctx};
echo "install viz ${ctx}";
linkerd --context=${ctx} viz install | kubectl apply -f - --context=${ctx};
echo "install multicluster ${ctx}";
linkerd --context=${ctx} multicluster install | kubectl apply -f - --context=${ctx};
echo "install smi ${ctx}";
linkerd smi install --context=${ctx} | kubectl apply -f - --context=${ctx};
Done
Cheque se seu linkerd-multicluster recebeu um ip LoadBalancer e faça um telnet pra eles só pra validar
for ctx in kind-demo kind-demo3; do
printf "Checking cluster: ${ctx} ........."
while [ "$(kubectl --context=${ctx} -n linkerd-multicluster get service linkerd-gateway -o 'custom-columns=:.status.loadBalancer.ingress[0].ip' --no-headers)" = "<none>" ]; do
printf '.'
sleep 1
done
echo "`kubectl --context=${ctx} -n linkerd-multicluster get service linkerd-gateway -o 'custom-columns=:.status.loadBalancer.ingress[0].ip' --no-headers`"
printf "\n"
done
Hora de ligar os clusters
Essa é a hora em que o linkerd cria serviceaccounts nos 2 clusters, cria secret com o kubeconfig de cada um cruzado e voilá!
linkerd --context=kind-demo multicluster link --cluster-name kind-demo | kubectl apply -f - --context=kind-demo3
linkerd --context=kind-demo3 multicluster link --cluster-name kind-demo3 | kubectl apply -f - --context=kind-demo
Vamos ver?
for ctx in kind-demo kind-demo3; do
echo "Checking link....${ctx}"
linkerd --context=${ctx} multicluster check
echo "Checking gateways ...${ctx}"
linkerd --context=${ctx} multicluster gateways
echo "..............done ${ctx}"
done
Fique atento, em breve publicaremos a parte 4!