Install Linkerd and its family to facilitate MultiCluster, creating and installing certificates, verifying the LoadBalancer IP, and connecting the clusters.

SRE/Kubernetes Admin
Adonai Costa

Installing Linkerd and its family that will help us with MultiCluster
First of all, we need to create the certificate chain for Linkerd, which will be installed on all clusters equally:
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
Keep the certificates safe; they are a core part of your Linkerd setup. If you lose them, you will have to reinstall and restart the pods that are in the mesh.
Run these instructions here while still in the certs directory with the certificates created:
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
Check if your linkerd-multicluster received a LoadBalancer IP and run a telnet to them just to validate
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
Time to link the clusters
This is when Linkerd creates service accounts in both clusters, generates a secret with the kubeconfig of each one cross-referenced, and 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
Shall we see?
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
Stay tuned, we will publish part 4 soon!
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.
GET UP
© Getup · 2026

