Hola a todos!! Previamente hemos visto como desplegar Kasten K10 en multiples distribuciones de Kubernetes como AWS EKS, Azure AKS, Google GKE y OpenShift.  Si contamos con multiples cluster de Kubernetes, significa que en cada uno de ellos debo desplegar y configurar Kasten K10.  La pregunta entonces es, ¿Puedo gestionar de manera centralizada todas estas instancias de Kasten?.  Pues la respuesta es SI, y esto se logra habilitando el modo Multi-Cluster Manager de Kasten, que es lo que mencionaremos a continuación.

El modo K10 multi-cluster manager simplifica las operaciones de Kasten K10 a través de multiples cluster de Kubernetes, a través de una consola de administración centralizada.  Esto se logra definidiendo una relacion primario-secundario entre las instancias de Kasten.  La instancia Primaria provee el punto unico de gestión y el acceso al dashboard para gestionar tanto la instancia primaria como todas las instancias secundarias.

Requisitos

Que necesitamos?  Pues es muy simple:

  • Necesitamos al menos 1 cluster de Kubernetes con Kasten ya instalado, y que definiremos como instancia Primara en el modo multi-cluster.
  • 1 o más clusters de Kubernetes con Kasten ya instalado, y que definiremos como instancias Secundarias en el modo multi-cluster.
  • Descargar la herramienta k10multicluster  que es la que utilizaremos para el proceso de bootstrapping requerido para habilitar el modo multi-cluster.
  • La instancia Primaria de Kasten debe poder acceder al Dashboard de las instancias secundarias de K10, ya sea mediante un Ingress, Route o Load Balancer.
  • La instancia Primaria de Kasten debe poder acceder al API Server de las instancias secundarias de K10.
  • Debemos tener configurado los Contextos en la maquina que utilizaremos para llevar a cabo este procedimiento, de manera de tener acceso a todos los cluster de Kubernetes a configurar en modo Multi-Cluster.  Estos Contextos se deben configurar previamente en el fichero kubeconfig.

 

Configurar la Instancia Primaria

El cluster a través del cual accederemos al K10 Multi-Cluster Manager será designado como Primario.   En el cluster Primario se pueden definir politicas, Location Profiles y otras configuraciones centralizadamente, las cuales posteriormente pueden ser distribuidas a los cluster designados.  Adicionalmente, en el cluster Primario podremos obtener de manera centralizada todas las metricas agregadas por el cluster Primario y todos los clusters Secundarios.

En primer lugar, ejecutaremos el siguiente comando para listar todos los Contextos disposible:

Copy to Clipboard

Para activar el modo Multi-Cluster en la instancia Primaria, es necesario ejecutar el siguiente comando:

Copy to Clipboard

 

Como vemos en el comando anterior, para activar el modo Multi-Cluster en Kasten, debemos ejecutar la herramienta k10multicluster espeficando el nombre del contexto (–context) que representa al cluster de Kubernetes que será designado como instancia Primaria, y que debe tener Kasten ya instalado.   En el mismo comando debemos definir un nombre (–name) que será el nombre visible en el Dashboard de Kasten una vez habilitado el modo multi-cluster.

En mi caso, he habilitado como Primaria una instancia de Kasten desplegada sobre un cluster AWS EKS que se encuentra en la región de Paris (eu-west-3),  y como nombre en el dashboard he definido “aws-eks-paris”.  En este punto, ya podemos acceder al Dashboard de K10 Multi-Cluster Manager utilizando la siguiente URL: https://<URL to k10 gateway service>/k10/#/clusters.

 

Configurar las Instancias Secundarias

Luego de activar el modo Multi-Cluster en la instancia Primaria de Kasten, las demás instancias donde habilitaremos este modo serán designadas como instancias Secundarias.   Estas instancias Secundarias reciben politicas y otras configuraciones desde la instancia Primaria.

