Kubernetes: Empezando con buen pie en local con Rancher y Microk8s en Ubuntu 20.04
Dentro de esta serie de tutoriales vamos a intentar explicar cómo funcionar con Kubernetes (k8s para los amigos) en local de una manera sencilla, pero potente. Para el primer artículo vamos a realizar una instalación de Microk8s en Ubuntu 20.04.
Nota Aclaratoria: k8s es la denominación corta de Kubernetes
Microk8s es una instalación de un cluster de kubernetes con algunas cosillas interesantes, como su listado de addons, entre los que vamos a destacar:
- dashboard: el interfaz web ui por defecto de k8s
- helm y helm3: el sistema de paquetes de k8s
- dns: para manejar los registros dns externos
- ingress: para manejar los servicios de k8s
- istio: service mesh para k8s
- registry: repositorio privado de imágenes docker
- storage: deifne una storage class para guardar volúmes en el cluster en hostpath
Instalación
La instalación en Ubuntu 20.04 es super sencilla ya que existe un snap que lo instala:
$ sudo snap install microk8s --classic --channel=1.18/stable
Mientras debermos esperar a que termine de instalar
$ microk8s status --wait-ready
Activación de addons
Para activar los addons ejecutaremos
$ microk8s enable dashboard dns registry helm storage ingress
Así tendremos todos estos addons instalados en el cluster de una manera sencilla
Acceso al dashboard
Para acceder al dashboard podremos realizar un port-forward muy sencillo:
$ microk8s dashboard-proxy
Este comando puedes ejecutarlo cuando quieras volver a entrar al dashboard las veces que quieras, mientras que no esté ya activo, claro.
Después accederemos a la url, desde Firefox, Chrome está últimamente pijo con el tema de los certificados
https://127.0.0.1:10443
No te asustes, como no tenemos el certificado tendremos que saltarnos esta protección.
También nos habrá generado un token que deberemos de introducir para poder acceder al webui de k8s,
Copia el token y pégalo en la página de autorización del dashboard:
Pulsa el botón de SignIn y ya estaŕas dentro de la consola de admind el cluster k8s.
Cuando quieras cortar la conexión con el dashboard simplemente haz Control+C en la terminar donde hiciste el proxy y se liberaŕa el puerto local.
Para la siguiente vez que quieraas entrar puedes acceder al token con
$ token=$(microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
$ microk8s kubectl -n kube-system describe secret $token
Arranque y parada
Como no queremos que esto esté arrancado todo el rato podemos pararlo con:
$ microk8s stop
y arrancarlo con
$ microk8s start
Ejecución de comandos con el cluster
Para ejcutar comandos en el cluster debemos usar el comando microk8s kubectl como substituto de kubectl, como hacer esto todo el rato no mola nos crearemos un alias
alias mkctl="microk8s kubectl"
Mételo por ejemplo al final del .bashrc
y para poder usarlo a partir de ahora en esa terminal haz un
$ source .bashrc
Prueba que funciona correctamente ejecutando
$ mkctl get ns
Así que ya podemos trabajar con e lcluster tranquilamente ahora bien, si queremos hacerlo con clase, debemos de gestionarlo con Rancher
Instalación de Rancher
Lo primero que necesitamos es poder ejecutar los pods en modo privilegiado, no es recomendable hacer esto en producción pero en una instalación en local es algo totalmente tolerable, para que el agente del nodo de rancher se pueda ejecutar sin problemas.
$ sudo sh -c 'echo "--allow-privileged=true" >> /var/snap/microk8s/current/args/kube-apiserver'
Después deberemos reiniciar el servidor para aplicar este modo
$ sudo systemctl restart snap.microk8s.daemon-apiserver.service
Para que funcione correctamente helm v2 necesitaremos que esté instalado tiller en el cluster
$ sudo microk8s.kubectl create serviceaccount tiller --namespace kube-system
$ sudo microk8s.kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
$ sudo microk8s.helm init --service-account=tiller
Después instalaremos cert-manager para que se encargue de l gestión de los certificados ssl
$ sudo microk8s.helm repo add jetstack https://charts.jetstack.io
$ sudo microk8s.kubectl apply -f https://raw.githubusercontent.com/jetstack/cert-manager/release-0.9/deploy/manifests/00-crds.yaml
$ sudo microk8s.kubectl create namespace cert-manager
$ sudo microk8s.kubectl label namespace cert-manager certmanager.k8s.io/disable-validation=true
$ sudo microk8s.helm install --name cert-manager --namespace cert-manager --version v0.9.1 jetstack/cert-manager
Verificamos que todo está instalado correctamente con
$ mkctl get all -n cert-manager
Ahora ya podemos instalar el chart de helm de rancher
Activamos helm3 en microk8s e instalamos rancher con el chart de helm
$ sudo microk8s enable helm3
$ sudo microk8s.kubectl create namespace cattle-system
$ sudo microk8s.kubectl label namespace cattle-system cattle-system.k8s.io/disable-validation=true
$ sudo microk8s.helm3 repo add rancher-latest https://releases.rancher.com/server-charts/latest
$ sudo microk8s.helm3 repo update
$ sudo microk8s.helm3 install rancher rancher-latest/rancher --namespace cattle-system --set replicas=1 --set hostname=${HOSTNAME}.home
Esperamos a ver que está todo activo:
$ watch microk8s.kubectl get all -n cattle-system
Cuando termina el despliegue te ha generado un certificado para ${HOSTNAME}.home
Deberemos introducir en el /etc/hosts a entrada para decir que 127.0.0.1 es ${HOSTNAME}.home en mi caso sauron.home
$ sudo echo "127.0.0.1 ${HOSTNAME}.home" >> /etc/hosts
revisa que está todo correcto con
$ cat /etc/hosts
Ahora ya podrán entrar a https://${HOSTNAME}.home en mi caso https://sauron.home
Ya sabemos que este sevridor tiene un certificado autogenerado, así que aceptamos y pasamos a configurar Rancher
En esta pantalla de configuración de Rancher meteremos nuestra contraseña de acceso, aceptamos los términos y condiciones y pulsamos en continue.
Ahora nos mostrará la url de acceso y simplemente la salvamos pulsando en Save URL
Ya tenemos instalado Rancher dentro del cluster de Kubernetes pero éste no está importado correctamente dentro de Rancher por lo que aparecerá con color rojo.
Es algo normal hasta que esté completamente configurado, esto tardará dependiendo de lo rápida que sea tu máquina.
Una vez que termine de aprovisionar lo que necesita en el cluster, verás el cluster correctamente conectado.
Si pulsas en el nombre del cluster podemos ver sus métricas y configuraciones
A partir de este momento ya podemos realizar todas las gestiones que nos permite tanto kubernetes por sí solo como teniendo rancher configurado, lo veremos en siguientes entregas de esta serie.
Si deseas desinstalar microk8s ejecuta el siguienet comando:
sudo snap remove –purge microk8s
Referencias:
- https://microk8s.io/
- https://suda.pl/5-minute-home-server-with/
Comments