Πώς να εγκαταστήσετε το Nextcloud στο Kubernetes
Για να εγκαταστήσετε το Nextcloud στο Kubernetes, συνιστούμε να χρησιμοποιήσετε το S3 ως υποδομή αποθήκευσης και το MariaDB ως βάση δεδομένων. Μπορείτε να βελτιώσετε την απόδοση με μερικές αλλαγές στη διαμόρφωση.
Το Nextcloud και το Kubernetes αποτελούν έναν εξαιρετικό συνδυασμό
Ο συνδυασμός του Nextcloud και του Kubernetes με το S3 για αποθήκευση αποτελεί μια πολλά υποσχόμενη λύση στον ιδιωτικό και επιχειρηματικό τομέα. Το μη εμπορικό λογισμικό cloud είναι κατάλληλο τόσο για χρήση με τοπικούς διακομιστές όσο και με εξωτερικούς κεντρικούς υπολογιστές και διαθέτει μια εξαιρετική αρχιτεκτονική ασφάλειας σε σύγκριση με πολλές εναλλακτικές λύσεις του Nextcloud. Το Kubernetes είναι ένα σύστημα διαχείρισης ανοιχτού κώδικα για εφαρμογές κοντέινερ και μπορεί να χρησιμοποιηθεί για υπολογιστικό νέφος, εκτός από την τοπική χρήση. Το σύστημα θεωρείται ευέλικτο, εξαιρετικά επεκτάσιμο και ανθεκτικό σε σφάλματα. Διαβάστε παρακάτω για να μάθετε πώς να ρυθμίσετε το Nextcloud στο Kubernetes.
Ποιες προϋποθέσεις πρέπει να πληρούνται;
Προτού ξεκινήσετε την εγκατάσταση του Nextcloud στο Kubernetes, πρέπει να πληρούνται ορισμένες προϋποθέσεις. Χρειάζεστε επαρκή χώρο αποθήκευσης και θα πρέπει να έχετε ήδη δημιουργήσει ένα σύμπλεγμα Kubernetes. Μπορείτε να επιλέξετε να το δημιουργήσετε στον τοπικό σας υπολογιστή ή να χρησιμοποιήσετε αποθηκευτικό χώρο στο cloud, ανάλογα με τη διαθέσιμη χωρητικότητα. Επιπλέον, βεβαιωθείτε ότι ο διαχειριστής πακέτων Helm έχει ρυθμιστεί για το Kubernetes. Μόλις είστε έτοιμοι, μπορείτε να προχωρήσετε στα βήματα.
Πώς να εγκαταστήσετε το Nextcloud στο Kubernetes βήμα προς βήμα
Μόλις δημιουργήσετε το κατάλληλο περιβάλλον, μπορείτε να ξεκινήσετε την εγκατάσταση του Nextcloud στο Kubernetes. Τα βασικά βήματα συνοψίζονται στις παρακάτω ενότητες.
Ρύθμιση παραμέτρων DNS
Το πρώτο βήμα είναι να δημιουργήσετε μια εγγραφή τύπου A για έναν υποτομέα που θα παραπέμπει στη διεύθυνση IP που επιθυμείτε. Εάν χρησιμοποιείτε την τοπική λύση, η δημόσια διεύθυνση IP σας είναι ο σωστός προορισμός· διαφορετικά, εισάγετε τη διεύθυνση IP που παρέχει η υπηρεσία cloud σας. Ανάλογα με τον πάροχο DNS, τα απαιτούμενα βήματα μπορεί να διαφέρουν ελαφρώς.
Προσθήκη και ενημέρωση του Helm
Το Kubernetes αναπτύσσεται χρησιμοποιώντας τον διαχειριστή πακέτων Helm, ο οποίος θα πρέπει να είναι εγκατεστημένος στον υπολογιστή σας. Επιπλέον, βεβαιωθείτε ότι έχετε σύνδεση με το σύμπλεγμα Kubernetes σας. Εάν ναι, προσθέστε το αποθετήριο Helm και ενημερώστε το με τις ακόλουθες εντολές:
helm repo add nextcloud https://nextcloud.github.io/helm/
helm repo updateshellΔημιουργήστε το αρχείο values.yaml
Τώρα δημιουργήστε ένα νέο διάγραμμα Helm με την ακόλουθη εντολή:
nano values.yamlshellΣτη συνέχεια, προσθέστε τις ακόλουθες προδιαγραφές σε αυτό το αρχείο.
Ρύθμιση προγραμματισμένων εργασιών
Κατ’ αρχάς, ορίστε ένα χρονικό όριο για τις εργασίες cron. Σε λειτουργικά συστήματα τύπου Unix, οι εργασίες cron είναι εργασίες που εκτελούνται αυτόματα στο παρασκήνιο σε προγραμματισμένα χρονικά διαστήματα. Για το Nextcloud στο Kubernetes, πρόκειται κυρίως για εργασίες συντήρησης. Σε αυτό το παράδειγμα, ρυθμίζουμε την εργασία cron ώστε να εκτελείται κάθε πέντε λεπτά. Για μεγαλύτερους όγκους δεδομένων, ενδέχεται να συνιστάται πιο συχνή συντήρηση. Χρησιμοποιήστε τον ακόλουθο κώδικα:
cronjob:
annotations: {}
curlInsecure: false
enabled: true
failedJobsHistoryLimit: 5
image: {}
schedule: '*/5* *** '
successfulJobsHistoryLimit: 2shellΕνεργοποίηση HPA
Τώρα, απενεργοποιήστε το Horizontal Pod Autoscaler (HPA), το οποίο προσαρμόζει αυτόματα τον αριθμό των pods. Εάν χρησιμοποιείτε το ReadWriteOnce για το Nextcloud και προτιμάτε να ελέγχετε τη κλιμάκωση χειροκίνητα, θα πρέπει να απενεργοποιήσετε το HPA και να επικεντρωθείτε σε ένα pod. Αυτή η προσέγγιση είναι πιο βολική αν μόνο λίγα άτομα χρειάζονται πρόσβαση. Ο κατάλληλος κώδικας είναι:
hpa:
cputhreshold: 60
enabled: false
maxPods: 10
minPods: 1shellΑντικατάσταση ετικέτας εικόνας
Για να διασφαλίσετε ότι θα ληφθεί υπόψη η τρέχουσα έκδοση του Helm, αντικαταστήστε την ετικέτα της εικόνας. Χρησιμοποιήστε τον παρακάτω κώδικα για να το κάνετε αυτό:
image:
repositor: nextcloud
tag: 28.0.2-apache
pullPolicy: IfNotPresentshellΈχει επιλεγεί η έκδοση 28.0.2 ή μια νεότερη έκδοση.
Επιλογή βάσης δεδομένων
Έχετε τρεις επιλογές κατά την επιλογή της βάσης δεδομένων σας: MariaDB, PostgreSQL ή SQLite. Για το παράδειγμά μας, επιλέγουμε τη MariaDB. Ρυθμίστε αυτή τη βάση δεδομένων ως εξής και απενεργοποιήστε τα άλλα δύο συστήματα:
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: falseshellΠαρακολούθηση δεικτών
Για να πραγματοποιήσετε παρακολούθηση με το Prometheus ή το Grafana, εισάγετε τον παρακάτω κώδικα. Αυτό είναι προαιρετικό.
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: 5sshellΕπιτρέψτε τη χρήση των δικών σας αρχείων ρυθμίσεων
Από προεπιλογή, το Nextcloud χρησιμοποιεί επίσης ένα αρχείο με το όνομα config.php για τη διαμόρφωση στο Kubernetes. Για να απλοποιήσετε ή να κάνετε αυτή τη διαδικασία πιο ευέλικτη, μπορείτε να εισαγάγετε τα δικά σας αρχεία διαμόρφωσης χρησιμοποιώντας τον παρακάτω κώδικα:
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Αντικαταστήστε τον προσωρινό τίτλο «example.com» με το δικό σας domain.
Ρύθμιση παραμέτρων του Redis
Για να βελτιώσετε την προσωρινή αποθήκευση με το Redis και να ενισχύσετε τη συνολική απόδοση, μπορείτε να συμπεριλάβετε ένα προσαρμοσμένο αρχείο ρυθμίσεων. Από προεπιλογή, το Helm Redis εγκαθίσταται χωρίς προστασία με κωδικό πρόσβασης, αλλά συνιστάται να προσθέσετε ένα επιπλέον επίπεδο ασφάλειας. Χρησιμοποιήστε τον παρακάτω κώδικα για να ρυθμίσετε το Redis με προστασία κωδικού πρόσβασης και να το ενσωματώσετε στο 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Ρύθμιση παραμέτρων του backend αποθήκευσης
Το τελευταίο αρχείο ρυθμίσεων έχει προστεθεί για το σύστημα αποθήκευσης S3. Αποθηκεύεται στον κώδικα ως εξής:
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Απενεργοποίηση της διαμόρφωσης του Redis
Δεδομένου ότι παραπάνω έχετε αντικαταστήσει την προεπιλεγμένη ρύθμιση για το Redis, πρέπει τώρα να την απενεργοποιήσετε για να αποφύγετε σφάλματα, χρησιμοποιώντας τον παρακάτω κώδικα:
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: trueshellΟρισμός ονόματος διακομιστή, διαχειριστή και κωδικού πρόσβασης
Τώρα εισάγετε τον κεντρικό υπολογιστή, τον διαχειριστή και τον αντίστοιχο κωδικό πρόσβασης για τη χρήση του Nextcloud στο Kubernetes. Χρησιμοποιήστε τον παρακάτω κώδικα:
host: drive.example.com
password: your-password
username: name-of-adminshellΑντικαταστήστε τα σύμβολα κράτησης θέσης με τα δικά σας στοιχεία.
Ρύθμιση ειδοποιήσεων μέσω email
Προαιρετικά, μπορείτε να ρυθμίσετε μια υπηρεσία SMTP (Simple Mail Transfer Protocol) για να λαμβάνετε ειδοποιήσεις από το Nextcloud:
mail:
domain: example.com
enabled: false
fromAddress: user
smtp:
authtype: LOGIN
host: example.com
name: username
password: your-password
port: 465
secure: sslshellΡύθμιση της μονάδας αποθήκευσης
Η παρακάτω ρύθμιση αποθήκευσης αφορά τα δεδομένα που αποθηκεύει το Nextcloud στον αντίστοιχο φορέα δεδομένων. Αυτό δεν επηρεάζει τα δεδομένα των χρηστών σας, τα οποία αποθηκεύονται στο S3 σύμφωνα με ένα προγραμματισμένο χρονοδιάγραμμα:
persistence:
accessMode: ReadWriteOnce
annotations: {}
enabled: true
size: 8GishellΠροστασία του Redis με κωδικό πρόσβασης
Συνιστάται να προστατεύσετε το Redis με κωδικό πρόσβασης. Αυτό αποτρέπει την εμφάνιση σφαλμάτων κατά την πιστοποίηση. Χρησιμοποιήστε τον παρακάτω κώδικα για να το κάνετε αυτό, αντικαθιστώντας τον κωδικό πρόσβασής σας όπου απαιτείται:
redis:
enabled: true
password: 'your-password-for-redis'
usePassword: trueshellΠεριορισμός των αντιγράφων
Εφόσον έχετε ήδη απενεργοποιήσει το HPA, θα πρέπει να περιορίσετε τον πιθανό αριθμό αντιγράφων σε 1:
replicaCount: 1shellΕγκατάσταση του Nextcloud στο Kubernetes
Τέλος, εγκαταστήστε το Nexcloud στο Kubernetes και προσθέστε επίσης το MariaDB και το Redis:
kubectl create ns nextcloud
helm upgrade --install --namespace nextcloud -f your-values.yaml nextcloud nextcloud/nextcloudshell