Nextcloud no Kubernetes: descubra como instalá-lo
Se pretender configurar o Nextcloud no Kubernetes, é recomendável utilizar o S3 como backend de armazenamento e o MariaDB como base de dados. Pode melhorar o desempenho com algumas alterações na configuração.
Vale a pena combinar o Nextcloud com o Kubernetes
Combinar o Nextcloud e o Kubernetes com o S3 como backend de armazenamento é, em muitos casos, uma solução promissora para o setor privado e empresarial. O software de nuvem não comercial é adequado tanto para trabalhar com servidores locais como com hosts externos e destaca-se em comparação com inúmeras alternativas ao Nextcloud devido à sua excelente arquitetura de segurança. O Kubernetes é um sistema de gestão de aplicações em contentores de código aberto e pode ser utilizado tanto localmente como para computação em nuvem. Este sistema é considerado extremamente flexível, altamente escalável e muito fiável. Mostramos-lhe como configurar o Nextcloud no Kubernetes.
Quais são os requisitos a cumprir?
Antes de começar a configurar o Nextcloud no Kubernetes, é necessário cumprir alguns pré-requisitos. Vai precisar de espaço de armazenamento suficiente e já deve ter criado um cluster do Kubernetes. Pode criá-lo no seu computador ou utilizar um serviço de armazenamento na nuvem, dependendo dos recursos de que necessita ou que tem disponíveis. Também deve ter configurado o gestor de pacotes Helm para o Kubernetes. Se já cumpriu estes requisitos, pode começar com os passos individuais.
Instalar o Nextcloud no Kubernetes: os passos mais importantes
Agora que as bases necessárias estão estabelecidas, pode começar a configurar a integração entre o Nextcloud e o Kubernetes. Resumimos os passos mais importantes a seguir para que possa fazê-lo sem problemas.
Configurar o DNS
O primeiro passo é criar um registo A para um subdomínio que possa ser direcionado para o endereço IP pretendido. Se estiver a utilizar uma solução local, o seu endereço IP público será o destino correto; caso contrário, indique o endereço IP do seu serviço na nuvem. Os passos necessários para o fazer podem variar ligeiramente, dependendo do fornecedor de DNS que estiver a utilizar.
Adicionar e atualizar o Helm
Para preparar os recursos para o Kubernetes, utiliza-se o gestor de pacotes mencionado anteriormente: o Helm. Certifique-se de que o tem instalado no seu dispositivo e de que está ligado ao seu cluster do Kubernetes. Se tudo estiver configurado, adicione o repositório do Helm e atualize-o com os dois comandos seguintes:
helm repo add nextcloud https://nextcloud.github.io/helm/
helm repo updateshellCriar o ficheiro values.yaml
Crie agora um novo Helm chart utilizando o seguinte comando:
nano values.yamlshellEm seguida, adicione as seguintes especificações a este ficheiro.
Configurar as tarefas cron
Em primeiro lugar, defina um limite de tempo para as tarefas Cron. Em sistemas operativos semelhantes ao Unix, estas são tarefas que são executadas automaticamente em segundo plano e repetidas. No caso do Nextcloud no Kubernetes, trata-se principalmente de tarefas de manutenção. No exemplo, indica-se que sejam executadas a cada cinco minutos. No entanto, especialmente com conjuntos de dados maiores, pode ser recomendável realizar a manutenção com maior frequência. Este é o código correspondente:
cronjob:
annotations: {}
curlInsecure: false
enabled: true
failedJobsHistoryLimit: 5
image: {}
schedule: '*/5* *** '
successfulJobsHistoryLimit: 2shellDesativar o HPA
Agora desative o HPA (Horizontal Pod Autoscaler). Este autoscaler ajusta automaticamente o número de pods. Se estiver a utilizar o ReadWriteOnce para o Nextcloud e quiser controlar a escalabilidade, deve desativar o HPA e concentrar-se num único pod. Esta é uma solução muito mais prática se apenas alguns utilizadores pretenderem aceder aos dados. O código é escrito da seguinte forma:
hpa:
cputhreshold: 60
enabled: false
maxPods: 10
minPods: 1shellSobrescrever a legenda da imagem
Para garantir que a versão atual do Helm seja considerada, substitua a etiqueta da imagem utilizando este código:
image:
repositor: nextcloud
tag: 28.0.2-apache
pullPolicy: IfNotPresentshellAgora, selecione a versão 28.0.2 ou uma versão mais recente.
Escolher uma base de dados
Ao escolher a sua base de dados, tem três opções: MariaDB, PostgreSQL ou SQLite. Para este exemplo, optou-se pelo MariaDB. Configure esta base de dados da forma descrita a seguir e desative os outros dois 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: falseshellMonitorização de métricas
Se quiser monitorizar com o Prometheus ou o Grafana, pode adicionar o seguinte código, se desejar:
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: 5sshellPermitir ficheiros de configuração personalizados
Por predefinição, o Nextcloud no Kubernetes utiliza um ficheiro chamado config.php para a configuração. Se pretender simplificar ou tornar esta configuração mais flexível, pode utilizar os seus próprios ficheiros de configuração. Aqui está o código necessário para o fazer:
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'
]
);shellPara isso, basta substituir o espaço reservado «example.com» pelo teu próprio domínio.
Configurar o Redis
O seguinte ficheiro de configuração personalizado será implementado para melhorar o armazenamento em cache utilizando o Redis. O Helm instala o Redis por predefinição sem proteção por palavra-passe, pelo que é recomendável adicionar uma camada adicional de segurança para evitar problemas futuros ao iniciar sessão. Para tal, pode utilizar o seguinte código:
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')
)
);shellConfigurar o backend de armazenamento
O último ficheiro de configuração é adicionado para o backend de armazenamento S3. Segue-se a forma como é integrado no 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
)
)
);shellDesativar a configuração do Redis
Como anteriormente alteraste a configuração padrão do Redis, agora deves desativá-la para evitar erros. O código adequado para isso é o seguinte:
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: trueshellDefinir o host, o administrador e a palavra-passe
Agora, defina o host, o administrador e a palavra-passe correspondentes para utilizar o Nextcloud no Kubernetes. Para tal, introduza este código:
host: drive.example.com
password: your-password
username: admin-nameshellBasta substituir os marcadores de posição pelos teus dados.
Configurar notificações por e-mail
Tem a opção de configurar um serviço SMTP (Protocolo Simples de Transferência de Correio) para receber notificações do Nextcloud. Se quiser ativá-lo, utilize o seguinte código:
mail:
domain: example.com
enabled: false
fromAddress: user
smtp:
authtype: LOGIN
host: example.com
name: username
password: your-password
port: 465
secure: sslshellConfiguração do disco persistente
A seguinte configuração de persistência destina-se aos dados que o Nextcloud armazena no disco correspondente. Isto não inclui os seus dados de utilizador, que serão guardados no S3, tal como previsto.
persistence:
accessMode: ReadWriteOnce
annotations: {}
enabled: true
size: 8GishellProteção por palavra-passe para o Redis
É recomendável proteger o Redis com uma palavra-passe, o que também ajuda a evitar erros de autenticação. Para tal, siga o código abaixo e certifique-se de substituir «your-password-for-redis» pela sua palavra-passe pessoal:
redis:
enabled: true
password: 'your-password-for-redis'
usePassword: trueshellLimitar as respostas
Como já desativou o HPA, deve limitar o número de réplicas a 1. Esta é a instrução que deve aplicar:
replicaCount: 1shellInstalar o Nextcloud no Kubernetes
Por fim, instale o Nextcloud no Kubernetes e adicione o MariaDB e o Redis. Utilize este comando:
kubectl create ns nextcloud
helm upgrade --install --namespace nextcloud -f your-values.yaml nextcloud nextcloud/nextcloudshell