Nextclou­din asen­ta­mi­sek­si Ku­ber­ne­tes-ym­pä­ris­töön suo­sit­te­lem­me käyt­tä­mään S3:a tal­len­nus­jär­jes­tel­mä­nä ja MariaDB:tä tie­to­kan­ta­na. Suo­ri­tus­ky­kyä voi parantaa tekemällä muutamia muutoksia ase­tuk­siin.

Nextcloud ja Ku­ber­ne­tes ovat erin­omai­nen yh­dis­tel­mä

Nextclou­din ja Ku­ber­ne­te­sin yh­dis­tel­mä, jossa tal­len­nus­ti­la­na käytetään S3:a, on lupaava ratkaisu sekä yksityis- että yri­tys­sek­to­ril­la. Tämä ei-kau­pal­li­nen pil­vi­poh­jai­nen oh­jel­mis­to sopii käy­tet­tä­väk­si sekä pai­kal­lis­ten pal­ve­li­mien että ulkoisten isän­tä­ko­nei­den kanssa, ja sen tie­to­tur­va-ark­ki­teh­tuu­ri on erin­omai­nen ver­rat­tu­na lukuisiin Nextcloud-vaih­toeh­toi­hin. Ku­ber­ne­tes on avoimen läh­de­koo­din hal­lin­ta­jär­jes­tel­mä kont­ti­so­vel­luk­sil­le, ja sitä voidaan käyttää pai­kal­li­sen käytön lisäksi myös pil­vi­pal­ve­luis­sa. Jär­jes­tel­mää pidetään jous­ta­va­na, erittäin skaa­lau­tu­va­na ja vi­ka­sie­toi­se­na. Lue lisää siitä, miten Nextcloud asen­ne­taan Ku­ber­ne­tes-alustalle.

Mitkä ehdot on täy­tet­tä­vä?

Ennen kuin voit aloittaa Nextclou­din asen­nuk­sen Ku­ber­ne­tes-ym­pä­ris­töön, muutaman edel­ly­tyk­sen on täy­tyt­tä­vä. Tarvitset riit­tä­väs­ti tal­len­nus­ti­laa, ja sinun tulisi olla jo luonut Ku­ber­ne­tes-klusteri. Voit luoda sen pai­kal­li­sel­le ko­neel­le­si tai käyttää pil­vi­tal­len­nus­ti­laa käy­tet­tä­vis­sä olevan ka­pa­si­tee­tin mukaan. Varmista lisäksi, että Helm-pa­ket­tien­hal­lin­taoh­jel­ma on asennettu Ku­ber­ne­tes-ym­pä­ris­töön. Kun kaikki on valmista, voit jatkaa ohjeiden mu­kai­ses­ti.

Nextclou­din asennus Ku­ber­ne­tes-ym­pä­ris­töön vaihe vaiheelta

Kun perusta on kunnossa, voit aloittaa Nextclou­din asen­nuk­sen Ku­ber­ne­tes-ym­pä­ris­töön. Tär­keim­mät vaiheet on tii­vis­tet­ty seu­raa­vis­sa osioissa.

Määritä DNS

En­sim­mäi­nen vaihe on luoda ali­verk­ko­tun­nuk­sel­le A-tietue, joka osoittaa ha­lua­maa­si IP-osoit­tee­seen. Jos käytät pai­kal­lis­ta ratkaisua, oikea kohde on oma julkinen IP-osoit­tee­si; muussa ta­pauk­ses­sa syötä pil­vi­pal­ve­lun antama IP-osoite. Tar­vit­ta­vat vaiheet voivat vaihdella hieman DNS-pal­ve­lun­tar­joa­jas­ta riippuen.

Helm-paketin li­sää­mi­nen ja päi­vit­tä­mi­nen

