Norėdami įdiegti „Nextcloud“ „Ku­ber­ne­tes“ aplinkoje, re­ko­men­duo­ja­me naudoti S3 kaip saugyklos platformą ir „MariaDB“ kaip duomenų bazę. Atlikę keletą kon­fi­gū­ra­ci­jos pakeitimų, galite padidinti sistemos našumą.

„Nextcloud“ ir „Ku­ber­ne­tes“ – tai puikus derinys

„Nextcloud“ ir „Ku­ber­ne­tes“ derinys su „S3“ saugykla yra per­spek­ty­vus spren­di­mas pri­va­čia­me ir verslo sek­to­riuo­se. Ši ne­ko­mer­ci­nė debesų prog­ra­mi­nė įranga tinka dirbti tiek su vie­ti­niais ser­ve­riais, tiek su iš­ori­niais ser­ve­riais ir pasižymi puikia saugumo ar­chi­tek­tū­ra, palyginti su daugybe „Nextcloud“ al­ter­na­ty­vų. „Ku­ber­ne­tes“ yra atvirojo kodo kon­t­ei­ne­rių programų valdymo sistema, kuri, be vietinio naudojimo, gali būti naudojama ir debesų kom­piu­te­ri­jai. Ši sistema laikoma lanksčia, labai mastelio keičiamu ir atspariu gedimams. Skai­ty­ki­te toliau, kad su­ži­no­tu­mė­te, kaip įdiegti „Nextcloud“ „Ku­ber­ne­tes“ sistemoje.

Kokios sąlygos turi būti įvykdytos?

Prieš pradėdami diegti „Nextcloud“ „Ku­ber­ne­tes“ aplinkoje, turite įvykdyti keletą sąlygų. Reikia turėti pa­kan­ka­mai saugyklos vietos ir jau sukurti „Ku­ber­ne­tes“ klasterį. Pri­klau­so­mai nuo turimos talpos, galite jį sukurti savo vie­ti­nia­me kom­piu­te­ry­je arba naudoti debesų saugyklą. Be to, įsi­ti­kin­ki­te, kad „Ku­ber­ne­tes“ aplinkoje yra įdiegtas „Helm“ paketų tvarkyklė. Kai viskas bus paruošta, galite pradėti vykdyti tolesnius veiksmus.

Kaip žingsnis po žingsnio įdiegti „Nextcloud“ „Ku­ber­ne­tes“ aplinkoje

Kai turėsite tinkamą pagrindą, galėsite pradėti diegti „Nextcloud“ „Ku­ber­ne­tes“ aplinkoje. Pag­rin­di­niai žingsniai api­bend­rin­ti to­les­niuo­se skyriuose.

Nustatyti DNS

Pirmasis žingsnis – sukurti subdomeno A įrašą, kuris nukreiptų į norimą IP adresą. Jei naudojate vietinį sprendimą, tinkamas adresas yra jūsų viešasis IP adresas; kitais atvejais įveskite debesų paslaugos teikėjo nurodytą IP adresą. Pri­klau­so­mai nuo DNS teikėjo, šiam veiksmui atlikti rei­ka­lin­gi žingsniai gali šiek tiek skirtis.

Pridėti ir at­nau­jin­ti „Helm“

„Ku­ber­ne­tes“ diegiamas naudojant „Helm“ paketų tvarkyklę, kuri turėtų būti įdiegta jūsų kom­piu­te­ry­je. Be to, įsi­ti­kin­ki­te, kad turite ryšį su savo „Ku­ber­ne­tes“ klasteriu. Jei taip, pridėkite „Helm“ saugyklą ir at­nau­jin­ki­te ją naudodami šias komandas:

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

Sukurti failą „values.yaml“

Dabar sukurkite naują „Helm“ diagramą naudodami šią komandą:

nano values.yaml
shell

Tada į šį failą įtraukite šias spe­ci­fi­ka­ci­jas.

Nustatyti cron užduotis

Pir­miau­sia nu­sta­ty­ki­te cron užduočių vykdymo dažnį. Unix tipo ope­ra­ci­nė­se sistemose cron užduotys – tai užduotys, kurios au­to­ma­tiš­kai vykdomos fone pagal nustatytą tvar­ka­raš­tį. „Nextcloud“ aplinkoje, vei­kian­čio­je „Ku­ber­ne­tes“ plat­for­mo­je, tai dau­giau­sia prie­žiū­ros užduotys. Šiame pavyzdyje cron užduotį nustatome taip, kad ji būtų vykdoma kas penkias minutes. Esant di­des­niems duomenų kiekiams, gali būti tikslinga vykdyti priežiūrą dažniau. Naudokite šį kodą:

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

Įjunkite HPA

Dabar išjunkite „Ho­ri­zon­tal Pod Au­to­sca­ler“ (HPA) funkciją, kuri au­to­ma­tiš­kai keičia podų skaičių. Jei naudojate „Re­adW­ri­teOn­ce“ su „Nextcloud“ ir norite re­gu­liuo­ti mastelį rankiniu būdu, tu­rė­tu­mė­te išjungti HPA ir sutelkti dėmesį į vieną podą. Šis metodas yra pa­to­ges­nis, jei prieiga rei­ka­lin­ga tik keliems var­to­to­jams. Ati­tin­ka­mas kodas yra toks:

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

