Hoe Nextcloud op Kubernetes te installeren
Om Nextcloud op Kubernetes in te stellen, raden we aan om S3 te gebruiken voor een opslagbackend en MariaDB als database. U kunt de prestaties verbeteren door enkele wijzigingen aan te brengen in de configuratie.
Nextcloud en Kubernetes vormen een waardevolle combinatie
De combinatie van Nextcloud en Kubernetes met S3 voor opslag is een veelbelovende oplossing in de particuliere en zakelijke sector. De niet-commerciële cloudsoftware is geschikt voor zowel lokale servers als externe hosts en beschikt over een uitstekende beveiligingsarchitectuur in vergelijking met talrijke Nextcloud-alternatieven. Kubernetes is een open-sourcebeheersysteem voor containerapplicaties en kan naast lokaal gebruik ook worden gebruikt voor cloud computing. Het systeem wordt beschouwd als flexibel, zeer schaalbaar en storingsvrij. Lees verder om te ontdekken hoe u Nextcloud op Kubernetes kunt instellen.
Aan welke voorwaarden moet worden voldaan?
Voordat u kunt beginnen met het instellen van Nextcloud op Kubernetes, moet aan een aantal voorwaarden worden voldaan. U hebt voldoende opslagruimte nodig en u moet al een Kubernetes-cluster hebben aangemaakt. U kunt ervoor kiezen om dit op uw lokale computer aan te maken of cloudopslag te gebruiken, afhankelijk van uw beschikbare capaciteit. Zorg er bovendien voor dat de Helm-pakketbeheerder is ingesteld voor Kubernetes. Als u klaar bent, kunt u doorgaan met de stappen.
Hoe je Nextcloud stap voor stap op Kubernetes installeert
Zodra u over de juiste basis beschikt, kunt u beginnen met het instellen van Nextcloud op Kubernetes. De belangrijkste stappen worden in de volgende paragrafen samengevat.
DNS configureren
De eerste stap is het aanmaken van een A-record voor een subdomein dat naar het gewenste IP-adres kan verwijzen. Als u de lokale oplossing gebruikt, is uw openbare IP-adres de juiste bestemming; anders voert u het IP-adres in dat door uw cloudservice is verstrekt. Afhankelijk van de DNS-provider kunnen de stappen die hiervoor nodig zijn enigszins verschillen.
Helm toevoegen en bijwerken
Kubernetes wordt geïmplementeerd met behulp van de Helm-pakketbeheerder, die op uw client moet zijn geïnstalleerd. Zorg er bovendien voor dat u verbinding hebt met uw Kubernetes-cluster. Als dat het geval is, voegt u de Helm-repository toe en werkt u deze bij met de volgende opdrachten:
helm repo add nextcloud https://nextcloud.github.io/helm/
helm repo updateshellMaak values.yaml aan.
Maak nu een nieuwe Helm-chart aan met de volgende opdracht:
nano values.yamlshellVoeg vervolgens de volgende specificaties toe aan dit bestand.
Cronjobs instellen
Stel eerst een tijdslimiet in voor cronjobs. Op Unix-achtige besturingssystemen zijn cronjobs taken die automatisch op de achtergrond worden uitgevoerd op geplande tijdstippen. Voor Nextcloud op Kubernetes zijn dit voornamelijk onderhoudstaken. In dit voorbeeld stellen we de cronjob zo in dat deze elke vijf minuten wordt uitgevoerd. Voor grotere gegevensvolumes kan het raadzaam zijn om vaker onderhoud uit te voeren. Gebruik de volgende code:
cronjob:
annotations: {}
curlInsecure: false
enabled: true
failedJobsHistoryLimit: 5
image: {}
schedule: '*/5* *** '
successfulJobsHistoryLimit: 2shellHPA activeren
Deactiveer nu de Horizontal Pod Autoscaler (HPA), die automatisch het aantal pods schaalt. Als u ReadWriteOnce voor Nextcloud gebruikt en de schaalbaarheid liever handmatig wilt regelen, moet u HPA deactiveren en u concentreren op één pod. Deze aanpak is handiger als slechts een paar gebruikers toegang nodig hebben. De juiste code is:
hpa:
cputhreshold: 60
enabled: false
maxPods: 10
minPods: 1shellAfbeeldingstag overschrijven
Om ervoor te zorgen dat de huidige versie van Helm in aanmerking wordt genomen, overschrijf je de imagetag. Gebruik hiervoor deze code:
image:
repositor: nextcloud
tag: 28.0.2-apache
pullPolicy: IfNotPresentshellVersie 28.0.2 of een recentere versie is nu geselecteerd.
Selecteer database
Je hebt drie opties bij het selecteren van je database: MariaDB, PostgreSQL of SQLite. Voor ons voorbeeld kiezen we voor MariaDB. Configureer deze database als volgt en deactiveer de andere twee 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: falseshellMonitor voor statistieken
Om monitoring uit te voeren met Prometheus of Grafana, voeg je de volgende code toe. Dit is optioneel.
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: 5sshellSta uw eigen configuratiebestanden toe
Standaard gebruikt Nextcloud ook een bestand met de naam config.php voor configuratie op Kubernetes. Om dit te vereenvoudigen of flexibeler te maken, kunt u uw eigen configuratiebestanden invoegen met behulp van de volgende code:
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'
]
);shellVervang de tijdelijke aanduiding ‘example.com’ door uw eigen domein.
Redis configureren
Om caching met Redis te verbeteren en de algehele prestaties te optimaliseren, kunt u een aangepast configuratiebestand toevoegen. Standaard wordt Helm Redis geïnstalleerd zonder wachtwoordbeveiliging, maar het is raadzaam om een extra beveiligingslaag toe te voegen. Gebruik de volgende code om Redis met wachtwoordbeveiliging in te stellen en te integreren met 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')
)
);shellDe opslagbackend configureren
Het laatste configuratiebestand wordt ingevoegd voor de opslagbackend S3. Het wordt als volgt in de code opgeslagen:
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
)
)
);shellSchakel de Redis-configuratie uit
Aangezien u hierboven de standaardconfiguratie voor Redis hebt overschreven, moet deze nu worden gedeactiveerd om fouten te voorkomen met behulp van de volgende code:
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: trueshellHost, beheerder en wachtwoord instellen
Voer nu de host, de beheerder en het bijbehorende wachtwoord in voor het gebruik van Nextcloud op Kubernetes. Gebruik hiervoor deze code:
host: drive.example.com
password: your-password
username: name-of-adminshellVervang de plaatshouders door uw eigen gegevens.
E-mailmeldingen instellen
Je kunt optioneel een SMTP-service (Simple Mail Transfer Protocol) instellen om meldingen van Nextcloud te ontvangen:
mail:
domain: example.com
enabled: false
fromAddress: user
smtp:
authtype: LOGIN
host: example.com
name: username
password: your-password
port: 465
secure: sslshellConfigureer de persistenschijf
De volgende persistentieconfiguratie is bedoeld voor gegevens die Nextcloud opslaat op de bijbehorende gegevensdrager. Dit heeft geen invloed op uw gebruikersgegevens, die op gezette tijden worden opgeslagen op S3:
persistence:
accessMode: ReadWriteOnce
annotations: {}
enabled: true
size: 8GishellWachtwoordbeveiliging voor Redis
Het is raadzaam om Redis met een wachtwoord te beveiligen. Dit voorkomt fouten tijdens de authenticatie. Gebruik hiervoor de volgende code en vervang waar nodig uw wachtwoord:
redis:
enabled: true
password: 'your-password-for-redis'
usePassword: trueshellBeperk replicaties
Aangezien u HPA al hebt gedeactiveerd, moet u het mogelijke aantal replicaties beperken tot 1:
replicaCount: 1shellNextcloud installeren op Kubernetes
Installeer ten slotte Nexcloud op Kubernetes en voeg ook MariaDB en Redis toe:
kubectl create ns nextcloud
helm upgrade --install --namespace nextcloud -f your-values.yaml nextcloud nextcloud/nextcloudshell