Como instalar o Nextcloud no Kubernetes

Para instalar o Nextcloud no Kubernetes, recomendamos usar S3 para o back-end de armazenamento e MariaDB como solução de banco de dados. Com algumas alterações nas configurações, você consegue melhorar o desempenho.

Nextcloud e Kubernetes: Combinação de sucesso

A combinação de Nextcloud e Kubernetes com S3 para armazenamento é uma solução promissora tanto para uso privado quanto empresarial. O software de nuvem não comercial é adequado para trabalhar com servidores locais e hosts externos, ostentando uma excelente arquitetura de segurança quando comparado às diversas alternativas ao Nextcloud. Kubernetes é um sistema de gerenciamento de código aberto para aplicações em contêineres e pode ser usado tanto na computação em nuvem quanto localmente. O sistema é considerado flexível, altamente escalável e à prova de falhas. Leia este artigo até o final para descobrir como instalar o Nextcloud no Kubernetes.

Dica

Para instalar o Nextcloud com o Docker, consulte esse tutorial passo a passo do nosso Digital Guide. Também ensinamos você como instalar o Nextcloud no Ubuntu 22.04.

Pré-requisitos de sistema

Antes de iniciar a instalação do Nextcloud no Kubernetes, algumas condições devem ser atendidas. Você precisa ter espaço de armazenamento suficiente e criar um cluster Kubernetes. Isso pode ser feito em sua máquina local ou no armazenamento em nuvem, dependendo da capacidade disponível. Além disso, é preciso se assegurar de que o gerenciador de pacotes Helm esteja configurado para o Kubernetes. Quando tudo estiver pronto, você poderá prosseguir com o processo de instalação.

Passo a passo: Instalar Nextcloud no Kubernetes

Depois de preparar a base necessária, comece o processo de instalação do Nextcloud no Kubernetes. Resumimos os principais passos nas seções a seguir.

Configurar DNS

O primeiro passo é criar um A-Record para um subdomínio que seja capaz de apontar para o endereço IP desejado. Se estiver usando a solução local, seu endereço IP público é o destino correto. Caso contrário, insira o IP informado pelo seu serviço de nuvem. Esses passos podem apresentar pequenas variações, dependendo do provedor de DNS.

Adicionar e atualizar Helm

O Kubernetes é implementado usando o gerenciador de pacotes Helm, que precisa ser instalado no seu cliente. Além disso, certifique-se de ter uma conexão com o seu cluster Kubernetes. Em caso positivo, adicione o repositório do Helm e atualize-o com os seguintes comandos:

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

Criar values.yaml

Crie um gráfico Helm com o seguinte comando:

nano values.yaml
shell

Em seguida, adicione no arquivo as especificações descritas abaixo.

Definir cronjobs

Primeiro, defina um limite de tempo para cronjobs. Em sistemas operacionais do tipo Unix-like, cronjobs são tarefas executadas automaticamente e em segundo plano durante intervalos definidos. No caso do Nextcloud no Kubernetes, essas são as tarefas de manutenção primárias. Neste exemplo, definimos o cronjob para rodar a cada cinco minutos. Para volumes de dados maiores, talvez seja aconselhável uma manutenção mais frequente. Use o seguinte código:

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

Ativar HPA

Em seguida, desative o Horizontal Pod Autoscaler (HPA), que redimensiona automaticamente o número de pods. Se você usa ReadWriteOnce no Nextcloud e prefere controlar o redimensionamento manualmente, desative o HPA e foque em um pod. Essa abordagem é mais conveniente se poucos usuários precisarem de acesso à solução. O código correspondente é:

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

Substituir tag image

Para assegurar que a versão atual do Helm seja usada, substitua a tag image. Para fazer isso, use o seguinte código:

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

A versão 28.0.2 ou mais recente será selecionada.

Selecionar banco de dados

Você tem três opções de banco de dados para escolher: MariaDB, PostgreSQL ou SQLite. Em nosso exemplo, usaremos o MariaDB. Configure o banco de dados seguindo os detalhes abaixo e desative os outros dois sistemas:

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

Monitorar métricas

Para realizar o monitoramento com Prometheus ou Grafana, insira o código a seguir. Este passo é 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 da IONOS
O jeito mais simples de gerenciar cargas de trabalho em contêineres.

Instalação de clusters Kubernetes totalmente automatizada, visibilidade máxima e controle de clusters K8s.

Habilitar arquivos de configuração próprios

Por padrão, o Nextcloud também usa um arquivo chamado “config.php” para as configurações feitas no Kubernetes. Para simplificar ou deixar o processo mais flexível, insira os seus próprios arquivos de configuração usando o código a seguir:

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

Substitua o placeholder “exemplo.com” pelo seu próprio domínio.

Configurar Redis

Para melhorar o armazenamento em cache com o Redis e aprimorar o desempenho geral, adicione um arquivo de configuração personalizado. Por padrão, o Helm Redis é instalado sem proteção com senha, mas é recomendável incluir essa camada extra de segurança. Use o código a seguir para configurar o Redis com senha e integre-o ao Nextcloud:

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("sua-senha-do-redis")
      )
    );
shell

Configurar back-end de armazenamento

O último arquivo de configuração é inserido para o back-end de armazenamento S3. Ele é definido no código a seguir:

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
Object Storage da IONOS
É ideal para backups, assim como para arquivar dados corporativos.

Você pode armazenar qualquer quantidade de dados estáticos por preços acessíveis.

Desativar configuração do Redis

Como você substituiu a configuração padrão do Redis na seção acima, ela deverá ser desativada para evitar erros. Para fazer isso, use este código:

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 e senha

Insira o host, o administrador e a senha para usar o Nextcloud no Kubernetes. Use este código:

host: drive.exemplo.com
password: sua-senha
username: nome-do-administrador
shell

Substitua os placeholders pelos seus próprios dados.

Configurar notificações por e-mail

Opcionalmente, você pode configurar um serviço SMTP (Simple Mail Transfer Protocol) para receber notificações do Nextcloud:

mail:
    domain: exemplo.com
    enabled: false
    fromAddress: user
    smtp:
      authtype: LOGIN
      host: exemplo.com
      name: nomedeusuario
      password: sua-senha 
      port: 465
      secure: ssl
shell

Configurar unidade de persistência

A configuração de persistência a seguir é destinada aos dados que o Nextcloud armazena no sistema correspondente. Ela não afeta os seus dados de usuário, que são armazenados no S3 em intervalos definidos:

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

Proteger Redis com senha

É recomendável proteger o Redis com uma senha para impedir a ocorrência de erros durante a autenticação. Para isso, use o código a seguir, substituindo o placeholder pela sua senha:

redis:
    enabled: true
    password: sua-senha-no-redis
    usePassword: true
shell

Limitar replicações

Como você já desativou o HPA, é preciso limitar o número possível de replicações para 1:

replicaCount: 1
shell

Instalar Nextcloud no Kubernetes

Para finalizar, instale o Nextcloud no Kubernetes e adicione o MariaDB e o Redis:

kubectl create ns nextcloud
helm upgrade --install --namespace nextcloud -f your-values.yaml nextcloud nextcloud/nextcloud
shell
Este artigo foi útil?
Para melhorar a sua experiência, este site usa cookies. Ao acessar o nosso site, você concorda com nosso uso de cookies. Mais informações
Page top