Pakeisti vaizdo žymą

Kad būtų at­si­žvelg­ta į naujausią „Helm“ versiją, per­ra­šy­ki­te atvaizdo žymą. Tam naudokite šį kodą:

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

Dabar pa­si­rink­ta versija 28.0.2 arba naujesnė versija.

Pa­si­rin­ki­te duomenų bazę

Renkantis duomenų bazę, turite tris galimybes: „MariaDB“, „Post­g­re­SQL“ arba „SQLite“. Šiame pavyzdyje pa­si­rink­si­me „MariaDB“. Nu­sta­ty­ki­te šią duomenų bazę taip, kaip nurodyta toliau, ir išjunkite kitas dvi sistemas:

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

Rodiklių ste­bė­ji­mas

Norėdami vykdyti stebėjimą naudojant „Pro­met­he­us“ arba „Grafana“, įterpkite šį kodą. Tai nėra privaloma.

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

Leisti naudoti savo kon­fi­gū­ra­ci­jos failus

Pagal nu­ma­ty­tuo­sius nu­sta­ty­mus „Nextcloud“ kon­fi­gū­ra­ci­jai „Ku­ber­ne­tes“ aplinkoje taip pat naudoja failą „config.php“. Norėdami su­pa­pras­tin­ti šį procesą arba padaryti jį lanks­tes­nį, galite įterpti savo kon­fi­gū­ra­ci­jos failus naudodami šį kodą:

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

Pa­kei­s­ki­te vietą „example.com“ savo domeno vardu.

Nustatyti „Redis“

Norėdami pagerinti talpyklos veikimą naudojant „Redis“ ir padidinti bendrą našumą, galite įtraukti pa­si­rink­ti­nį kon­fi­gū­ra­ci­jos failą. Pagal nu­ma­ty­tuo­sius nu­sta­ty­mus „Helm Redis“ įdiegiama be slap­ta­žo­džio apsaugos, tačiau patartina įdiegti papildomą saugumo lygį. Naudokite šį kodą, kad nu­sta­ty­tu­mė­te „Redis“ su slap­ta­žo­džio apsauga ir in­te­gruo­tu­mė­te ją su „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

Duomenų saugyklos užkulisio kon­fi­gū­ra­vi­mas

Pa­tei­kia­mas pas­ku­ti­nis kon­fi­gū­ra­ci­jos failas, skirtas saugyklos S3 aplinkai. Jis įtrauktas į kodą taip:

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

Išjunkite „Redis“ kon­fi­gū­ra­ci­ją

Kadangi aukščiau pakeitėte nu­ma­ty­tą­ją „Redis“ kon­fi­gū­ra­ci­ją, dabar ją reikia išjungti, kad būtų išvengta klaidų. Tai atlikite naudodami šį kodą:

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

Nustatyti serverio vardą, ad­mi­nist­ra­to­riaus vardą ir slap­ta­žo­dį

Dabar įveskite serverio vardą, ad­mi­nist­ra­to­riaus vardą ir ati­tin­ka­mą slap­ta­žo­dį, kad ga­lė­tu­mė­te naudotis „Nextcloud“ „Ku­ber­ne­tes“ aplinkoje. Tam naudokite šį kodą:

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

Pa­kei­s­ki­te vietos lai­kik­lius savo duo­me­ni­mis.

Nustatyti pra­ne­ši­mus el. paštu

Jei norite, galite su­kon­fi­gū­ruo­ti SMTP (Simple Mail Transfer Protocol) paslaugą, kad gautumėte pra­ne­ši­mus iš „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

Nu­sta­ty­ki­te duomenų iš­sau­go­ji­mo diską

Toliau pateikta duomenų iš­sau­go­ji­mo kon­fi­gū­ra­ci­ja skirta duomenims, kuriuos „Nextcloud“ saugo ati­tin­ka­mo­je laik­me­no­je. Tai neturi įtakos jūsų vartotojo duomenims, kurie re­gu­lia­riai saugomi S3:

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

Apsaugoti „Redis“ slap­ta­žo­džiu

Re­ko­men­duo­ja­ma apsaugoti „Redis“ slap­ta­žo­džiu. Tai padės išvengti klaidų atliekant au­ten­ti­fi­ka­vi­mą. Tam naudokite šį kodą, ati­tin­ka­mo­se vietose įrašydami savo slap­ta­žo­dį:

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

Apriboti ko­pi­ja­vi­mą

Kadangi jau išjungėte HPA, tu­rė­tu­mė­te apriboti galimą rep­li­ka­ci­jų skaičių iki 1:

replicaCount: 1
shell

Įdiekite „Nextcloud“ „Ku­ber­ne­tes“ aplinkoje

Ga­liau­siai įdiekite „Nexcloud“ į „Ku­ber­ne­tes“ ir įdiekite „MariaDB“ bei „Redis“:

kubectl create ns nextcloud
helm upgrade --install --namespace nextcloud -f your-values.yaml nextcloud nextcloud/nextcloud
shell
Go to Main Menu