Nextcloud en Kubernetes: descubre cómo instalarlo

Si quieres configurar Nextcloud en Kubernetes, es recomendable que utilices S3 como backend de almacenamiento y MariaDB como base de datos. Puedes mejorar el rendimiento con algunos cambios en la configuración.

Combinar Nextcloud y Kubernetes vale la pena

Combinar Nextcloud y Kubernetes con S3 como backend de almacenamiento es en muchos casos una solución prometedora para el sector privado y empresarial. El software de nube no comercial es adecuado tanto para trabajar con servidores locales como con hosts externos y destaca en comparación con numerosas alternativas a Nextcloud por una excelente arquitectura de seguridad. Kubernetes es un sistema de gestión de aplicaciones en contenedores de código abierto y puede utilizarse tanto localmente como para computación en la nube. Este sistema es considerado extremadamente flexible, altamente escalable y muy fiable. Te mostramos cómo configurar Nextcloud en Kubernetes.

Consejo

¿Quieres utilizar Nextcloud con Docker? En ese caso, echa un vistazo al artículo de nuestra guía. En ella también hablamos de la instalación de Nextcloud en Ubuntu 22.04.

¿Qué requisitos deben cumplirse?

Antes de que puedas comenzar a configurar Nextcloud en Kubernetes, es necesario cumplir con algunos requisitos. Necesitarás suficiente almacenamiento y ya deberías haber creado un clúster de Kubernetes. Puedes crearlo en tu ordenador o utilizar un almacenamiento en la nube, dependiendo de los recursos que necesites o tengas disponibles. También debes haber configurado el gestor de paquetes Helm para Kubernetes. Si ya has cumplido estos requisitos, puedes comenzar con los pasos individuales.

Instalar Nextcloud en Kubernetes: los pasos más importantes

Ahora que están sentadas las bases necesarias, puedes comenzar a configurar la combinación de Nextcloud y Kubernetes. Hemos resumido los pasos más importantes a continuación para que puedas hacerlo sin problemas.

Configurar DNS

El primer paso es crear un registro A para un subdominio que pueda dirigirse a la dirección IP deseada. Si estás utilizando una solución local, tu dirección IP pública será el destino correcto; de lo contrario, proporciona la IP de tu servicio en la nube. Los pasos necesarios para ello pueden variar un poco dependiendo del proveedor de DNS que se esté usando.

Añadir y actualizar Helm

Para preparar los recursos para Kubernetes, se utiliza el gestor de paquetes mencionado antes: Helm. Asegúrate de tenerlo instalado en tu dispositivo y de estar conectado a tu clúster de Kubernetes. Si todo está configurado, añade el repositorio de Helm y actualízalo con los siguientes dos comandos:

helm repo add nextcloud https://nextcloud.github.io/helm/
helm repo update
shell

Crear values.yaml

Crea ahora un nuevo Helm chart utilizando el siguiente comando:

nano values.yaml
shell

Después, añade las siguientes especificaciones en este archivo.

Configurar los Cronjobs

En primer lugar, define un límite de tiempo para los Cronjobs. En sistemas operativos similares a Unix Estas, estos son tareas que se ejecutan automáticamente en segundo plano y se repiten. En el caso de Nextcloud en Kubernetes, se trata principalmente de labores de mantenimiento. En el ejemplo, se indica que se ejecuten cada cinco minutos. Sin embargo, especialmente con conjuntos de datos más grandes, puede ser recomendable realizar el mantenimiento con mayor frecuencia. Este es el código correspondiente:

cronjob:
    annotations: {}
    curlInsecure: false
    enabled: true
    failedJobsHistoryLimit: 5
    image: {}
    schedule: '*/5*     *** '
    successfulJobsHistoryLimit: 2
shell

Desactivar el HPA

Ahora desactiva el HPA (Horizontal Pod Autoscaler). Este escalador ajusta de manera automática el número de pods. Si estás utilizando ReadWriteOnce para Nextcloud y deseas controlar la escalabilidad, deberías desactivar el HPA y centrarte en un solo pod. Esta es una solución mucho más conveniente si solo algunos usuarios quieren acceder a los datos. El código se escribe así:

hpa:
    cputhreshold: 60
    enabled: false
    maxPods: 10
    minPods: 1
shell

Sobrescribir la etiqueta de la imagen

Para asegurarte de que se tenga en cuenta la versión actual de Helm, sobrescribe la etiqueta de la imagen usando este código:

image:
    repositor: nextcloud
    tag: 28.0.2-apache
    pullPolicy: IfNotPresent
shell

Ahora se selecciona la versión 28.0.2 o una más reciente.

Elegir una base de datos

Al elegir tu base de datos, tienes tres opciones: MariaDB, PostgreSQL o SQLite. Para el ejemplo, se ha optado por MariaDB. Configura esta base de datos de la manera descrita a continuación y desactiva los otros dos sistemas.

internalDatabase:
    enabled: false
mariadb:
    db:
        name: nextcloud
        password: db-password
        user: nextcloud
    enabled: true
    master:
        persistence:
            accessMode: ReadWriteOnce
            enabled: true
            size: 8Gi
    replication:
        enabled: false
    rootUser:
        password: root-db-password
        forcePassword: true
postgresql:
    enabled: false
shell

Monitoreo para métricas

Si quieres hacer un seguimiento con Prometheus o Grafana, puedes añadir el siguiente código de manera opcional:

metrics:
    enabled: true
    https: false
    image:
        pullPolicy: IfNotPresent
        repository: xperimental/nextcloud-exporter
        tag: v0.3.0
    replicaCount: 1
    service:
        annotations:
            prometheus.io/port: '9205'
            prometheus.io/scrape: 'true'
        labels: {}
        type: ClusterIP
    timeout: 5s
shell
Managed Kubernetes
Managed Kubernetes de IONOS
La plataforma ideal para gestionar aplicaciones en contenedores.

Completamente escalable, seguro y con actualizaciones automáticas.

Permitir archivos de configuración personalizados

Por defecto, Nextcloud en Kubernetes utiliza un archivo llamado config.php para la configuración. Si deseas simplificar o hacer más flexible esta configuración, puedes utilizar tus propios archivos de configuración. Aquí tienes el código necesario para hacerlo:

nextcloud:
    configs:
        custom.config.php: |-
            <?php
            $CONFIG = array (
                'overwriteprotocol' => 'https',
                'overwrite.cli.url' => 'https://drive.example.com',
                'filelocking.enabled' => 'true',
                'loglevel' => '2',
                'enable_previews' => true,
                'trusted_domains' =>
                     [
                        'nextcloud',
                        'drive.example.com'
                     ]
            );
shell

Para hacerlo, simplemente tienes que reemplazar el marcador de posición “example.com” con tu propio dominio.

Configurar Redis

El siguiente archivo de configuración personalizado se implementará para mejorar el almacenamiento en caché utilizando Redis. Helm instala Redis por defecto sin protección de contraseña, por lo que es recomendable añadir una capa adicional de seguridad para evitar problemas futuros al iniciar sesión. Para ello, se puede utilizar el siguiente código para ello:

redis.config.php: |-
    <?php
    $CONFIG = array (
      'memcache.local' => '\\OC\\Memcache\\Redis',
      'memcache.distributed' => '\OC\Memcache\Redis',
      'memcache.locking' => '\OC\Memcache\Redis',
      'redis' => array(
        'host' => getenv('REDIS_HOST'),
        'port' => getenv('REDIS_HOST_PORT') ?: 6379,
        'password' => getenv('your-password-for-redis')
      )
    );
shell

Configurar el backend de almacenamiento

El último archivo de configuración se añade para el backend de almacenamiento S3. A continuación, se muestra cómo se integra en el código:

s3.config.php: |-
    <?php
    $CONFIG = array (
      'objectstore' => array(
        'class' => '\\OC\\Files\\ObjectStore\\S3',
        'arguments' => array(
        'bucket'     => 'bucket-name',
        'autocreate' => true,
        'key'      => 's3-access-key',
        'secret'     => 's3-secret-key',
        'region'     => 's3-region',
        'hostname'   => 's3-endpoint',
        'use_ssl'    => true,
        'use_path_style' => true
        )
      )
    );
shell
IONOS Object Storage
Migra tu infraestructura a IONOS.

Contacta con nuestros expertos cloud y obtén una solución a medida de tus necesidades más soporte 24/7.

Desactivar la configuración de Redis

Como anteriormente sobrescribiste la configuración predeterminada de Redis, ahora debes desactivarla para evitar errores. El código adecuado para ello es el siguiente:

defaultConfigs:
    .htaccess: true
    apache-pretty-urls.config.php: true
    apcu.config.php: true
    apps.config.php: true
    autoconfig.php: false
    redis.config.php: false
    smtp.config.php: true
shell

Definir host, administrador y contraseña

Ahora, define el host, el administrador y la contraseña correspondientes para utilizar Nextcloud en Kubernetes. Escribe para ello este código:

host: drive.example.com
password: your-password
username: admin-name
shell

Simplemente, sustituye los marcadores de posición por tus datos.

Configurar notificaciones por correo electrónico

Tienes la opción de configurar un servicio SMTP (protocolo simple de transferencia de correo) para recibir notificaciones de Nextcloud. Si quieres activarla, utiliza el siguiente código:

mail:
    domain: example.com
    enabled: false
    fromAddress: user
    smtp:
      authtype: LOGIN
      host: example.com
      name: username
      password: your-password
      port: 465
      secure: ssl
shell

Configuración del disco persistente

La siguiente configuración de persistencia está destinada a los datos que Nextcloud almacena en el disco correspondiente. Esto no incluye tus datos de usuario, que se guardarán en S3 como estaba previsto.

persistence:
    accessMode: ReadWriteOnce
    annotations: {}
    enabled: true
    size: 8Gi
shell

Protección con contraseña para Redis

Es recomendable proteger Redis con una contraseña, lo cual también ayuda a prevenir errores de autenticación. Para ello, sigue el siguiente código y asegúrate de reemplazar ‘your-password-for-redis’ por tu contraseña personal:

redis:
    enabled: true
    password: 'your-password-for-redis'
    usePassword: true
shell

Limitar las réplicas

Como ya has desactivado el HPA, deberías limitar el número de réplicas a 1. Esta es la instrucción que debes aplicar:

replicaCount: 1
shell

Instalar Nextcloud en Kubernetes

Por último, instala Nextcloud en Kubernetes y añade MariaDB y Redis. Usa este comando:

kubectl create ns nextcloud
helm upgrade --install --namespace nextcloud -f your-values.yaml nextcloud nextcloud/nextcloud
shell
¿Le ha resultado útil este artículo?
Utilizamos cookies propias y de terceros para mejorar nuestros servicios y mostrarle publicidad relacionada con sus preferencias mediante el análisis de sus hábitos de navegación. Si continua navegando, consideramos que acepta su uso. Puede obtener más información, o bien conocer cómo cambiar la configuración de su navegador en nuestra. Política de Cookies.
Page top