Cómo manejar múltiples clusters de kubernetes

Juan Pablo Caivano
IoTOps
Published in
2 min readJun 3, 2020
Photo by Joseph Barrientos on Unsplash

A medida que empiezas a ver kubernetes como la solución universal para la gestión de tus contenedores (on-prem, cloud, dispositivos edge de IoT o red), empiezas a tener un problema, una gran cantidad de clusters. Si a esto le sumamos que no siempre trabajamos desde la misma máquina, llevar las múltiples configuraciones de un lugar a otro, suele ser un gran dolor de cabeza.

Si el párrafo anterior te identifica en alguna forma, voy a mostrar cómo solucioné esto con dos herramientas, keybase y kubie.

Keybase

Si no conoces keybase quizás te estés perdiendo de una de las mejores soluciones de mensajería segura y servicio de intercambio de archivos, todo basado en PGP. Puntualmente de este sevicio lo que más interés me despierta es la posibilidad de poder contar con un disco de 250GB, encriptado, que puedo montar en la terminal que esté usando.

Kubie

Kubie es una alternativa a kubectx y kubens, y como indica su README, nos permite cambiar de contexto, namespace, y lo mejor, soporta archivos de configuración separados, es decir, puedo tener un archivo KUBECONFIG para cada uno de mis clusters, todos en diferentes locaciones.

Cómo utilizo lo anterior

El esquema que utilizo es bastante simple, considerando que keybase me da un filesystem privado en /run/user/1000/keybase/kbfs/private/${USER}, dentro creo un directorio donde coloco todas las configuraciones:

$ ls -l /run/user/1000/keybase/kbfs/private/pulpo/configs/
total 25
-rw------- 1 pulpo root 1052 may 17 15:07 config_brawne.yaml
-rw------- 1 pulpo root 1057 mar 11 11:27 config_cerebro.yaml
-rw------- 1 pulpo root 1050 mar 5 12:51 config_pinky.yaml
-rw------- 1 pulpo root 1055 may 31 11:03 config_pita.yaml
-rw------- 1 pulpo root 1052 abr 21 16:00 config_wendy.yaml

Por lo que edito el archivo ~/.kube/kubie.yaml, apuntando a dicho directorio.

configs:
# Salida truncada para ejemplo
# Include these globs.
# Default: values listed below.
include:
- /run/user/1000/keybase/kbfs/private/pulpo/configs/*.yaml
# Exclude these globs.
# Default: values listed below.
# Note: kubie's own config file is always excluded.
exclude:
- ~/.kube/kubie.yaml

Con esto, al ejecutar kubie ctx, puedo elegir sobre qué cluster trabajar.

Una aclaración, el nombre que se muestra es el del contexto dentro de cada archivo .yaml, por lo que al armar cada configuración, cambia el context name.

apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://someip:6443
name: default
contexts:
- context:
cluster: default
namespace: dns
user: default
name: pita #Este es el nombre de contexto que deberías modificar
current-context: pita
kind: Config
preferences: {}

--

--

Juan Pablo Caivano
IoTOps
Editor for

DevOps Architect at 3XM Group, aka Pulpo. Geek, GNU/Linux’s fan. OpenSource solutions makes me happy.