Nextcloudin asentaminen Kubernetesiin
Nextcloudin asentamiseksi Kubernetes-ympäristöön suosittelemme käyttämään S3:a tallennusjärjestelmänä ja MariaDB:tä tietokantana. Suorituskykyä voi parantaa tekemällä muutamia muutoksia asetuksiin.
Nextcloud ja Kubernetes ovat erinomainen yhdistelmä
Nextcloudin ja Kubernetesin yhdistelmä, jossa tallennustilana käytetään S3:a, on lupaava ratkaisu sekä yksityis- että yrityssektorilla. Tämä ei-kaupallinen pilvipohjainen ohjelmisto sopii käytettäväksi sekä paikallisten palvelimien että ulkoisten isäntäkoneiden kanssa, ja sen tietoturva-arkkitehtuuri on erinomainen verrattuna lukuisiin Nextcloud-vaihtoehtoihin. Kubernetes on avoimen lähdekoodin hallintajärjestelmä konttisovelluksille, ja sitä voidaan käyttää paikallisen käytön lisäksi myös pilvipalveluissa. Järjestelmää pidetään joustavana, erittäin skaalautuvana ja vikasietoisena. Lue lisää siitä, miten Nextcloud asennetaan Kubernetes-alustalle.
Mitkä ehdot on täytettävä?
Ennen kuin voit aloittaa Nextcloudin asennuksen Kubernetes-ympäristöön, muutaman edellytyksen on täytyttävä. Tarvitset riittävästi tallennustilaa, ja sinun tulisi olla jo luonut Kubernetes-klusteri. Voit luoda sen paikalliselle koneellesi tai käyttää pilvitallennustilaa käytettävissä olevan kapasiteetin mukaan. Varmista lisäksi, että Helm-pakettienhallintaohjelma on asennettu Kubernetes-ympäristöön. Kun kaikki on valmista, voit jatkaa ohjeiden mukaisesti.
Nextcloudin asennus Kubernetes-ympäristöön vaihe vaiheelta
Kun perusta on kunnossa, voit aloittaa Nextcloudin asennuksen Kubernetes-ympäristöön. Tärkeimmät vaiheet on tiivistetty seuraavissa osioissa.
Määritä DNS
Ensimmäinen vaihe on luoda aliverkkotunnukselle A-tietue, joka osoittaa haluamaasi IP-osoitteeseen. Jos käytät paikallista ratkaisua, oikea kohde on oma julkinen IP-osoitteesi; muussa tapauksessa syötä pilvipalvelun antama IP-osoite. Tarvittavat vaiheet voivat vaihdella hieman DNS-palveluntarjoajasta riippuen.
Helm-paketin lisääminen ja päivittäminen
Kubernetes otetaan käyttöön Helm-paketinhallintaohjelmalla, joka on asennettava käyttäjän laitteelle. Varmista lisäksi, että sinulla on yhteys Kubernetes-klusteriin. Jos näin on, lisää Helm-pakettivarasto ja päivitä se seuraavilla komennoilla:
helm repo add nextcloud https://nextcloud.github.io/helm/
helm repo updateshellLuo tiedosto values.yaml
Luo nyt uusi Helm-kaavio seuraavalla komennolla:
nano values.yamlshellLisää sitten seuraavat tiedot tähän tiedostoon.
Määritä cron-tehtävät
Määritä ensin cron-tehtävien aikaraja. Unix-tyyppisissä käyttöjärjestelmissä cron-tehtävät ovat tehtäviä, jotka suoritetaan automaattisesti taustalla ennalta määritellyin väliajoin. Kubernetes-ympäristössä toimivassa Nextcloudissa nämä ovat pääasiassa ylläpitotehtäviä. Tässä esimerkissä asetamme cron-tehtävän suorittumaan viiden minuutin välein. Suuremmilla tietomäärillä tiheämpi ylläpito voi olla suositeltavaa. Käytä seuraavaa koodia:
cronjob:
annotations: {}
curlInsecure: false
enabled: true
failedJobsHistoryLimit: 5
image: {}
schedule: '*/5* *** '
successfulJobsHistoryLimit: 2shellOta HPA käyttöön
Poista nyt käytöstä Horizontal Pod Autoscaler (HPA), joka skaalaa podien määrää automaattisesti. Jos käytät Nextcloudissa ReadWriteOnce-sovellusta ja haluat hallita skaalausta manuaalisesti, 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: 1shellKorvaa kuvatunniste
Varmistaaksesi, että Helm-ohjelmiston nykyinen versio otetaan huomioon, korvaa kuvatunniste. Tee tämä seuraavalla koodilla:
image:
repositor: nextcloud
tag: 28.0.2-apache
pullPolicy: IfNotPresentshellNyt on valittuna versio 28.0.2 tai uudempi versio.
Valitse tietokanta
Tietokantaa valitessasi sinulla on kolme vaihtoehtoa: MariaDB, PostgreSQL tai SQLite. Tässä esimerkissä valitsemme MariaDB:n. Määritä tämä tietokanta seuraavasti ja poista kaksi muuta järjestelmää 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: falseshellSeuraa mittareita
Jos haluat toteuttaa seurannan Prometheuksen tai Grafanan avulla, lisää seuraava koodi. Tämä on vapaaehtoista.
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: 5sshellSalli omat asetustiedostosi
Oletusarvoisesti Nextcloud käyttää Kubernetes-ympäristössä myös config.php-nimistä tiedostoa asetusten määrittämiseen. Voit yksinkertaistaa tai joustavoittaa tätä lisäämällä omia asetustiedostoja 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'
]
);shellKorvaa paikkamerkki ”example.com” omalla verkkotunnuksellasi.
Määritä Redis
Voit parantaa Redis-välimuistin toimintaa ja yleistä suorituskykyä lisäämällä mukautetun määritystiedoston. Oletusarvoisesti Helm Redis asennetaan ilman salasanasuojausta, mutta on suositeltavaa lisätä ylimääräinen turvataso. Määritä Redis salasanasuojauksella ja integroi se Nextcloudiin 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')
)
);shellTallennusjärjestelmän määrittäminen
Viimeinen määritystiedosto lisätään S3-tallennusjärjestelmää varten. Se on tallennettu koodiin seuraavasti:
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
)
)
);shellPoista Redis-määritykset käytöstä
Koska olet yllä korvannut Redisin oletusasetukset, ne on nyt poistettava käytöstä virheiden välttämiseksi seuraavalla 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: trueshellMääritä isäntä, järjestelmänvalvoja ja salasana
Syötä nyt isäntäkoneen nimi, järjestelmänvalvojan käyttäjätunnus ja vastaava salasana Nextcloudin käyttöä varten Kubernetes-ympäristössä. Käytä tähän seuraavaa koodia:
host: drive.example.com
password: your-password
username: name-of-adminshellKorvaa paikkamerkit omilla tiedoillasi.
Määritä sähköpostimuistutukset
Voit halutessasi määrittää SMTP-palvelun (Simple Mail Transfer Protocol) vastaanottamaan ilmoituksia Nextcloudista:
mail:
domain: example.com
enabled: false
fromAddress: user
smtp:
authtype: LOGIN
host: example.com
name: username
password: your-password
port: 465
secure: sslshellMääritä tallennusasema
Seuraava tallennusasetus koskee tietoja, jotka Nextcloud tallentaa kyseiselle tallennusvälineelle. Tämä ei vaikuta käyttäjätietoihisi, jotka tallennetaan S3-palveluun aikataulun mukaisesti:
persistence:
accessMode: ReadWriteOnce
annotations: {}
enabled: true
size: 8GishellSuojaa Redis salasanalla
On suositeltavaa suojata Redis salasanalla. Tämä estää virheitä tunnistautumisen yhteydessä. Tee tämä seuraavan koodin avulla ja korvaa salasanasi tarvittaessa:
redis:
enabled: true
password: 'your-password-for-redis'
usePassword: trueshellRajoita kopiointia
Koska olet jo poistanut HPA:n käytöstä, sinun tulisi rajoittaa mahdollisten replikaatioiden määrä arvoon 1:
replicaCount: 1shellAsenna Nextcloud Kubernetesiin
Lopuksi asenna Nexcloud Kubernetesiin ja lisää myös MariaDB ja Redis:
kubectl create ns nextcloud
helm upgrade --install --namespace nextcloud -f your-values.yaml nextcloud nextcloud/nextcloudshell