Sådan installeres Nextcloud på Kubernetes
For at konfigurere Nextcloud på Kubernetes anbefaler vi at bruge S3 som lagringsbackend og MariaDB som database. Du kan forbedre ydeevnen ved at foretage et par ændringer i konfigurationen.
Nextcloud og Kubernetes er en god kombination
Kombinationen af Nextcloud og Kubernetes med S3 som lagringsløsning er en lovende løsning inden for både den private og erhvervsmæssige sektor. Den ikke-kommercielle cloud-software er velegnet til brug med både lokale servere og eksterne værter og kan prale af en fremragende sikkerhedsarkitektur sammenlignet med mange Nextcloud-alternativer. Kubernetes er et open source-styringssystem til containerbaserede applikationer og kan ud over lokal brug også anvendes til cloud computing. Systemet anses for at være fleksibelt, yderst skalerbart og fejlsikkert. Læs videre for at finde ud af, hvordan du opsætter Nextcloud på Kubernetes.
Hvilke betingelser skal være opfyldt?
Inden du kan gå i gang med at konfigurere Nextcloud på Kubernetes, skal der være opfyldt nogle forudsætninger. Du skal have tilstrækkelig lagerplads og bør allerede have oprettet en Kubernetes-klynge. Du kan vælge at oprette denne på din lokale maskine eller bruge cloud-lager, afhængigt af din tilgængelige kapacitet. Sørg desuden for, at Helm-pakkehåndteringen er konfigureret til Kubernetes. Når du er klar, kan du fortsætte med trinene.
Sådan opsætter du Nextcloud på Kubernetes trin for trin
Når du har det rette grundlag på plads, kan du gå i gang med at opsætte Nextcloud på Kubernetes. De vigtigste trin er beskrevet i de følgende afsnit.
Konfigurer DNS
Det første skridt er at oprette en A-post for et underdomæne, der kan pege på den ønskede IP-adresse. Hvis du bruger den lokale løsning, er din offentlige IP-adresse den korrekte destination; ellers skal du indtaste den IP-adresse, du har fået fra din cloud-tjeneste. Afhængigt af DNS-udbyderen kan de nødvendige trin variere en smule.
Tilføj og opdater Helm
Kubernetes installeres ved hjælp af pakkehåndteringen Helm, som skal være installeret på din klient. Sørg desuden for, at du har forbindelse til din Kubernetes-klynge. Hvis det er tilfældet, skal du tilføje Helm-repositoriet og opdatere det med følgende kommandoer:
helm repo add nextcloud https://nextcloud.github.io/helm/
helm repo updateshellOpret filen values.yaml
Opret nu et nyt Helm-diagram med følgende kommando:
nano values.yamlshellTilføj derefter følgende specifikationer til denne fil.
Opret cron-opgaver
Definer først en tidsgrænse for cronjobs. På Unix-lignende operativsystemer er cronjobs opgaver, der kører automatisk i baggrunden med faste intervaller. For Nextcloud på Kubernetes drejer det sig primært om vedligeholdelsesopgaver. I dette eksempel indstiller vi cronjobbet til at køre hvert femte minut. Ved større datamængder kan det være en god idé at udføre vedligeholdelse oftere. Brug følgende kode:
cronjob:
annotations: {}
curlInsecure: false
enabled: true
failedJobsHistoryLimit: 5
image: {}
schedule: '*/5* *** '
successfulJobsHistoryLimit: 2shellAktivér HPA
Deaktiver nu Horizontal Pod Autoscaler (HPA), som automatisk skalerer antallet af pods. Hvis du bruger ReadWriteOnce til Nextcloud og foretrækker at styre skaleringen manuelt, bør du deaktivere HPA og nøjes med én pod. Denne fremgangsmåde er mere praktisk, hvis kun få brugere har brug for adgang. Den relevante kode er:
hpa:
cputhreshold: 60
enabled: false
maxPods: 10
minPods: 1shellOverskriv billedkode
For at sikre, at den aktuelle version af Helm tages i betragtning, skal du overskrive billedtagget. Brug denne kode til at gøre det:
image:
repositor: nextcloud
tag: 28.0.2-apache
pullPolicy: IfNotPresentshellVersion 28.0.2 eller en nyere version er nu valgt.
Vælg database
Du har tre muligheder, når du skal vælge database: MariaDB, PostgreSQL eller SQLite. I dette eksempel vælger vi MariaDB. Konfigurer denne database som beskrevet nedenfor, og deaktiver de to andre systemer:
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ågning af nøgletal
Indsæt følgende kode for at foretage overvågning med Prometheus eller Grafana. Dette er valgfrit.
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: 5sshellTillad brug af egne konfigurationsfiler
Som standard bruger Nextcloud også en fil ved navn config.php til konfiguration på Kubernetes. For at gøre det nemmere eller mere fleksibelt kan du indsætte dine egne konfigurationsfiler ved hjælp af 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'
]
);shellErstat pladsholderen »example.com« med dit eget domæne.
Konfigurer Redis
For at forbedre caching med Redis og øge den samlede ydeevne kan du inkludere en brugerdefineret konfigurationsfil. Som standard installeres Helm Redis uden adgangskodebeskyttelse, men det anbefales at tilføje et ekstra sikkerhedslag. Brug følgende kode til at konfigurere Redis med adgangskodebeskyttelse 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')
)
);shellKonfiguration af lagringsbackend
Den sidste konfigurationsfil er tilføjet til S3-lagringsbackend’et. Den er gemt i koden som følger:
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-konfigurationen
Da du ovenfor har overskrevet standardkonfigurationen for Redis, skal denne nu deaktiveres for at undgå fejl ved hjælp af 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: trueshellIndstil værtsnavn, administrator og adgangskode
Indtast nu værtsnavnet, administratoren og den tilhørende adgangskode til brug af Nextcloud på Kubernetes. Brug denne kode til dette:
host: drive.example.com
password: your-password
username: name-of-adminshellErstat pladsholderne med dine egne oplysninger.
Opsæt e-mail-beskeder
Du kan eventuelt konfigurere en SMTP-tjeneste (Simple Mail Transfer Protocol) til at modtage meddelelser 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 persistensdrevet
Følgende lagringskonfiguration gælder for data, som Nextcloud gemmer på det pågældende lagringsmedie. Dette har ingen indflydelse på dine brugerdata, som regelmæssigt gemmes på S3:
persistence:
accessMode: ReadWriteOnce
annotations: {}
enabled: true
size: 8GishellBeskyt Redis med adgangskode
Det anbefales at beskytte Redis med en adgangskode. Dette forhindrer fejl under godkendelsen. Brug følgende kode til dette, og udskift din adgangskode, hvor det er relevant:
redis:
enabled: true
password: 'your-password-for-redis'
usePassword: trueshellBegræns antallet af gentagelser
Da du allerede har deaktiveret HPA, bør du begrænse det mulige antal replikationer til 1:
replicaCount: 1shellInstaller Nextcloud på Kubernetes
Til sidst skal du installere Nexcloud på Kubernetes og også tilføje MariaDB og Redis:
kubectl create ns nextcloud
helm upgrade --install --namespace nextcloud -f your-values.yaml nextcloud nextcloud/nextcloudshell