Ku­ber­ne­tes otetaan käyttöön Helm-pa­ke­tin­hal­lin­taoh­jel­mal­la, joka on asen­net­ta­va käyttäjän lait­teel­le. Varmista lisäksi, että sinulla on yhteys Ku­ber­ne­tes-klus­te­riin. Jos näin on, lisää Helm-pa­ket­ti­va­ras­to ja päivitä se seu­raa­vil­la ko­men­noil­la:

helm repo add nextcloud https://nextcloud.github.io/helm/
helm repo update
shell

Luo tiedosto values.yaml

Luo nyt uusi Helm-kaavio seu­raa­val­la ko­men­nol­la:

nano values.yaml
shell

Lisää sitten seuraavat tiedot tähän tie­dos­toon.

Määritä cron-tehtävät

Määritä ensin cron-tehtävien aikaraja. Unix-tyyp­pi­sis­sä käyt­tö­jär­jes­tel­mis­sä cron-tehtävät ovat tehtäviä, jotka suo­ri­te­taan au­to­maat­ti­ses­ti taustalla ennalta mää­ri­tel­lyin väliajoin. Ku­ber­ne­tes-ym­pä­ris­tös­sä toi­mi­vas­sa Nextclou­dis­sa nämä ovat pää­asias­sa yl­lä­pi­to­teh­tä­viä. Tässä esi­mer­kis­sä asetamme cron-tehtävän suo­rit­tu­maan viiden minuutin välein. Suu­rem­mil­la tie­to­mää­ril­lä tiheämpi ylläpito voi olla suo­si­tel­ta­vaa. Käytä seuraavaa koodia:

cronjob:
    annotations: {}
    curlInsecure: false
    enabled: true
    failedJobsHistoryLimit: 5
    image: {}
    schedule: '*/5*     *** '
    successfulJobsHistoryLimit: 2
shell

Ota HPA käyttöön

Poista nyt käytöstä Ho­rizon­tal Pod Au­tosca­ler (HPA), joka skaalaa podien määrää au­to­maat­ti­ses­ti. Jos käytät Nextclou­dis­sa ReadW­ri­teOnce-so­vel­lus­ta ja haluat hallita skaa­laus­ta ma­nu­aa­li­ses­ti, sinun tulisi poistaa HPA käytöstä ja keskittyä yhteen podiin. Tämä menetelmä on kätevämpi, jos vain muutama käyttäjä tarvitsee pääsyn. Sopiva koodi on:

hpa:
    cputhreshold: 60
    enabled: false
    maxPods: 10
    minPods: 1
shell

Korvaa ku­va­tun­nis­te

Var­mis­taak­se­si, että Helm-oh­jel­mis­ton nykyinen versio otetaan huomioon, korvaa ku­va­tun­nis­te. Tee tämä seu­raa­val­la koodilla:

image:
    repositor: nextcloud
    tag: 28.0.2-apache
    pullPolicy: IfNotPresent
shell

Nyt on valittuna versio 28.0.2 tai uudempi versio.

Valitse tie­to­kan­ta

Tie­to­kan­taa va­li­tes­sa­si sinulla on kolme vaih­toeh­toa: MariaDB, PostgreSQL tai SQLite. Tässä esi­mer­kis­sä va­lit­sem­me MariaDB:n. Määritä tämä tie­to­kan­ta seu­raa­vas­ti ja poista kaksi muuta jär­jes­tel­mää käytöstä:

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

Seuraa mit­ta­rei­ta

Jos haluat toteuttaa seurannan Pro­met­heuk­sen tai Grafanan avulla, lisää seuraava koodi. Tämä on va­paa­eh­tois­ta.

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

Salli omat ase­tus­tie­dos­to­si

Ole­tusar­voi­ses­ti Nextcloud käyttää Ku­ber­ne­tes-ym­pä­ris­tös­sä myös config.php-nimistä tiedostoa asetusten mää­rit­tä­mi­seen. Voit yk­sin­ker­tais­taa tai jous­ta­voit­taa tätä li­sää­mäl­lä omia ase­tus­tie­dos­to­ja seuraavan koodin avulla:

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

