Kā instalēt Nextcloud uz Kubernetes
Lai uzstādītu Nextcloud uz Kubernetes, iesakām kā datu uzglabāšanas sistēmu izmantot S3 un kā datu bāzi — MariaDB. Veicot dažas izmaiņas konfigurācijā, varat uzlabot sistēmas veiktspēju.
Nextcloud un Kubernetes ir lieliska kombinācija
Nextcloud un Kubernetes apvienojums ar S3 datu uzglabāšanai ir daudzsološs risinājums privātajā un biznesa sektorā. Šī nekomerciālā mākoņprogrammatūra ir piemērota darbam gan ar vietējiem serveriem, gan ārējiem resursiem, un, salīdzinot ar daudzajām Nextcloud alternatīvām, tā var lepoties ar izcilu drošības arhitektūru. Kubernetes ir atvērtā koda pārvaldības sistēma konteineru lietojumprogrammām, ko var izmantot gan vietējai lietošanai, gan mākoņdatošanai. Šī sistēma tiek uzskatīta par elastīgu, ļoti skalējamu un drošu pret kļūmēm. Lasiet tālāk, lai uzzinātu, kā uzstādīt Nextcloud uz Kubernetes.
Kādi nosacījumi ir jāizpilda?
Pirms sākt Nextcloud konfigurēšanu Kubernetes vidē, ir jāizpilda daži nosacījumi. Jums ir nepieciešama pietiekama uzglabāšanas vieta, un jau ir jābūt izveidotam Kubernetes klasterim. Atkarībā no pieejamās kapacitātes varat izvēlēties to izveidot savā lokālajā datorā vai izmantot mākoņuzglabāšanu. Turklāt pārliecinieties, ka Kubernetes vidē ir konfigurēts Helm pakotņu pārvaldnieks. Kad viss ir sagatavots, varat turpināt ar turpmākajiem soļiem.
Kā soli pa solim uzstādīt Nextcloud uz Kubernetes
Kad būsiet izveidojuši atbilstošu pamatu, varat sākt Nextcloud konfigurēšanu Kubernetes vidē. Galvenie soļi ir apkopoti turpmākajās sadaļās.
Konfigurēt DNS
Pirmais solis ir izveidot A ierakstu apakšdomēnam, kas norāda uz vēlamo IP adresi. Ja izmantojat lokālo risinājumu, par galamērķi jānorāda jūsu publiskā IP adrese; citā gadījumā ievadiet IP adresi, ko sniedzis jūsu mākoņpakalpojuma sniedzējs. Atkarībā no DNS pakalpojuma sniedzēja šim nolūkam nepieciešamie soļi var nedaudz atšķirties.
Pievienot un atjaunināt Helm
Kubernetes tiek izvietots, izmantojot Helm pakotņu pārvaldnieku, kas jābūt instalētam jūsu klientā. Turklāt pārliecinieties, ka jums ir savienojums ar Kubernetes klasteri. Ja tas tā ir, pievienojiet Helm repozitoriju un atjauniniet to, izmantojot šādas komandas:
helm repo add nextcloud https://nextcloud.github.io/helm/
helm repo updateshellIzveidojiet failu values.yaml
Tagad izveidojiet jaunu Helm diagrammu, izmantojot šādu komandu:
nano values.yamlshellTad pievienojiet šim failam šādas specifikācijas.
Iestatīt cron uzdevumus
Vispirms noteikt cronjobu izpildes intervālu. Unix tipa operētājsistēmās cronjobi ir uzdevumi, kas automātiski tiek izpildīti fonā pēc iepriekš noteiktiem intervāliem. Nextcloud vidē uz Kubernetes platformas tie galvenokārt ir uzturēšanas uzdevumi. Šajā piemērā mēs iestatām, lai cronjobs tiktu izpildīts ik pēc piecām minūtēm. Ja datu apjoms ir lielāks, varētu būt ieteicams veikt biežāku uzturēšanu. Izmantojiet šādu kodu:
cronjob:
annotations: {}
curlInsecure: false
enabled: true
failedJobsHistoryLimit: 5
image: {}
schedule: '*/5* *** '
successfulJobsHistoryLimit: 2shellAktivizēt HPA
Tagad atspējojiet Horizontal Pod Autoscaler (HPA), kas automātiski maina podu skaitu. Ja izmantojat ReadWriteOnce Nextcloud vajadzībām un vēlaties mērogu regulēt manuāli, jums vajadzētu atspējot HPA un koncentrēties uz vienu podu. Šī pieeja ir ērtāka, ja piekļuve ir nepieciešama tikai nedaudziem lietotājiem. Atbilstošais kods ir:
hpa:
cputhreshold: 60
enabled: false
maxPods: 10
minPods: 1shellPārrakstīt attēla tagu
Lai nodrošinātu, ka tiek ņemta vērā pašreizējā Helm versija, pārrakstiet attēla tagu. Lai to izdarītu, izmantojiet šo kodu:
image:
repositor: nextcloud
tag: 28.0.2-apache
pullPolicy: IfNotPresentshellTagad ir izvēlēta versija 28.0.2 vai jaunāka versija.
Izvēlieties datu bāzi
Izvēloties datubāzi, jums ir trīs iespējas: MariaDB, PostgreSQL vai SQLite. Šajā piemērā izvēlamies MariaDB. Konfigurējiet šo datubāzi šādi un atspējojiet pārējās divas sistēmas:
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: falseshellRādītāju rīks Rī rīks Rī rī rī rī rī rī rī rī rī r
Lai veiktu uzraudzību, izmantojot Prometheus vai Grafana, ievietojiet šādu kodu. Tas ir fakultatīvs solis.
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: 5sshellAtļaujiet izmantot savus konfigurācijas failus
Pēc noklusējuma Nextcloud konfigurācijai Kubernetes vidē izmanto arī failu ar nosaukumu config.php. Lai vienkāršotu šo procesu vai padarītu to elastīgāku, varat ievietot savus konfigurācijas failus, izmantojot šādu kodu:
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'
]
);shellAizstājiet vietas turētāju „example.com“ ar savu domēnu.
Redis konfigurēšana
Lai uzlabotu kešēšanu ar Redis un palielinātu kopējo veiktspēju, varat iekļaut pielāgotu konfigurācijas failu. Pēc noklusējuma Helm Redis tiek instalēts bez paroles aizsardzības, taču ir ieteicams pievienot papildu drošības slāni. Izmantojiet šo kodu, lai konfigurētu Redis ar paroles aizsardzību un integrētu to ar 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')
)
);shellUzglabāšanas sistēmas konfigurēšana
Pēdējais konfigurācijas fails ir pievienots datu uzglabāšanas backendam S3. Tas kodā ir saglabāts šādi:
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
)
)
);shellAtvienot Redis konfigurāciju
Tā kā iepriekš esat pārrakstījis Redis noklusējuma konfigurāciju, tagad tā ir jāatspējo, lai izvairītos no kļūdām, izmantojot šādu kodu:
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: trueshellIestatiet serveri, administratora vārdu un paroli
Tagad ievadiet servera nosaukumu, administratora vārdu un atbilstošo paroli, lai izmantotu Nextcloud Kubernetes vidē. Šim nolūkam izmantojiet šo kodu:
host: drive.example.com
password: your-password
username: name-of-adminshellAizstājiet vietu aizvietotājus ar saviem datiem.
Iestatīt e-pasta paziņojumus
Pēc izvēles varat konfigurēt SMTP pakalpojumu (Simple Mail Transfer Protocol), lai saņemtu paziņojumus no Nextcloud:
mail:
domain: example.com
enabled: false
fromAddress: user
smtp:
authtype: LOGIN
host: example.com
name: username
password: your-password
port: 465
secure: sslshellKonfigurējiet pastāvīgās uzglabāšanas disku
Šī datu saglabāšanas konfigurācija ir paredzēta datiem, kurus Nextcloud glabā attiecīgajā datu nesējā. Tas neietekmē jūsu lietotāju datus, kuri tiek regulāri saglabāti S3:
persistence:
accessMode: ReadWriteOnce
annotations: {}
enabled: true
size: 8GishellAizsargāt Redis ar paroli
Ieteicams aizsargāt Redis ar paroli. Tas novērš kļūdas autentifikācijas laikā. Lai to izdarītu, izmantojiet šādu kodu, attiecīgajās vietās aizstājot savu paroli:
redis:
enabled: true
password: 'your-password-for-redis'
usePassword: trueshellIerobežot atkārtojumus
Tā kā jūs jau esat atspējojis HPA, jums vajadzētu ierobežot iespējamo replikāciju skaitu līdz 1:
replicaCount: 1shellNextcloud instalēšana Kubernetes vidē
Visbeidzot, instalējiet Nexcloud uz Kubernetes un pievienojiet arī MariaDB un Redis:
kubectl create ns nextcloud
helm upgrade --install --namespace nextcloud -f your-values.yaml nextcloud nextcloud/nextcloudshell