# Kubernetes - Linkerd [Linkerd](https://linkerd.io) es un servicio de malla para _Kubernetes_. _Linkerd_ hace que la ejecución de servicios sea más fácil y segura al brindarle depuración, observabilidad, confiabilidad y seguridad en tiempo de ejecución. ## Instalación Para poder instalar _Linkerd_ en nuestro _Cluster_, primero debemos instalar _Linkerd CLI_, con el siguiente comando: ``` curl -fsL https://run.linkerd.io/install | sh ``` En caso de que cuentes con _MacOS_ puedes instalarlo mediante [Brew](https://brew.sh/index_es), con el siguiente comando: `brew install linkerd` Una vez que hayas instalado _Linkerd CLI_, deberás corroborar la instalación con el comando: ``` linkerd version ``` Antes de continuar con la instalación, debemos asegurarnos de que todo se ha configurado correctamente y podemos instalar el _Control Plane_, para ello ejecuta: ``` linkerd check --pre ``` En caso de que se _Linkerd_ haya verificado que puedes continuar con la instalación, ahora instalaremos el _Control Plane_ mediante _Helm_. Para poder instalar el _Control Plane_ con _Helm_, primero deberás generar algunos certificados con la ayuda de [Step](https://smallstep.com/cli/), por lo que, previamente deberás instalar [Step](https://smallstep.com/docs/step-ca/installation/#kubernetes). Una vez que hayas instalado _Step_, deberás generar dos certificados (Trust anchor certificate y Issuer Certificate), para ello ejecuta los siguientes comandos: ``` 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 ``` Una vez que hayas generado los certificados, deberás agregar el repositorio de _Linkerd_ a _Helm_ con el siguiente comando: ``` helm repo add linkerd https://helm.linkerd.io/stable ``` Posteriormente, instalaremos _Linkerd_ con la ayuda de _Helm_: ``` exp=$(date -v+8760H +"%Y-%m-%dT%H:%M:%SZ") helm install linkerd2 \ --set-file identityTrustAnchorsPEM=ca.crt \ --set-file identity.issuer.tls.crtPEM=issuer.crt \ --set-file identity.issuer.tls.keyPEM=issuer.key \ --set identity.issuer.crtExpiry=$exp \ linkerd/linkerd2 ``` Una vez que hayas instalado _Linkerd_, puedes verificar la instalación con el siguiente comando: ``` linkerd check ``` ## Añadir extensión de Viz para métricas _Viz_ es una extensión de _Linkerd_ que nos proveera de un _Dashboard_ en el cuál podremos observar métricas acerca de nuestro _Cluster_. Para ello, ejecuta el siguiente comando: ``` linkerd viz install | kubectl apply -f - ``` Puedes verificar la instalación con el comando: ``` linkerd check ``` Una vez que hayas instalado _Viz_, podrás ejecutarlo localmente con el comando: ``` linkerd viz dashboard & ``` ## Aplicar _Mesh_ a un namespace Hasta el momento, hemos instalado _Linkerd_, sin embargo, no hemos aplicado un servicio de malla, para ello, debemos ejecutar un comando para que nuestro deployment se actualice y realice la malla. ``` kubectl -n <NAMESPACE> get deploy -o yaml | linkerd inject - | kubectl apply -f - ``` Con esto, los deployments del namespace se actualizarán y agregarán el servicio de malla. Sin embargo, deberás reiniciar el deployment para que se aplique la malla, para ello, ejecuta el siguiente comando: ``` kubectl -n <NAMESPACE> rollout restart <DEPLOYMENT-NAME> ``` Una vez que se reinicie el deployment, el servicio de malla estará listo.