Hur man installerar Nextcloud på Kubernetes
För att konfigurera Nextcloud på Kubernetes rekommenderar vi att du använder S3 som lagringsbackend och MariaDB som databas. Du kan öka prestandan med några få ändringar i konfigurationen.
Nextcloud och Kubernetes är en givande kombination
Kombinationen av Nextcloud och Kubernetes med S3 för lagring är en lovande lösning inom den privata och affärsmässiga sektorn. Den icke-kommersiella molnprogramvaran är lämplig för arbete med lokala servrar såväl som externa värdar och har en utmärkt säkerhetsarkitektur jämfört med många Nextcloud-alternativ. Kubernetes är ett öppen källkodsbaserat hanteringssystem för containerapplikationer och kan användas för molnberäkning utöver lokal användning. Systemet anses vara flexibelt, mycket skalbart och felsäkert. Läs vidare för att ta reda på hur du konfigurerar Nextcloud på Kubernetes.
Vilka villkor måste uppfyllas?
Innan du kan börja konfigurera Nextcloud på Kubernetes måste några villkor vara uppfyllda. Du behöver tillräckligt med lagringsutrymme och bör redan ha skapat en Kubernetes-kluster. Du kan välja att skapa denna på din lokala maskin eller använda molnlagring, beroende på din tillgängliga kapacitet. Se också till att Helm-pakethanteraren är konfigurerad för Kubernetes. När du är redo kan du fortsätta med stegen.
Hur man konfigurerar Nextcloud på Kubernetes steg för steg
När du har rätt grund kan du börja konfigurera Nextcloud på Kubernetes. De viktigaste stegen sammanfattas i följande avsnitt.
Konfigurera DNS
Det första steget är att skapa en A-post för en underdomän som kan peka på önskad IP-adress. Om du använder den lokala lösningen är din offentliga IP-adress rätt destination. Annars anger du den IP-adress som tillhandahålls av din molntjänst. Beroende på DNS-leverantör kan stegen för detta skilja sig något åt.
Lägg till och uppdatera Helm
Kubernetes distribueras med hjälp av Helm-pakethanteraren, som bör vara installerad på din klient. Se också till att du har en anslutning till ditt Kubernetes-kluster. Om så är fallet, lägg till Helm-arkivet och uppdatera det med följande kommandon:
helm repo add nextcloud https://nextcloud.github.io/helm/
helm repo updateshellSkapa values.yaml
Skapa nu ett nytt Helm-diagram med följande kommando:
nano values.yamlshellLägg sedan till följande specifikationer i den här filen.
Ställ in cronjobs
Definiera först en tidsgräns för cronjobs. På Unix-liknande operativsystem är cronjobs uppgifter som körs automatiskt i bakgrunden med schemalagda intervall. För Nextcloud på Kubernetes är dessa främst underhållsuppgifter. I det här exemplet ställer vi in cronjob så att det körs var femte minut. För större datamängder kan det vara lämpligt med mer frekvent underhåll. Använd följande kod:
cronjob:
annotations: {}
curlInsecure: false
enabled: true
failedJobsHistoryLimit: 5
image: {}
schedule: '*/5* *** '
successfulJobsHistoryLimit: 2shellAktivera HPA
Inaktivera nu Horizontal Pod Autoscaler (HPA), som automatiskt skalar antalet poddar. Om du använder ReadWriteOnce för Nextcloud och föredrar att styra skalningen manuellt bör du inaktivera HPA och fokusera på en pod. Denna metod är mer praktisk om endast ett fåtal användare behöver åtkomst. Lämplig kod är:
hpa:
cputhreshold: 60
enabled: false
maxPods: 10
minPods: 1shellSkriv över bildtagg
För att säkerställa att den aktuella versionen av Helm beaktas, skriv över bildtaggen. Använd följande kod för att göra detta:
image:
repositor: nextcloud
tag: 28.0.2-apache
pullPolicy: IfNotPresentshellVersion 28.0.2 eller en nyare version är nu vald.
Välj databas
Du har tre alternativ när du väljer databas: MariaDB, PostgreSQL eller SQLite. I vårt exempel väljer vi MariaDB. Konfigurera denna databas enligt följande och inaktivera de andra två systemen:
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: falseshellÖvervaka mätvärden
För att utföra övervakning med Prometheus eller Grafana, infoga följande kod. Detta är valfritt.
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: 5sshellTillåt dina egna konfigurationsfiler
Som standard använder Nextcloud också en fil som heter config.php för konfiguration på Kubernetes. För att förenkla eller göra detta mer flexibelt kan du infoga dina egna konfigurationsfiler med följande kod:
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'
]
);shellErsätt platshållaren “example.com” med din egen domän.
Konfigurera Redis
För att förbättra cachelagringen med Redis och öka den totala prestandan kan du inkludera en anpassad konfigurationsfil. Som standard installeras Helm Redis utan lösenordsskydd, men det är tillrådligt att lägga till ett extra säkerhetsskikt. Använd följande kod för att konfigurera Redis med lösenordsskydd och integrera det med 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('your-password-for-redis')
)
);shellKonfigurera lagringsbackend
Den sista konfigurationsfilen infogas för lagringsbackend S3. Den lagras i koden enligt följande:
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
)
)
);shellStäng av Redis-konfigurationen
Eftersom du har skrivit över standardkonfigurationen för Redis ovan måste denna nu inaktiveras för att undvika fel med hjälp av följande kod:
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: trueshellStäll in värd, administratör och lösenord
Ange nu värden, administratören och motsvarande lösenord för användning av Nextcloud på Kubernetes. Använd denna kod för detta:
host: drive.example.com
password: your-password
username: name-of-adminshellErsätt platshållarna med dina egna uppgifter.
Ställ in e-postaviseringar
Du kan valfritt konfigurera en SMTP-tjänst (Simple Mail Transfer Protocol) för att ta emot aviseringar från Nextcloud:
mail:
domain: example.com
enabled: false
fromAddress: user
smtp:
authtype: LOGIN
host: example.com
name: username
password: your-password
port: 465
secure: sslshellKonfigurera persistensdisken
Följande persistenskonfiguration är avsedd för data som Nextcloud lagrar på motsvarande databärare. Detta påverkar inte dina användardata, som lagras på S3 enligt ett schemalagt schema:
persistence:
accessMode: ReadWriteOnce
annotations: {}
enabled: true
size: 8GishellLösenordsskydda Redis
Det är tillrådligt att säkra Redis med ett lösenord. Detta förhindrar fel under autentisering. Använd följande kod för att göra detta och ersätt ditt lösenord där det är relevant:
redis:
enabled: true
password: 'your-password-for-redis'
usePassword: trueshellBegränsa replikeringar
Eftersom du redan har inaktiverat HPA bör du begränsa det möjliga antalet replikeringar till 1:
replicaCount: 1shellInstallera Nextcloud på Kubernetes
Slutligen installerar du Nexcloud på Kubernetes och lägger till MariaDB och Redis:
kubectl create ns nextcloud
helm upgrade --install --namespace nextcloud -f your-values.yaml nextcloud nextcloud/nextcloudshell