Kaip įdiegti „Nextcloud“ „Kubernetes“ aplinkoje
Norėdami įdiegti „Nextcloud“ „Kubernetes“ aplinkoje, rekomenduojame naudoti S3 kaip saugyklos platformą ir „MariaDB“ kaip duomenų bazę. Atlikę keletą konfigūracijos pakeitimų, galite padidinti sistemos našumą.
„Nextcloud“ ir „Kubernetes“ – tai puikus derinys
„Nextcloud“ ir „Kubernetes“ derinys su „S3“ saugykla yra perspektyvus sprendimas privačiame ir verslo sektoriuose. Ši nekomercinė debesų programinė įranga tinka dirbti tiek su vietiniais serveriais, tiek su išoriniais serveriais ir pasižymi puikia saugumo architektūra, palyginti su daugybe „Nextcloud“ alternatyvų. „Kubernetes“ yra atvirojo kodo konteinerių programų valdymo sistema, kuri, be vietinio naudojimo, gali būti naudojama ir debesų kompiuterijai. Ši sistema laikoma lanksčia, labai mastelio keičiamu ir atspariu gedimams. Skaitykite toliau, kad sužinotumėte, kaip įdiegti „Nextcloud“ „Kubernetes“ sistemoje.
Kokios sąlygos turi būti įvykdytos?
Prieš pradėdami diegti „Nextcloud“ „Kubernetes“ aplinkoje, turite įvykdyti keletą sąlygų. Reikia turėti pakankamai saugyklos vietos ir jau sukurti „Kubernetes“ klasterį. Priklausomai nuo turimos talpos, galite jį sukurti savo vietiniame kompiuteryje arba naudoti debesų saugyklą. Be to, įsitikinkite, kad „Kubernetes“ aplinkoje yra įdiegtas „Helm“ paketų tvarkyklė. Kai viskas bus paruošta, galite pradėti vykdyti tolesnius veiksmus.
Kaip žingsnis po žingsnio įdiegti „Nextcloud“ „Kubernetes“ aplinkoje
Kai turėsite tinkamą pagrindą, galėsite pradėti diegti „Nextcloud“ „Kubernetes“ aplinkoje. Pagrindiniai žingsniai apibendrinti tolesniuose 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ą. Priklausomai nuo DNS teikėjo, šiam veiksmui atlikti reikalingi žingsniai gali šiek tiek skirtis.
Pridėti ir atnaujinti „Helm“
„Kubernetes“ diegiamas naudojant „Helm“ paketų tvarkyklę, kuri turėtų būti įdiegta jūsų kompiuteryje. Be to, įsitikinkite, kad turite ryšį su savo „Kubernetes“ klasteriu. Jei taip, pridėkite „Helm“ saugyklą ir atnaujinkite ją naudodami šias komandas:
helm repo add nextcloud https://nextcloud.github.io/helm/
helm repo updateshellSukurti failą „values.yaml“
Dabar sukurkite naują „Helm“ diagramą naudodami šią komandą:
nano values.yamlshellTada į šį failą įtraukite šias specifikacijas.
Nustatyti cron užduotis
Pirmiausia nustatykite cron užduočių vykdymo dažnį. Unix tipo operacinėse sistemose cron užduotys – tai užduotys, kurios automatiškai vykdomos fone pagal nustatytą tvarkaraštį. „Nextcloud“ aplinkoje, veikiančioje „Kubernetes“ platformoje, tai daugiausia priežiūros užduotys. Šiame pavyzdyje cron užduotį nustatome taip, kad ji būtų vykdoma kas penkias minutes. Esant didesniems 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: 2shellĮjunkite HPA
Dabar išjunkite „Horizontal Pod Autoscaler“ (HPA) funkciją, kuri automatiškai keičia podų skaičių. Jei naudojate „ReadWriteOnce“ su „Nextcloud“ ir norite reguliuoti mastelį rankiniu būdu, turėtumėte išjungti HPA ir sutelkti dėmesį į vieną podą. Šis metodas yra patogesnis, jei prieiga reikalinga tik keliems vartotojams. Atitinkamas kodas yra toks:
hpa:
cputhreshold: 60
enabled: false
maxPods: 10
minPods: 1shellPakeisti vaizdo žymą
Kad būtų atsižvelgta į naujausią „Helm“ versiją, perrašykite atvaizdo žymą. Tam naudokite šį kodą:
image:
repositor: nextcloud
tag: 28.0.2-apache
pullPolicy: IfNotPresentshellDabar pasirinkta versija 28.0.2 arba naujesnė versija.
Pasirinkite duomenų bazę
Renkantis duomenų bazę, turite tris galimybes: „MariaDB“, „PostgreSQL“ arba „SQLite“. Šiame pavyzdyje pasirinksime „MariaDB“. Nustatykite š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: falseshellRodiklių stebėjimas
Norėdami vykdyti stebėjimą naudojant „Prometheus“ 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: 5sshellLeisti naudoti savo konfigūracijos failus
Pagal numatytuosius nustatymus „Nextcloud“ konfigūracijai „Kubernetes“ aplinkoje taip pat naudoja failą „config.php“. Norėdami supaprastinti šį procesą arba padaryti jį lankstesnį, galite įterpti savo konfigūracijos 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'
]
);shellPakeiskite vietą „example.com“ savo domeno vardu.
Nustatyti „Redis“
Norėdami pagerinti talpyklos veikimą naudojant „Redis“ ir padidinti bendrą našumą, galite įtraukti pasirinktinį konfigūracijos failą. Pagal numatytuosius nustatymus „Helm Redis“ įdiegiama be slaptažodžio apsaugos, tačiau patartina įdiegti papildomą saugumo lygį. Naudokite šį kodą, kad nustatytumėte „Redis“ su slaptažodžio apsauga ir integruotumė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')
)
);shellDuomenų saugyklos užkulisio konfigūravimas
Pateikiamas paskutinis konfigūracijos 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
)
)
);shellIšjunkite „Redis“ konfigūraciją
Kadangi aukščiau pakeitėte numatytąją „Redis“ konfigūraciją, 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: trueshellNustatyti serverio vardą, administratoriaus vardą ir slaptažodį
Dabar įveskite serverio vardą, administratoriaus vardą ir atitinkamą slaptažodį, kad galėtumėte naudotis „Nextcloud“ „Kubernetes“ aplinkoje. Tam naudokite šį kodą:
host: drive.example.com
password: your-password
username: name-of-adminshellPakeiskite vietos laikiklius savo duomenimis.
Nustatyti pranešimus el. paštu
Jei norite, galite sukonfigūruoti SMTP (Simple Mail Transfer Protocol) paslaugą, kad gautumėte pranešimus iš „Nextcloud“:
mail:
domain: example.com
enabled: false
fromAddress: user
smtp:
authtype: LOGIN
host: example.com
name: username
password: your-password
port: 465
secure: sslshellNustatykite duomenų išsaugojimo diską
Toliau pateikta duomenų išsaugojimo konfigūracija skirta duomenims, kuriuos „Nextcloud“ saugo atitinkamoje laikmenoje. Tai neturi įtakos jūsų vartotojo duomenims, kurie reguliariai saugomi S3:
persistence:
accessMode: ReadWriteOnce
annotations: {}
enabled: true
size: 8GishellApsaugoti „Redis“ slaptažodžiu
Rekomenduojama apsaugoti „Redis“ slaptažodžiu. Tai padės išvengti klaidų atliekant autentifikavimą. Tam naudokite šį kodą, atitinkamose vietose įrašydami savo slaptažodį:
redis:
enabled: true
password: 'your-password-for-redis'
usePassword: trueshellApriboti kopijavimą
Kadangi jau išjungėte HPA, turėtumėte apriboti galimą replikacijų skaičių iki 1:
replicaCount: 1shellĮdiekite „Nextcloud“ „Kubernetes“ aplinkoje
Galiausiai įdiekite „Nexcloud“ į „Kubernetes“ ir įdiekite „MariaDB“ bei „Redis“:
kubectl create ns nextcloud
helm upgrade --install --namespace nextcloud -f your-values.yaml nextcloud nextcloud/nextcloudshell