4.6 Containers Administration
4.6 Containers Administration
4.6.1 Εισαγωγή
Το LXD UI (LXD User Interface) καθιερώνεται ως ο κεντρικός πίνακας ελέγχου για την υποδομή εικονικοποίησης (system-container) του MyThesis (Εικόνα 1). Η υιοθέτηση του γραφικού περιβάλλοντος διαχείρισης αποσκοπεί στην ταχεία και απλοποιημένη εκτέλεση όλων των λειτουργιών του διαχειριστή συστημάτων (Sysadmin), από τη δημιουργία containers έως τη ρύθμιση δικτύων και αποθηκευτικών χώρων. Με αυτόν τον τρόπο, ελαχιστοποιείται η ανάγκη για αποκλειστική χρήση του Terminal στις τυπικές διαδικασίες διαχείρισης, επιτρέποντας στους διαχειριστές να εστιάσουν στην αρχιτεκτονική και την ασφάλεια.

Το παρόν κεφάλαιο αναλύει τη δομή του LXDUI ως εργαλείο διαχείρισης, εστιάζοντας στην λογική οργάνωση των πόρων μέσω του πλευρικού πάνελ (Εικόνα 2) και στην κρίσιμη διαδικασία ασφαλούς πρόσβασης από έναν απλό φυλλομετρητή, η οποία επιτυγχάνεται χρησιμοποιώντας ψηφιακό πιστοποιητικό (Trust Certificate) για την κρυπτογράφηση TLS (Transport Layer Security - https://[Host's_IP]:8443). Παράλληλα, παρέχεται η απαραίτητη γνώση των βασικών εντολών LXC, που αποτελούν την ταχύτερη μέθοδο για γρήγορους ελέγχους και αυτοματοποιημένες εργασίες.
4.6.2 Διαχείριση Ασφάλειας και Πιστοποιητικών (LXD UI Access)
Η επικοινωνία με το LXD Daemon γίνεται αποκλειστικά μέσω ενός ασφαλούς, κρυπτογραφημένου καναλιού (HTTPS), το οποίο λειτουργεί στη θύρα 8443. Για να επιτραπεί στον browser (π.χ., Chrome ή Firefox) να συνδεθεί με ασφάλεια, πρέπει να γίνει μια διαδικασία "εμπιστοσύνης" (Trust). Ο browser πρέπει να παρουσιάσει ένα έγκυρο Client Certificate (πιστοποιητικό χρήστη) στον LXD Server για να αποδείξει την ταυτότητά σας.
4.6.2.1 Θεμελιώδης Αρχή Λειτουργίας της Πιστοποίησης mTLS
Για να αποκτήσει ο χρήστης διαχειριστική πρόσβαση στο LXD UI μέσω HTTPS στη θύρα 8443, ενεργοποιείται μια κρίσιμη διαδικασία ασφαλείας γνωστή ως Αμφίδρομη Επικύρωση\Πιστοποίηση TLS (Mutual Authentication Transport Layer Security - mTLS). Σε αντίθεση με το παραδοσιακό TLS, όπου μόνο ο εξυπηρετητής (Server) πιστοποιεί την ταυτότητά του στον πελάτη (Client), στο mTLS απαιτείται ταυτόχρονη πιστοποίηση και από τις δύο πλευρές (Εικόνα 2).

Η διαδικασία αυτή θεμελιώνει μια σχέση εμπιστοσύνης (Trust Relationship) μεταξύ του προγράμματος περιήγησης και του LXD Server. Η επιτυχής ολοκλήρωση σημαίνει ότι το LXD Daemon έχει καταχωρίσει το ψηφιακό πιστοποιητικό του browser στη λίστα έμπιστων συσκευών του, χορηγώντας έτσι πλήρη διαχειριστική εξουσιοδότηση (unrestricted access).
Ο παρακάτω πίνακας αναλύει τα τρία στάδια αυτής της θεμελιώδους διαδικασίας πιστοποίησης.
| Φορέας Λειτουργίας (Actor) | Ενέργεια / Ρόλος (Action) | Σκοπός / Αποτέλεσμα (Purpose) |
|---|---|---|
| Πελάτης (Browser) | Δημιουργία Αρχείου .pfx | Δημιουργείται το Ιδιωτικό Κλειδί (Private Key) του χρήστη και αποθηκεύεται με ασφάλεια στο πρόγραμμα περιήγησης. |
| Εξυπηρετητής (LXD Host) | Παραγωγή Ψηφιακού Αποτυπώματος (Fingerprint Generation) | Εκτελούνται εντολές στο Terminal για τον υπολογισμό του Fingerprint (του hash του Δημόσιου Κλειδιού), το οποίο αντιπροσωπεύει μοναδικά το πιστοποιητικό. |
| Διεπαφή Χρήστη (LXD UI) | Καταχώριση Αποτυπώματος (Fingerprint Entry) | Εισάγεται το Fingerprint στη Trust List του Server, επιβεβαιώνοντας έτσι την εμπιστοσύνη του Server στον συγκεκριμένο Client. |
Μόλις ολοκληρωθεί η καταχώριση, ο browser σας παρουσιάζει αυτόματα το ιδιωτικό του κλειδί σε κάθε προσπάθεια σύνδεσης και αποκτάτε πλήρη διαχειριστική πρόσβαση μέσω HTTPS στη θύρα 8443.
4.6.2.2 Διαδικασία Εισαγωγής Πιστοποιητικού Χρήστη (Client Certificate)
Η διαδικασία περιλαμβάνει την ταυτόχρονη εργασία στον browser (που ζητά πρόσβαση) και στον LXD Server (που δίνει την άδεια), δημιουργώντας ένα ζεύγος κλειδιών (key pair) που επιτρέπει την ασφαλή σύνδεση.
4.6.2.2.1 Ενεργοποίηση του Μηχανισμού Εμπιστοσύνης
- Επίσκεψη σελίδας https://[IP_του_LXD_Host]:8443.
- Ο browser θα εμφανίσει μια προειδοποίηση ασφαλείας, καθώς το LXD χρησιμοποιεί ένα αυτο-υπογεγραμμένο (self-signed) πιστοποιητικό για τον server.
- Παρά την προειδοποίηση, προχωρήστε για να ενεργοποιήσετε τη διαδικασία ("Advanced" → "Proceed").
- Αίτημα για Δημιουργία Πιστοποιητικού:
- Ο LXD UI σας καθοδηγεί στη φόρμα "Add trust certificate" (Προσθήκη πιστοποιητικού εμπιστοσύνης).
4.6.2.2.2 Δημιουργία και Εξαγωγή του Κλειδιού Χρήστη (.pfx)
Ο LXD Server ζητά από τον browser να δημιουργήσει ένα ζεύγος κλειδιών (private/public) για τον χρήστη.

- Δημιουργία Αρχείου Κλειδιού (.pfx): Ο browser σας θα σας καθοδηγήσει στη λήψη ενός αρχείου-κλειδιού σε μορφή .p12 ή .pfx (γνωστό ως PKCS#12). Αυτό το αρχείο περιέχει τόσο το δημόσιο, όσο και το ιδιωτικό σας κλειδί και προστατεύεται με έναν κωδικό πρόσβασης (password) που θα ορίσετε εσείς (Εικόνα 4).

- Εισαγωγή στο Browser: Αυτό το αρχείο πρέπει να εισαχθεί στις ρυθμίσεις πιστοποιητικών του browser, ώστε να το παρουσιάζει αυτόματα κάθε φορά που συνδέεστε στη θύρα 8443.
4.6.2.2.3 Παραγωγή Δημόσιου Αποτυπώματος (Fingerprint) στο Server
Για να ολοκληρωθεί η διαδικασία εμπιστοσύνης, το LXD χρειάζεται να εμπιστευτεί τον browser σας.
Αντιγραφή Εντολής για Κλειδί: Αντιγράφετε την εντολή που δίνει το LXD UI και την εκτελείτε στο Terminal του LXD Host (VM)
lxc auth identity create tls/lxd-ui --group adminsΤο αποτέλεσμα είναι μια αλφαριθμητική συμβολοσειρά 64 χαρακτήρων (Εικόνα 5).

4.6.2.2.4 Ολοκλήρωση του Μηχανισμού Εμπιστοσύνης
- Εισαγωγή Fingerprint: Αντιγράφετε το Fingerprint από το Terminal και το επικολείτε στο αντίστοιχο πεδίο του LXD UI στον browser (Εικόνα 6).

- Επιβεβαίωση: Πατάτε Add (Προσθήκη) ή Trust.
Η ενέργεια αυτή καταχωρεί το δημόσιο κλειδί του browser σας στη λίστα έμπιστων συσκευών του LXD Server, επιτρέποντας την ασφαλή πρόσβαση μέσω Mutual TLS (αμοιβαίου TLS).
4.6.3 Περιγραφική Ανάλυση του Πλευρικού Πάνελ (Sidebar)
Μετά την επιτυχή ολοκλήρωση της Αμφίδρομης TLS (mTLS) διαδικασίας και τη χορήγηση πλήρους διαχειριστικής εξουσιοδότησης στον φυλλομετρητή, το LXDUI μας υποδέχεται παρουσιάζοντας το πλευρικό πάνελ (Sidebar), το οποίο αποτελεί τον οδικό χάρτη της υποδομής και το κεντρικό εργαλείο πλοήγησης. Είναι οργανωμένο σε λογικές ενότητες που αντικατοπτρίζουν απευθείας τους βασικούς πόρους και τις λειτουργίες του LXD Daemon.
Συνεπώς, η κατανόηση της δομής του καθίσταται απαραίτητη για την άμεση πλοήγηση και τη βέλτιστη διαχείριση του περιβάλλοντος MyThesis.

| Ενότητα | Βασική Λειτουργία | Τεκμηρίωση Λειτουργικότητας |
|---|---|---|
| Projects | Οργάνωση Πόρων | Επιτρέπει τη λογική ομαδοποίηση των κοντέινερ, δικτύων και αποθηκευτικών μονάδων. Ιδανικό για διαχείριση πολλαπλών περιβαλλόντων (π.χ., "Development" vs. "Production"). |
| Instances | Διαχείριση Containers | Κεντρική λίστα για την παρακολούθηση της κατάστασης Ενεργό/Σταματημένο(Active/Stopped) και τη διαχείριση Εκκίνηση/Διακοπή/Διαγραφή(Start/Stop/Delete) όλων των containers. Περιλαμβάνει τη δημιουργία νέων instances. |
| Profiles | Επαναχρησιμοποιήσιμες Ρυθμίσεις | Επιτρέπει τη δημιουργία προτύπων ρυθμίσεων (π.χ., 2GB RAM, 2 CPUs). Αυτά εφαρμόζονται γρήγορα σε νέα containers, διασφαλίζοντας τη συνέπεια στη διαμόρφωση. |
| Networks | Διαχείριση Εσωτερικού Δικτύου | Παρακολούθηση και ρύθμιση των εικονικών δικτύων (π.χ., lxdbr0) που συνδέουν τα containers. Εδώ ρυθμίζονται τα υποδίκτυα(subnets) και οι γέφυρες(bridges). |
| Storage | Διαχείριση ZFS Pools | Εμφανίζει τις αποθηκευτικές μονάδες (pools), όπως το ZFS pool που δημιουργήσατε. Εδώ γίνεται η παρακολούθηση του διαθέσιμου χώρου και η δημιουργία νέων μονάδων. |
| Images | Βιβλιοθήκη Λειτουργικών Συστημάτων | Λίστα με τις διαθέσιμες εικόνες OS (π.χ., Ubuntu 24.04). Από εδώ επιλέγεται η βάση για τη δημιουργία ενός νέου container. |
| Configuration | Ρυθμίσεις Daemon/Project | Επιτρέπει την επεξεργασία των ρυθμίσεων που αφορούν είτε το κεντρικό LXD daemon είτε το επιλεγμένο Project (π.χ. πολιτικές ασφαλείας, default ρυθμίσεις). |
| Cluster | Ελέγχος Κόμβων | Εμφανίζεται μόνο αν το LXD τρέχει σε περιβάλλον Cluster. Χρησιμεύει για τη διαχείριση των διαφόρων servers (κόμβων) του cluster. |
| Operations | Παρακολούθηση Εργασιών | Εμφανίζει τις τρέχουσες λειτουργίες που εκτελεί το LXD daemon (π.χ., download image, δημιουργία snapshot). |
| Warnings | Συστάσεις / Σφάλματα | Εμφανίζει τυχόν σφάλματα ή κρίσιμες προειδοποιήσεις που απαιτούν την προσοχή του διαχειριστή. |
| Settings | Γενική Διαμόρφωση | Ρυθμίσεις για τον έλεγχο ταυτότητας (authentication) και τη διαχείριση χρηστών του LXD. |
Εφόσον επιλεγεί ένα συγκεκριμένο Container από την κεντρική λίστα Instances, οι διαχειριστές αποκτούν πρόσβαση σε ένα σύνολο διαδραστικών καρτελών (tabs), οι οποίες προσφέρουν πλήρη έλεγχο και εποπτεία της εκτελούμενης εικονικής περίπτωσης (Instance - Εικόνα 8). Οι κρίσιμες υποενότητες περιλαμβάνουν την καρτέλα Overview, η οποία παρέχει βασικά στοιχεία της ταυτότητας και την τρέχουσα κατάσταση, το Configuration για την τροποποίηση των πόρων (CPU, RAM, Network), τα Snapshots για τη δημιουργία και επαναφορά αντιγράφων ασφαλείας και τα εργαλεία άμεσης πρόσβασης Terminal και Console. Τέλος, η ενότητα Logs επιτρέπει την άμεση παρακολούθηση των αρχείων καταγραφής του Container για σκοπούς εντοπισμού σφαλμάτων και ελέγχου.

Για την αποτελεσματική οργάνωση και τυποποίηση των διαμορφώσεων σε όλη την υποδομή, ο LXD Daemon αξιοποιεί τα Προφίλ (Profiles). Η ενότητα αυτή αποτελεί ένα από τα πιο δυναμικά και σημαντικά εργαλεία για τη διαχείριση υποδομών στο LXD. Ουσιαστικά, ένα Προφίλ είναι ένα πρότυπο ρυθμίσεων (configuration template) που καθορίζει τη συμπεριφορά και τους πόρους μιας εικονικής περίπτωσης (Instance). Αυτό περιλαμβάνει την ανάθεση CPU και RAM, τη σύνδεση δικτυακών συσκευών (Network Devices) και την προσάρτηση αποθηκευτικών χώρων (Storage Pools). Η αξία των Profiles έγκειται στην ικανότητά τους να επιτρέπουν την τυποποίηση (Standardization) των Containers και των VMs, επιτρέποντας στους διαχειριστές να εφαρμόζουν ταυτόχρονα και με συνέπεια ένα σύνολο ρυθμίσεων σε πολλαπλές Instances. Με αυτόν τον τρόπο, ελαχιστοποιούνται τα σφάλματα της χειροκίνητης διαμόρφωσης και επιταχύνεται η ανάπτυξη νέων συστημάτων.
4.6.4 Βασικές Εντολές Τερματικού για Lxc Containers
Παρά την ευκολία χρήσης του LXDUI, είναι απαραίτητο οι διαχειριστές συστημάτων (Sysadmins) να είναι εξοικειωμένοι με τις βασικές εντολές στο τερματικό. Αυτές οι εντολές είναι ταχύτερες για άμεσους ελέγχους, αυτοματοποίηση εργασιών (σενάρια), και για τη λειτουργία σε περιβάλλοντα όπου η πρόσβαση στο γραφικό περιβάλλον δεν είναι συνήθως εφικτή. Οι ακόλουθες εντολές αποτελούν τον πυρήνα της διαχείρισης των containers.
| Ενέργεια | Εντολή LXC | Σκοπός Εντολής |
|---|---|---|
| Προβολή Λίστας | lxc list | Εμφανίζει όλα τα containers και την κατάστασή τους (IP, κατάσταση, χρήση). |
| Δημιουργία Νέου Container | lxc launch ubuntu:24.04 <όνομα-container> | Δημιουργεί και εκκινεί ένα νέο container, από μια εικόνα (image) επιλογής (π.χ ubuntu 24.04). |
| Εκκίνηση Container | lxc start <όνομα-container> | Εκκινεί ένα σταματημένο container. |
| Είσοδος στο τερματικό του Container | lxc exec <όνομα-container> -- bash | Επιτρέπει στον χρήστη να εισέλθει στο διαδραστικό τερματικό (shell) του container με δικαιώματα διαχειριστή (root). |
| Διακοπή Container | lxc stop <όνομα-container> | Κάνει "shut down" στο container. |
| Διαγραφή Container | lxc delete <όνομα-container> | Διαγράφει οριστικά μόνο ένα μη ενεργό container. |
| Πληροφορίες Container | lxc info <όνομα-container> | Εμφανίζει λεπτομέρειες για το συγκεκριμένο container. |
Tips
Ανατρέξτε στo άρθρο Lxd-Lxc commands της ενότητας του Linux, για τις βασικές εντολές δημιουργίας, χρήσης, ελέγχου, διαχείρισης και δημιουργίας αντιγράφων ασφαλείας.
4.6.5 Συμπληρωματική Ρύθμιση Δικτύου (Firewall)
Για να διασφαλιστεί ότι τα containers έχουν πλήρη πρόσβαση στο δίκτυο μέσω της γέφυρας lxdbr0, πέρα από τους κανόνες του UFW για τις εξωτερικές θύρες (όπως το 8443), είναι καλή πρακτική να επιτρέψετε τη ροή κίνησης μέσα στη γέφυρα.
sudo ufw allow in on lxdbr0 comment 'Επιτρέπει την εισερχόμενη κίνηση στη γέφυρα lxdbr0'
sudo ufw route allow in on lxdbr0 comment 'Επιτρέπει τη δρομολόγηση κίνησης (routing) μέσα στη γέφυρα lxdbr0'
sudo ufw route allow out on lxdbr0 comment 'Επιτρέπει τη δρομολόγηση κίνησης (routing) προς τα έξω από τη γέφυρα lxdbr0'
4.6.6 Αρχεία Ρυθμίσεων
Για την πλήρη κατανόηση της αρχιτεκτονικής του MyThesis, παρατίθενται οι κύριες ρυθμίσεις διαμόρφωσης του LXD περιβάλλοντος, συμπεριλαμβανομένου του προφίλ MyThesis_Containers, της γέφυρας δικτύου lxdbr1 και των εξατομικευμένων ρυθμίσεων των εικονικών servers (CT-101, CT-102, CT-103). Προς διευκόλυνση της ροής του κειμένου, τα πλήρη αρχεία ρυθμίσεων σε μορφή YAML/JSON είναι προσβάσιμα μέσω πτυσσόμενων ενοτήτων (ακορντεόν) παρακάτω. Για την εκτύπωση και την επίσημη τεκμηρίωση του έργου, όλα τα αρχεία κώδικα περιλαμβάνονται αναλυτικά στο Παράρτημα Ρυθμίσεων.
Βασικά αρχεία ρυθμίσεων του project
4.6.6.1 Networks (lxdbr1)
Οι ρυθμίσεις του προσαρμοσμένου δικτύου-γέφυρας lxdbr1 καθορίζουν το εσωτερικό υποδίκτυο των containers. Η κρίσιμη ρύθμιση είναι η ipv4.address: 10.11.100.1/24, η οποία ορίζει το εύρος IP του εικονικού σας δικτύου και ενεργοποιεί το NAT για πρόσβαση στο Ίντερνετ.
4.6.6.2 Profiles
Το προφίλ MyThesis_Containers εφαρμόζεται σε όλους τους servers του έργου. Η πιο σημαντική οδηγία είναι η boot.autostart: 'true', η οποία διασφαλίζει την αυτόματη εκκίνηση των containers μετά την επανεκκίνηση του φυσικού συστήματος (Host).
4.6.6.3 CT-101
Οι ρυθμίσεις για τον CT-101 (DEVSRV-UBI2404), τον server ανάπτυξης, περιλαμβάνουν την κρίσιμη ρύθμιση ipv4.address: 10.11.100.101 για στατική IP. Επιπλέον, ορίζονται οι κανόνες proxy για την ανακατεύθυνση της κίνησης του VuePress (8080) στη θύρα 1010 του Host.
4.6.6.3.1 Vue
Το αρχείο package.json του VuePress τεκμηριώνει το περιβάλλον ανάπτυξης του συστήματος τεκμηρίωσης. Η πιο χτυπητή ρύθμιση βρίσκεται στο πεδίο devDependencies, όπου ορίζονται όλες οι εξειδικευμένες VuePress Plugins (όπως plugin-copyright, plugin-watermark, theme-hope κ.λπ.) που χρησιμοποιούνται στο MyThesis.
4.6.6.4 CT-102
Οι ρυθμίσεις για τον CT-102 (FILESRV-UBI2404) εστιάζουν στην παροχή υπηρεσιών αρχείων. Η κρίσιμη ρύθμιση proxy-samba ανακατευθύνει τη θύρα 445 (Samba/SMB) για να επιτρέπει την κοινή χρήση αρχείων μεταξύ του Host και του container.
4.6.6.5 CT-103
Ο CT-103 (WEBSRV-UBI2404) φιλοξενεί τον κύριο web server. Η πιο σημαντική ρύθμιση proxy-apache-website ανακατευθύνει την HTTP θύρα 80 του container στην αντίστοιχη θύρα 80 του Host, καθιστώντας τον ιστότοπο προσβάσιμο από το εξωτερικό δίκτυο.
4.6.7 Εν Κατακλείδι
Η υιοθέτηση του LXD ως λύσης εικονικοποίησης επιπέδου συστήματος—System-Container Virtualization—αποτελεί τον ακρογωνιαίο λίθο της ευελιξίας και της φορητότητας του MyThesis. Η χρήση του LXD εξασφαλίζει τη δημιουργία απομονωμένων και ταχέων περιβαλλόντων εργασίας, των Containers, ενώ η εφαρμογή της Αμφίδρομης Πιστοποίησης TLS - mTLS - θωρακίζει την απομακρυσμένη πρόσβαση και επικοινωνία. Επιπλέον, το LXDUI καθιερώνεται ως ο κεντρικός πίνακας ελέγχου, παρέχοντας στον διαχειριστή - Sysadmin - μία άμεση γραφική διεπαφή για όλες τις κρίσιμες λειτουργίες. Συνοψίζοντας, ο συνδυασμός LXD και LXDUI, υποστηριζόμενος από τα εργαλεία τυποποίησης - Profiles, προσφέρει μια σταθερή, ασφαλή και εύκολα διαχειρίσιμη πλατφόρμα για την ανάπτυξη και λειτουργία των εξειδικευμένων εφαρμογών της πτυχιακής εργασίας.