Kako namestiti Nextcloud na Kubernetes
Za namestitev Nextclouda v okolju Kubernetes priporočamo uporabo S3 kot shranjevalnega strežnika in MariaDB kot podatkovne zbirke. Z nekaj spremembami v nastavitvah lahko izboljšate zmogljivost.
Nextcloud in Kubernetes sta odlična kombinacija
Kombinacija Nextclouda in Kubernetesa s storitvijo S3 za shranjevanje je obetavna rešitev v zasebnem in poslovnem sektorju. Ta nekomercialna programska oprema za oblak je primerna tako za delo z lokalnimi strežniki kot z zunanjimi gostitelji ter se v primerjavi s številnimi alternativami Nextcloudu ponaša z odlično varnostno arhitekturo. Kubernetes je odprtokodni sistem za upravljanje kontejnerskih aplikacij, ki se poleg lokalne rabe lahko uporablja tudi za računalništvo v oblaku. Sistem velja za prilagodljivega, visoko prilagodljivega in odpornega proti okvaram. Preberite naprej in izvedite, kako nastaviti Nextcloud na Kubernetesu.
Kateri pogoji morajo biti izpolnjeni?
Preden začnete z namestitvijo Nextclouda na Kubernetesu, morajo biti izpolnjeni nekateri pogoji. Potrebujete dovolj prostora za shranjevanje in morate imeti že ustvarjen Kubernetesov klaster. Odvisno od razpoložljive zmogljivosti se lahko odločite, da ga ustvarite na svojem lokalnem računalniku ali uporabite shranjevanje v oblaku. Poleg tega poskrbite, da je za Kubernetes nastavljen upravitelj paketov Helm. Ko ste pripravljeni, lahko nadaljujete s postopkom.
Kako korak za korakom namestiti Nextcloud na Kubernetes
Ko imate ustrezno podlago, lahko začnete z namestitvijo Nextclouda na Kubernetes. Ključni koraki so povzeti v naslednjih poglavjih.
Nastavi DNS
Prvi korak je ustvariti A-zapis za poddomensko ime, ki bo usmerjen na želeni IP-naslov. Če uporabljate lokalno rešitev, je pravi cilj vaš javni IP-naslov; v nasprotnem primeru vnesite IP-naslov, ki ga je zagotovila vaša storitev v oblaku. Glede na ponudnika storitev DNS se lahko potrebni koraki nekoliko razlikujejo.
Dodajanje in posodabljanje Helm
Kubernetes se namesti s pomočjo upravitelja paketov Helm, ki mora biti nameščen na vašem računalniku. Poleg tega se prepričajte, da imate vzpostavljeno povezavo s svojim Kubernetes-ovim grozdom. Če je tako, dodajte repozitorij Helm in ga posodobite z naslednjimi ukazi:
helm repo add nextcloud https://nextcloud.github.io/helm/
helm repo updateshellUstvari datoteko values.yaml
Sedaj ustvarite nov Helmov diagram z naslednjim ukazom:
nano values.yamlshellNato v to datoteko vnesite naslednje specifikacije.
Nastavi cron naloge
Najprej določite časovno omejitev za cron naloge. V operacijskih sistemih tipa Unix so cron naloge opravila, ki se samodejno izvajajo v ozadju v vnaprej določenih časovnih intervalih. Pri Nextcloud na Kubernetesu gre predvsem za vzdrževalna opravila. V tem primeru bomo nastavili, da se cron naloga izvaja vsakih pet minut. Pri večjih količinah podatkov je morda priporočljivo pogostejše vzdrževanje. Uporabite naslednjo kodo:
cronjob:
annotations: {}
curlInsecure: false
enabled: true
failedJobsHistoryLimit: 5
image: {}
schedule: '*/5* *** '
successfulJobsHistoryLimit: 2shellVklopite HPA
Sedaj onemogočite Horizontal Pod Autoscaler (HPA), ki samodejno prilagaja število podov. Če za Nextcloud uporabljate ReadWriteOnce in želite prilagajanje števila podov nadzorovati ročno, morate onemogočiti HPA in se osredotočiti na en pod. Ta pristop je primernejši, če dostop potrebuje le nekaj uporabnikov. Ustrezna koda je:
hpa:
cputhreshold: 60
enabled: false
maxPods: 10
minPods: 1shellPrepisati oznako slike
Da se upošteva trenutna različica Helma, prepišite oznako slike. Za to uporabite naslednjo kodo:
image:
repositor: nextcloud
tag: 28.0.2-apache
pullPolicy: IfNotPresentshellZdaj je izbrana različica 28.0.2 ali novejša različica.
Izberi bazo podatkov
Pri izbiri podatkovne zbirke imate na voljo tri možnosti: MariaDB, PostgreSQL ali SQLite. V našem primeru se odločimo za MariaDB. To podatkovno zbirko nastavite na naslednji način in onemogočite ostali dve:
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: falseshellSpremljanje kazalnikov
Če želite izvajati spremljanje s Prometheusom ali Grafano, vstavite naslednjo kodo. To je neobvezno.
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: 5sshellOmogoči uporabo lastnih konfiguracijskih datotek
Nextcloud privzeto uporablja tudi datoteko config.php za konfiguracijo v Kubernetesu. Da bi to poenostavili ali omogočili večjo prilagodljivost, lahko vstavite svoje konfiguracijske datoteke z naslednjo kodo:
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'
]
);shellNadomestite nadomestni znak »example.com« s svojo domeno.
Nastavitev Redisa
Za izboljšanje predpomnjenja z Redisom in povečanje splošne zmogljivosti lahko vključite lastno konfiguracijsko datoteko. Helm Redis je privzeto nameščen brez zaščite z geslom, vendar je priporočljivo dodati dodatno raven varnosti. Uporabite naslednjo kodo, da nastavite Redis z zaščito z geslom in ga integrirate v 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')
)
);shellNastavitev ozadja za shranjevanje
Vstavljena je zadnja konfiguracijska datoteka za shranjevalni backend S3. V kodi je shranjena na naslednji način:
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
)
)
);shellIzklopite konfiguracijo Redis
Ker ste zgoraj prepisali privzeto konfiguracijo za Redis, jo je treba zdaj onemogočiti, da se izognete napakam. To storite z naslednjim kodom:
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: trueshellNastavi gostitelja, skrbnika in geslo
Sedaj vnesite ime strežnika, uporabniško ime skrbnika in ustrezno geslo za uporabo Nextclouda v Kubernetesu. Za to uporabite naslednjo kodo:
host: drive.example.com
password: your-password
username: name-of-adminshellZamenjajte nadomestne znake s svojimi podatki.
Nastavi obvestila po e-pošti
Po želji lahko nastavite storitev SMTP (Simple Mail Transfer Protocol) za prejemanje obvestil iz Nextclouda:
mail:
domain: example.com
enabled: false
fromAddress: user
smtp:
authtype: LOGIN
host: example.com
name: username
password: your-password
port: 465
secure: sslshellNastavite pogon za trajno shranjevanje
Naslednja konfiguracija trajnega shranjevanja je namenjena podatkom, ki jih Nextcloud shranjuje na ustreznem nosilcu podatkov. To ne vpliva na vaše uporabniške podatke, ki se redno shranjujejo v S3:
persistence:
accessMode: ReadWriteOnce
annotations: {}
enabled: true
size: 8GishellZaščitite Redis z geslom
Priporočljivo je, da Redis zavarujete z geslom. S tem preprečite napake pri avtentifikaciji. Za to uporabite naslednjo kodo in na ustreznih mestih vnesite svoje geslo:
redis:
enabled: true
password: 'your-password-for-redis'
usePassword: trueshellOmejitev ponovitev
Ker ste HPA že onemogočili, morate število možnih replikacij omejiti na 1:
replicaCount: 1shellNamestitev Nextclouda na Kubernetes
Na koncu namestite Nexcloud na Kubernetes ter dodajte tudi MariaDB in Redis:
kubectl create ns nextcloud
helm upgrade --install --namespace nextcloud -f your-values.yaml nextcloud nextcloud/nextcloudshell