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 update
shell

Opprett values.yaml

Opprett nå et nytt Helm-diagram med følgende kommando:

nano values.yaml
shell

Legg 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: 2
shell

Aktiver 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: 1
shell

Overskriv 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: IfNotPresent
shell

Versjon 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: false
shell

Overvå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: 5s
shell

Tillat 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'
                     ]
            );
shell

Erstatt 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')
      )
    );
shell

Konfigurere 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
        )
      )
    );
shell

Deaktiver 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: true
shell

Angi 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-admin
shell

Erstatt 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: ssl
shell

Konfigurer 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: 8Gi
shell

Passordbeskytt 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: true
shell

Begrens antall kopieringer

Siden du allerede har deaktivert HPA, bør du begrense antall mulige replikasjoner til 1:

replicaCount: 1
shell

Installer 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/nextcloud
shell
Go to Main Menu