Slik installerer du Nextcloud på Kubernetes
For å konfigurere Nextcloud på Kubernetes anbefaler vi å bruke S3 som lagringsbackend og MariaDB som database. Du kan øke ytelsen ved å gjøre noen få endringer i konfigurasjonen.
Nextcloud og Kubernetes er en god kombinasjon
Kombinasjonen av Nextcloud og Kubernetes med S3 som lagringsløsning er en lovende løsning både i privat og bedriftssektoren. Den ikke-kommersielle skyprogramvaren egner seg både for bruk med lokale servere og eksterne verter, og har en utmerket sikkerhetsarkitektur sammenlignet med mange Nextcloud-alternativer. Kubernetes er et åpen kildekode-styringssystem for containerapplikasjoner og kan brukes til skyberegning i tillegg til lokal bruk. Systemet regnes som fleksibelt, svært skalerbart og feilsikkert. Les videre for å finne ut hvordan du konfigurerer Nextcloud på Kubernetes.
Hvilke vilkår må oppfylles?
Før du kan begynne å konfigurere Nextcloud på Kubernetes, må noen forutsetninger være oppfylt. Du trenger tilstrekkelig lagringsplass og bør allerede ha opprettet en Kubernetes-klynge. Du kan velge å opprette denne på din lokale maskin eller bruke skylagring, avhengig av hvilken kapasitet du har tilgjengelig. Sørg dessuten for at pakkehåndtereren Helm er konfigurert for Kubernetes. Når alt er klart, kan du fortsette med trinnene.
Slik konfigurerer du Nextcloud på Kubernetes trinn for trinn
Når du har lagt det riktige grunnlaget, kan du begynne å konfigurere Nextcloud på Kubernetes. De viktigste trinnene er oppsummert i de følgende avsnittene.
Konfigurer DNS
Det første trinnet er å opprette en A-post for et underdomene som kan peke til den ønskede IP-adressen. Hvis du bruker den lokale løsningen, er din offentlige IP-adresse riktig destinasjon; ellers må du oppgi IP-adressen du har fått fra skytjenesten din. Avhengig av DNS-leverandøren kan fremgangsmåten variere noe.
Legg til og oppdater Helm
Kubernetes distribueres ved hjelp av pakkehåndtereren Helm, som bør være installert på klienten din. Sørg dessuten for at du har tilkobling til Kubernetes-klyngen din. Hvis dette er tilfelle, legger du til Helm-repositoriet og oppdaterer det med følgende kommandoer:
helm repo add nextcloud https://nextcloud.github.io/helm/
helm repo updateshellOpprett values.yaml
Opprett nå et nytt Helm-diagram med følgende kommando:
nano values.yamlshellLegg deretter til følgende spesifikasjoner i denne filen.
Opprett cron-jobber
Først må du angi en tidsintervall for cron-jobber. På Unix-lignende operativsystemer er cron-jobber oppgaver som kjører automatisk i bakgrunnen med jevne mellomrom. For Nextcloud på Kubernetes dreier dette seg hovedsakelig om vedlikeholdsoppgaver. I dette eksemplet angir vi at cron-jobben skal kjøre hvert femte minutt. Ved større datamengder kan det være lurt å utføre vedlikehold oftere. Bruk følgende kode:
cronjob:
annotations: {}
curlInsecure: false
enabled: true
failedJobsHistoryLimit: 5
image: {}
schedule: '*/5* *** '
successfulJobsHistoryLimit: 2shellAktiver HPA
Deaktiver nå Horizontal Pod Autoscaler (HPA), som automatisk skalerer antall pods. Hvis du bruker ReadWriteOnce for Nextcloud og foretrekker å styre skaleringen manuelt, bør du deaktivere HPA og fokusere på én pod. Denne fremgangsmåten er mer praktisk hvis bare noen få brukere trenger tilgang. Koden for dette er:
hpa:
cputhreshold: 60
enabled: false
maxPods: 10
minPods: 1shellOverskriv bildetaggen
For å sikre at den gjeldende versjonen av Helm blir tatt i betraktning, må du overskrive bildetikket. Bruk denne koden for å gjøre dette:
image:
repositor: nextcloud
tag: 28.0.2-apache
pullPolicy: IfNotPresentshellVersjon 28.0.2 eller en nyere versjon er nå valgt.
Velg database
Du har tre alternativer når du skal velge database: MariaDB, PostgreSQL eller SQLite. I dette eksemplet velger vi MariaDB. Konfigurer denne databasen som følger, og deaktiver de to andre systemene:
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: falseshellOvervåke nøkkeltall
For å gjennomføre overvåking med Prometheus eller Grafana, sett inn følgende kode. Dette er valgfritt.
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: 5sshellTillat egne konfigurasjonsfiler
Som standard bruker Nextcloud også en fil kalt config.php til konfigurasjon på Kubernetes. For å forenkle dette eller gjøre det mer fleksibelt, kan du legge inn dine egne konfigurasjonsfiler ved hjelp av følgende kode:
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'
]
);shellErstatt plassholderen «example.com» med ditt eget domene.
Konfigurer Redis
For å forbedre hurtigbuffering med Redis og øke den generelle ytelsen, kan du inkludere en tilpasset konfigurasjonsfil. Som standard installeres Helm Redis uten passordbeskyttelse, men det anbefales å legge til et ekstra sikkerhetslag. Bruk følgende kode for å konfigurere Redis med passordbeskyttelse og integrere 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')
)
);shellKonfigurere lagringsbackenden
Den siste konfigurasjonsfilen legges inn for lagringsbackenden S3. Den er lagret i koden på følgende måte:
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
)
)
);shellDeaktiver Redis-konfigurasjonen
Siden du har overskrevet standardkonfigurasjonen for Redis ovenfor, må denne nå deaktiveres for å unngå feil ved å bruke følgende kode:
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: trueshellAngi vertsnavn, administrator og passord
Skriv nå inn vertsnavnet, administratoren og det tilhørende passordet for bruk av Nextcloud på Kubernetes. Bruk denne koden til dette:
host: drive.example.com
password: your-password
username: name-of-adminshellErstatt plassholderne med dine egne opplysninger.
Konfigurer e-postvarsler
Du kan eventuelt konfigurere en SMTP-tjeneste (Simple Mail Transfer Protocol) for å motta varsler fra Nextcloud:
mail:
domain: example.com
enabled: false
fromAddress: user
smtp:
authtype: LOGIN
host: example.com
name: username
password: your-password
port: 465
secure: sslshellKonfigurer lagringsdisken
Følgende lagringskonfigurasjon gjelder data som Nextcloud lagrer på det aktuelle lagringsmediet. Dette påvirker ikke brukerdataene dine, som lagres på S3 etter en fast tidsplan:
persistence:
accessMode: ReadWriteOnce
annotations: {}
enabled: true
size: 8GishellPassordbeskytt Redis
Det anbefales å sikre Redis med et passord. Dette forhindrer feil under påloggingen. Bruk følgende kode for å gjøre dette, og erstatt passordet ditt der det er aktuelt:
redis:
enabled: true
password: 'your-password-for-redis'
usePassword: trueshellBegrens antall kopieringer
Siden du allerede har deaktivert HPA, bør du begrense antall mulige replikasjoner til 1:
replicaCount: 1shellInstaller Nextcloud på Kubernetes
Til slutt installerer du Nexcloud på Kubernetes og legger også til MariaDB og Redis:
kubectl create ns nextcloud
helm upgrade --install --namespace nextcloud -f your-values.yaml nextcloud nextcloud/nextcloudshell