Configuración MinIO para despliegue multi-site

 

MinIO permite replicación multi-site a dos niveles:

image-20240716-162232.png

Los requisitos necesarios para configurar la replicación a nivel de cluster son:

  • Tener vacio de usuarios, buckets y objetos el Site donde se hará la réplica.

  • Publicar en todos los Sites (o abrir a VPN) el puerto del servicio “minio” en Kubernetes. Este puerto es el que balancea entre los Minio-server que se tengan desplegados. Por ejemplo con un Ingress al puerto 9000 del servicio, utilizando un nombre FQDN:

image-20240716-163352.png
  • Si el servicio “minio” se ha expuesto en cada Site utilizado FQDNs que no están en un DNS, indicar en Kubernetes a todos los statefulset de Minio-Console y Minio-Server como resolverlos:

 

 

  • En el Site principal, entrar en la consola de administración de Minio utilizando el usuario onesaitMinio. La consola de administración se expone siempre a traves del loadbalancer bajo el FQDN: https://minioadmin-<dominio>

  • Localizar en la consola principal la opción de menú Administrator > Site Replication y pulsar Add Replication Site. Configurar en esta pantalla el Site principal y los Sites replicados. En nuesto caso, como expusimos el servicio “minio” a través de un Ingress y mapeamos sus FQDN en los Host Aliases, podemos utilizar dichas urls para configurar la replicación.

A la hora de conectar ambos entornos puede existir un problema de confianza de certificados en caso de que sean autofirmados, por lo que, habra que añadir la CA al contenedor. Vease anexo

 

Una vez hecho esto, se compia todo automáticamente y se tiene sincronización bidireccional entre ambos sitios.

Incluso si son instancias de plataforma diferentes, conforme los usuarios se crean en la instancia del Site replicado y entran a su bucket, lo encontrarán poblado con los ficheros del Site principal.

ANEXO: Problema con certificados autofirmados

Sera necesario colocar la CA en el directorio:

/etc/ssl/certs/ca-certificates.crt

Es importante sacar primero el contenido del fichero ‘ca-certificates.crt’ y concatenar al final la CA del certificado que se esta utilizando.

Una vez se tiene este fichero completo, a través de Rancher crear un secreto con toda la informacion y mapearlo en esa ruta en el statefulset de Minio Server.

Sera importante añadir este mapeo a través del yaml y no de la interfaz de Rancher ya que puede ocasionar problemas con el volumeClaimTemplate que tiene mapeado ya anteriormente.

## PARTE VOLUMEMOUNTS: ## - mountPath: /etc/ssl/certs/ca-certificates.crt name: certificates subPath: ca-certificates.crt ## PARTE VOLUMES: ## volumes: - name: certificates secret: defaultMode: 420 secretName: ca-minio