En nuestro caso añadiremos una instancia de Kasten desplegada sobre un cluster AWS EKS que se encuentra en la región de Londres (eu-west-2). Para añadir un cluster Secundario al K10 Multi-Cluster Manager, se debe ejecutar el siguiente comando:

Copy to Clipboard

 

Al ejecutar este comando debemos proveer de la siguiente información:

  • primary-context: El nombre del contexto que representa al cluster Kubernetes designado como Primario.
  • primary-name: El nombre visible en el Dashboard para el cluster Primario
  • secondary-context: El nombre del contexto que representa al cluster Kubernetes que estamos añadiendo como cluster Secundario.
  • secondary-name: El nombre visible en el Dashboard para el cluster Secundario que estamos añadiendo.
  • secondary-cluster-ingress: La URL de acceso al Dashboard del cluster Secundario que estamos añadiendo.

 

Si nos conectamos al Dashboard nuevamente, veremos que tenemos ahora visibles tanto el cluster Primario como el cluster Secundario:

 

Configurar el acceso via RBAC

Durante la instalación y/o upgrade de Kasten K10, un ClusterRole llamado k10-mc-admin es instalado, el cual otorga al administrador acceso a  las instancias de Kasten (con privilegios de administración), acceso a algunos recursos de Kubernetes, y privilegios para configurar el RBAC en el Multi-Cluster Manager.   Durante la activación (bootstrapping) del modo Multi-Cluster en la instancia Primaria, Kasten crea un RoleBinding permitiendo que el grupo k10:admins tenga asignado el rol k10-mc-admin para la gestión del cluster.

Como vemos en la imagen anterior, si bien ya podemos ver ambos clusters en el Multi-Cluster Manager, el cluster secundario lanza una alerta indicando que es necesario permitir que el usuario administrador del modo Multi-Cluster pueda contar con acceso al cluster Secundario que acabamos de añadir.  Esto sucede principalmente porque el usuario o grupo que estoy utilizando para conectarme al Multi-Cluster Manager no tiene privilegios sobre la instancia de Kasten configurada como Secundaria.

A modo de ejemplo, en nuestro escenario la instancia primaria está configurada para utilizar autenticación via OIDC utilizando Azure AD, por lo que estamos utilizando un usuario de Azure AD para conectarnos a la instancia primaria y al Multi-Cluster Manager, mientras que la instancia secundaria esta configurada para utilizar autenticación basica con un usuario llamado admin que cuenta con los privilegios necesarios.   Como el usuario de Azure AD que estoy utilizando para conectarme al Multi-Cluster Manager no pertenece al grupo k10:admins en la instancia Secundaria, una opción que tengo es otorgar privilegios al usuario o grupo de Azure AD para que pueda gestionar uno o más clusters en el entorno Multi-Cluster, como vemos en la siguiente imagen.

 

 

Como vemos en la imagen anterior, estamos añadiendo un K10 Cluster Role Binding para permitir que el grupo de Azure AD que estoy utilizando tenga asignado el rol llamado k10-multi-cluster-admin sobre TODOS los clusters gestionados desde el Multi-Cluster Manager.  Alternativamente podemos otorgar privilegios a clusters especificos, o incluso asignar otros roles que cuenten con menos privilegios.  Más detalles acerca de RBAC en Multi-Cluster Manager lo pueden ver en el siguiente link: https://docs.kasten.io/latest/multicluster/rbac.html.

 

Luego de asignar el rol requerido, vemos que ahora ambos clusters pueden ser gestionados sin problemas desde el Multi-Cluster Manager

 

 

Conclusión

Como podemos ver, el proceso es bastante sencillo, y nos permite una gestion centralizada de multiples instancias de Kasten K10 que pueden estar distribuidas en multiples ubicaciónes.  Como ejemplo final, he añadido tambien una instancia de Kasten desplegada sobre Google GKE, y que he asignado como instancia Secundaria en el Multi-Cluster Manager.  Como vemos en la siguiente imagen, las 3 instancias, ubicadas en distintas regiones e incluso en distintos Cloud Providers, pueden ser gestionadas de manera centralizada.