Korvaa paik­ka­merk­ki ”example.com” omalla verk­ko­tun­nuk­sel­la­si.

Määritä Redis

Voit parantaa Redis-vä­li­muis­tin toimintaa ja yleistä suo­ri­tus­ky­kyä li­sää­mäl­lä mu­kau­te­tun mää­ri­tys­tie­dos­ton. Ole­tusar­voi­ses­ti Helm Redis asen­ne­taan ilman sa­la­sa­na­suo­jaus­ta, mutta on suo­si­tel­ta­vaa lisätä yli­mää­räi­nen turvataso. Määritä Redis sa­la­sa­na­suo­jauk­sel­la ja integroi se Nextclou­diin seuraavan koodin avulla:

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

Tal­len­nus­jär­jes­tel­män mää­rit­tä­mi­nen

Viimeinen mää­ri­tys­tie­dos­to lisätään S3-tal­len­nus­jär­jes­tel­mää varten. Se on tal­len­net­tu koodiin seu­raa­vas­ti:

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

Poista Redis-mää­ri­tyk­set käytöstä

Koska olet yllä korvannut Redisin ole­tus­a­se­tuk­set, ne on nyt pois­tet­ta­va käytöstä virheiden vält­tä­mi­sek­si seu­raa­val­la koodilla:

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

Määritä isäntä, jär­jes­tel­män­val­vo­ja ja salasana

Syötä nyt isän­tä­ko­neen nimi, jär­jes­tel­män­val­vo­jan käyt­tä­jä­tun­nus ja vastaava salasana Nextclou­din käyttöä varten Ku­ber­ne­tes-ym­pä­ris­tös­sä. Käytä tähän seuraavaa koodia:

host: drive.example.com
password: your-password
username: name-of-admin
shell

Korvaa paik­ka­mer­kit omilla tie­doil­la­si.

Määritä säh­kö­pos­ti­muis­tu­tuk­set

Voit ha­lu­tes­sa­si määrittää SMTP-palvelun (Simple Mail Transfer Protocol) vas­taa­not­ta­maan il­moi­tuk­sia Nextclou­dis­ta:

mail:
    domain: example.com
    enabled: false
    fromAddress: user
    smtp:
      authtype: LOGIN
      host: example.com
      name: username
      password: your-password 
      port: 465
      secure: ssl
shell

Määritä tal­len­nus­a­se­ma

Seuraava tal­len­nus­a­se­tus koskee tietoja, jotka Nextcloud tallentaa ky­sei­sel­le tal­len­nus­vä­li­neel­le. Tämä ei vaikuta käyt­tä­jä­tie­toi­hi­si, jotka tal­len­ne­taan S3-palveluun ai­ka­tau­lun mu­kai­ses­ti:

persistence:
    accessMode: ReadWriteOnce
    annotations: {}
    enabled: true
    size: 8Gi
shell

Suojaa Redis sa­la­sa­nal­la

On suo­si­tel­ta­vaa suojata Redis sa­la­sa­nal­la. Tämä estää virheitä tun­nis­tau­tu­mi­sen yh­tey­des­sä. Tee tämä seuraavan koodin avulla ja korvaa sa­la­sa­na­si tar­vit­taes­sa:

redis:
    enabled: true
    password: 'your-password-for-redis'
    usePassword: true
shell

Rajoita ko­pioin­tia

Koska olet jo poistanut HPA:n käytöstä, sinun tulisi rajoittaa mah­dol­lis­ten repli­kaa­tioi­den määrä arvoon 1:

replicaCount: 1
shell

Asenna Nextcloud Ku­ber­ne­te­siin

Lopuksi asenna Nexcloud Ku­ber­ne­te­siin ja lisää myös MariaDB ja Redis:

kubectl create ns nextcloud
helm upgrade --install --namespace nextcloud -f your-values.yaml nextcloud nextcloud/nextcloud
shell
Siirry pää­va­lik­koon