Για να εγκαταστήσετε το 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 update
shell

Δημιουργήστε το αρχείο values.yaml

Τώρα δημιουργήστε ένα νέο διάγραμμα Helm με την ακόλουθη εντολή:

nano values.yaml
shell

Στη συνέχεια, προσθέστε τις ακόλουθες προδιαγραφές σε αυτό το αρχείο.

Ρύθμιση προγραμματισμένων εργασιών

Κατ’ αρχάς, ορίστε ένα χρονικό όριο για τις εργασίες cron. Σε λειτουργικά συστήματα τύπου Unix, οι εργασίες cron είναι εργασίες που εκτελούνται αυτόματα στο παρασκήνιο σε προγραμματισμένα χρονικά διαστήματα. Για το Nextcloud στο Kubernetes, πρόκειται κυρίως για εργασίες συντήρησης. Σε αυτό το παράδειγμα, ρυθμίζουμε την εργασία cron ώστε να εκτελείται κάθε πέντε λεπτά. Για μεγαλύτερους όγκους δεδομένων, ενδέχεται να συνιστάται πιο συχνή συντήρηση. Χρησιμοποιήστε τον ακόλουθο κώδικα:

cronjob:
    annotations: {}
    curlInsecure: false
    enabled: true
    failedJobsHistoryLimit: 5
    image: {}
    schedule: '*/5*     *** '
    successfulJobsHistoryLimit: 2
shell

Ενεργοποίηση HPA

Τώρα, απενεργοποιήστε το Horizontal Pod Autoscaler (HPA), το οποίο προσαρμόζει αυτόματα τον αριθμό των pods. Εάν χρησιμοποιείτε το ReadWriteOnce για το Nextcloud και προτιμάτε να ελέγχετε τη κλιμάκωση χειροκίνητα, θα πρέπει να απενεργοποιήσετε το HPA και να επικεντρωθείτε σε ένα pod. Αυτή η προσέγγιση είναι πιο βολική αν μόνο λίγα άτομα χρειάζονται πρόσβαση. Ο κατάλληλος κώδικας είναι:

hpa:
    cputhreshold: 60
    enabled: false
    maxPods: 10
    minPods: 1
shell

Αντικατάσταση ετικέτας εικόνας

Για να διασφαλίσετε ότι θα ληφθεί υπόψη η τρέχουσα έκδοση του Helm, αντικαταστήστε την ετικέτα της εικόνας. Χρησιμοποιήστε τον παρακάτω κώδικα για να το κάνετε αυτό:

image:
    repositor: nextcloud
    tag: 28.0.2-apache
    pullPolicy: IfNotPresent
shell

Έχει επιλεγεί η έκδοση 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: false
shell

Παρακολούθηση δεικτών

Για να πραγματοποιήσετε παρακολούθηση με το 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: 5s
shell

Επιτρέψτε τη χρήση των δικών σας αρχείων ρυθμίσεων

Από προεπιλογή, το 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: true
shell

Ορισμός ονόματος διακομιστή, διαχειριστή και κωδικού πρόσβασης

Τώρα εισάγετε τον κεντρικό υπολογιστή, τον διαχειριστή και τον αντίστοιχο κωδικό πρόσβασης για τη χρήση του Nextcloud στο Kubernetes. Χρησιμοποιήστε τον παρακάτω κώδικα:

host: drive.example.com
password: your-password
username: name-of-admin
shell

Αντικαταστήστε τα σύμβολα κράτησης θέσης με τα δικά σας στοιχεία.

Ρύθμιση ειδοποιήσεων μέσω 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: ssl
shell

Ρύθμιση της μονάδας αποθήκευσης

Η παρακάτω ρύθμιση αποθήκευσης αφορά τα δεδομένα που αποθηκεύει το Nextcloud στον αντίστοιχο φορέα δεδομένων. Αυτό δεν επηρεάζει τα δεδομένα των χρηστών σας, τα οποία αποθηκεύονται στο S3 σύμφωνα με ένα προγραμματισμένο χρονοδιάγραμμα:

persistence:
    accessMode: ReadWriteOnce
    annotations: {}
    enabled: true
    size: 8Gi
shell

Προστασία του Redis με κωδικό πρόσβασης

Συνιστάται να προστατεύσετε το Redis με κωδικό πρόσβασης. Αυτό αποτρέπει την εμφάνιση σφαλμάτων κατά την πιστοποίηση. Χρησιμοποιήστε τον παρακάτω κώδικα για να το κάνετε αυτό, αντικαθιστώντας τον κωδικό πρόσβασής σας όπου απαιτείται:

redis:
    enabled: true
    password: 'your-password-for-redis'
    usePassword: true
shell

Περιορισμός των αντιγράφων

Εφόσον έχετε ήδη απενεργοποιήσει το HPA, θα πρέπει να περιορίσετε τον πιθανό αριθμό αντιγράφων σε 1:

replicaCount: 1
shell

Εγκατάσταση του Nextcloud στο Kubernetes

Τέλος, εγκαταστήστε το Nexcloud στο Kubernetes και προσθέστε επίσης το MariaDB και το Redis:

kubectl create ns nextcloud
helm upgrade --install --namespace nextcloud -f your-values.yaml nextcloud nextcloud/nextcloud
shell
Go to Main Menu