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.
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
shellCriar values.yaml
Crie um gráfico Helm com o seguinte comando:
nano values.yaml
shellEm 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
shellAtivar 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
shellSubstituir 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
shellA 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
shellMonitorar 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
shellInstalaçã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'
]
);
shellSubstitua 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")
)
);
shellConfigurar 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
)
)
);
shellVocê 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
shellDefinir 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
shellSubstitua 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
shellConfigurar 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
shellProteger 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
shellLimitar replicações
Como você já desativou o HPA, é preciso limitar o número possível de replicações para 1:
replicaCount: 1
shellInstalar 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