Εισαγωγή
Kubernetes έχει γίνει πρότυπο για την ανάπτυξη μεγάλων εφαρμογών. Βοηθά τους προγραμματιστές να αποκτήσουν σημαντικά πλεονεκτήματα και προσφέρει δυνατότητες που δεν είναι διαθέσιμες στην παραδοσιακή φιλοξενία διακομιστών. Το Kubernetes επιτρέπει την οριζόντια κλιμάκωση χωρίς την ταλαιπωρία της υποδομής. Επιπλέον, μειώνει το κόστος απόκτησης και συντήρησης της υποδομής καθώς η εφαρμογή μεγαλώνει.
Ωστόσο, η διαχείριση εφαρμογών στο Kubernetes μπορεί επίσης να είναι περίπλοκη και απαιτεί προηγμένες δεξιότητες. Η ανάπτυξη εφαρμογών με χρήση του Kubernetes και της διαδικασίας Συνεχούς Ενσωμάτωσης και Συνεχούς Διάθεσης (CI/CD) βοηθά στην υπέρβαση αυτής της περίπλοκης διαδικασίας παρέχοντας αφαίρεση. GitOps είναι ένα από τα εργαλεία που μπορούν να βοηθήσουν στην επίτευξη αφαίρεσης.
Σε αυτόν τον οδηγό, θα δείξουμε πώς να χρησιμοποιήσετε το Argo CD για τη συνεχή ενσωμάτωση και ανάπτυξη εφαρμογών στο Kubernetes. Κάθε φορά που προωθείται οποιαδήποτε αλλαγή στο αποθετήριο, αυτή αναπτύσσεται στο cluster-στόχο. Argo CD παρέχει επίσης ελέγχους εκδόσεων, ρυθμίσεις παραμέτρων και περιβάλλοντα εφαρμογών μέσω της ενσωμάτωσης σε ολόκληρο τον κύκλο ζωής ανάπτυξης λογισμικού. Εάν διαθέτετε διαχειριστές πακέτων για το Kubernetes όπως το Helm, ή εάν το αποθετήριό σας φιλοξενείται στο BitBucket ή στο GitLab, το Argo CD μπορεί να ενσωματωθεί απρόσκοπτα και με όλες αυτές τις πλατφόρμες.
Προαπαιτούμενα
Για να ολοκληρώσετε αυτόν τον οδηγό, πρέπει να έχετε:
-
Κλειδιά SSH στο μηχάνημά σας. Εάν δεν έχετε ένα ζεύγος κλειδιών SSH σε Linux/MacOS/BSD, μπορείτε να δημιουργήσετε ένα ακολουθώντας τον οδηγό μας Επισκόπηση SSH – Διακομιστές, Πελάτες και Κλειδιά SSH.
-
Θα χρειαστείτε επίσης ένα ενεργό Kubernetes cluster. Επιπλέον, θα πρέπει να έχετε το kubectl εγκατεστημένο στο μηχάνημά σας. Εάν δεν έχετε ένα Kubernetes cluster, μπορείτε να ακολουθήσετε τον οδηγό Πώς να δημιουργήσετε ένα Kubernetes Cluster χρησιμοποιώντας το Kubeadm στο Ubuntu 18.04.
-
Θα πρέπει να έχετε μια βασική κατανόηση των εννοιών του Kubernetes. Εάν θέλετε να εξοικειωθείτε περισσότερο με το Kubernetes, μπορείτε να ακολουθήσετε τον οδηγό Γνωρίζοντας τα βασικά του εργαλείου Kubernetes.
Βήμα 1 – Εγκατάσταση του Argo CD
Προτού μπορέσουμε να εγκαταστήσουμε το Argo CD, πρέπει να έχουμε ένα περιβάλλον Kubernetes που εκτελείται με kubectl. Μπορείτε να το δοκιμάσετε εκτελώντας την παρακάτω εντολή:
|
1 |
kubectl get nodes |

Θα πρέπει να δείτε τουλάχιστον έναν κόμβο Kubernetes να εκτελείται σε κατάσταση Ready status. Εάν δεν υπάρχει διαθέσιμος κόμβος, θα πρέπει να επανελέγξετε την εγκατάσταση του Kubernetes. Στη συνέχεια, θα δημιουργήσουμε ένα ξεχωριστό namespace για την εγκατάσταση του Kubernetes. Ας το ονομάσουμε argocd. Θα κρατήσουμε την υπηρεσία που σχετίζεται με το Argo CD σε αυτό το namespace:
|
1 |
kubectl create namespace argocd |
Μετά από αυτό, εγκαταστήστε τα σενάρια (scripts) του Argo CD στο παραπάνω νεοδημιουργηθέν namespace εκτελώντας την παρακάτω εντολή:
|
1 |
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml |

Για να ελέγξετε την κατάσταση των Kubernetes pods, εκτελέστε την παρακάτω εντολή:
|
1 |
watch kubectl get pods -n argocd |
Θα λάβετε ένα αποτέλεσμα όπως το παρακάτω:

Εδώ ολοκληρώσατε με επιτυχία την εγκατάσταση του Argo CD. Για να βγείτε από τη διεπαφή watch, μπορείτε να πατήσετε Ctrl + C. Για να αποκτήσετε πρόσβαση στις υπηρεσίες σε αυτό το Kubernetes cluster, θα πρέπει να προωθήσουμε τις θύρες (ports). Θα σας δείξουμε πώς να το κάνετε αυτό στο επόμενο βήμα.
Βήμα 2 – Προώθηση θυρών για πρόσβαση στο Argo CD
Το Kubernetes μπορεί να αναπτύξει την εφαρμογή σας σε οποιαδήποτε θύρα της επιλογής του. Επομένως, είναι απαραίτητο να προωθήσετε τις θύρες της εφαρμογής Kubernetes για να αποκτήσετε πρόσβαση σε αυτές από το τοπικό μηχάνημα. Το Argo CD εκθέτει μια υπηρεσία που ονομάζεται argocd-server η οποία χρησιμοποιεί τη θύρα 443. Η θύρα 443 είναι η προεπιλεγμένη θύρα για τις υπηρεσίες HTTPS και HTTP. Μπορείτε να προωθήσετε τις θύρες του Kubernetes σε μια θύρα της επιλογής σας. Στο παρακάτω παράδειγμά μας, έχουμε προωθήσει τη θύρα στο 8080. Για να προωθήσετε θύρες, εκτελέστε την παρακάτω εντολή στο τερματικό:
|
1 |
kubectl port-forward svc/argocd-server -n argocd 8080:443 |
Μόλις προωθήσετε τη θύρα, αυτή θα αποκλειστεί έτσι ώστε οι άλλες υπηρεσίες να μην μπορούν να έχουν πρόσβαση σε αυτήν. Για να έχετε αδιάλειπτη πρόσβαση, συνιστάται πάντα να εκτελείτε την προαναφερθείσα εντολή σε ένα νέο τερματικό. Μόλις τελειώσετε, μπορείτε να πατήσετε Ctrl+C για να τερματίσετε τη διαδικασία προώθησης θύρας.
Αφού προωθήσετε τη θύρα, μπορείτε να πλοηγηθείτε στο Argo CD μεταβαίνοντας στο localhost:8080. Θα σας ζητηθούν τα διαπιστευτήρια τα οποία μπορείτε να λάβετε από τη γραμμή εντολών στο επόμενο βήμα.
Step 3 – Διαχείριση του Argo CD από τη Γραμμή Εντολών
Πρέπει να εγκαταστήσουμε τη γραμμή εντολών του Argo CD για τη διαχείριση της εγκατάστασης του Argo CD. Ο συνιστώμενος τρόπος εγκατάστασης του Argo CD είναι η χρήση ενός διαχειριστή πακέτων όπως το Homebrew. Το Homebrew είναι ένα δημοφιλές εργαλείο διαχείρισης πακέτων για εγκατάσταση σε macOS και Linux. Μπορείτε να εγκαταστήσετε το Homebrew χρησιμοποιώντας την παρακάτω εντολή:
|
1 |
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" |
Θα πρέπει να έχετε brew εγκατεστημένο στο μηχάνημά σας. Ενδέχεται να εμφανιστεί ένα μήνυμα εισαγωγής κωδικού πρόσβασης για σύνδεση. Μπορείτε να το εκτελέσετε εκτελώντας την παρακάτω εντολή:
|
1 |
brew install argocd |
Θα λάβετε την εντολή argocd μετά την παραπάνω εγκατάσταση. Θα χρειαστεί να ανακτήσουμε τον κωδικό πρόσβασης διαχειριστή χρησιμοποιώντας την εντολή kubectl . Δημιουργήθηκε αυτόματα κατά την εγκατάσταση. Παρακάτω είναι η εντολή για την απόκτησή του:
|
1 |
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo |
Τώρα που έχετε εγκαταστήσει το Argo CD, μπορείτε να συνδεθείτε χρησιμοποιώντας την εντολή argocd login παρακάτω:
|
1 |
argocd login localhost:8080 |
Θα χρειαστεί να συνδεθείτε για την ανάπτυξη της εφαρμογής όταν χρησιμοποιείτε τη γραμμή εντολών:

Ενδέχεται να λάβετε μια προειδοποίηση ασφαλείας. Εάν ναι, πατήστε y για να προχωρήσετε. Πολλοί χρήστες μπορεί να επιθυμούν να αλλάξουν τον κωδικό πρόσβασης αφού συνδεθούν. Εάν ναι, εκτελέστε την εντολή argocd account update-password για να αλλάξετε τον κωδικό πρόσβασης. Έχουμε πλέον μια πλήρως λειτουργική διαμόρφωση του Argo CD.
Τέλος, θα αναπτύξουμε μια εφαρμογή στο cluster Kubernetes χρησιμοποιώντας το εγκατεστημένο Argo CD.
Step 4 – Χρήση Πολλαπλών Clusters
Πριν συνεχίσετε με τη ρύθμιση της εφαρμογής σας, είναι απαραίτητο να γνωρίζετε το μηχάνημα-στόχο όπου θέλετε να την αναπτύξετε. Για πολλά από τα σενάρια, το Argo CD και η αναπτυγμένη εφαρμογή μπορούν να εκτελούνται στο ίδιο cluster. Αυτή είναι η προεπιλεγμένη συμπεριφορά του Argo CD, αλλά αυτό δεν αποτελεί περιορισμό. Εάν θέλετε να αναπτύξετε την εφαρμογή σε άλλα μηχανήματα-στόχους, εκτελέστε πρώτα το kubectl config στο μηχάνημά σας:
|
1 |
kubectl config get-contexts -o name |
Ας υποθέσουμε ότι λαμβάνετε δύο clusters: test-deploy-cluster και test-target-cluster. Τώρα, εάν το test-deploy-cluster είναι εκεί όπου βρίσκεται το Argo CD σας και θέλετε να κάνετε ανάπτυξη στο test-target-cluster, τότε εκτελέστε την παρακάτω εντολή:
|
1 |
argocd cluster add target-k8s |
Η παραπάνω εντολή θα προσθέσει τις λεπτομέρειες του επιπλέον cluster στο Argo CD. Θα επιτρέψει επίσης την ανάπτυξη υπηρεσιών στο cluster-στόχο του Argo CD.
Step 5 – Ανάπτυξη μιας Παραδειγματικής Εφαρμογής
Ήρθε επιτέλους η ώρα να αναπτύξουμε εφαρμογές στο cluster Kubernetes. Θα χρησιμοποιήσουμε τις παραδειγματικές εφαρμογές που παρέχονται από το Argo CD. Θα χρησιμοποιήσουμε επίσης το helm-guestbook που έχει κατασκευαστεί χρησιμοποιώντας Helm charts.
Για να εγκαταστήσουμε την εφαρμογή, θα χρησιμοποιήσουμε την εντολή argo app create . Θα καθορίσουμε το αποθετήριο Git, helm-guestbook , και θα περάσουμε τον προεπιλεγμένο προορισμό και το namespace σας:
|
1 |
argocd app create helm-guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path helm-guestbook --dest-server https://kubernetes.default.svc --dest-namespace default |
Μπορείτε να ελέγξετε την κατάσταση της νεοσύστατης εφαρμογής εκτελώντας το argocd app get:
|
1 |
argocd app get helm-guestbook |
Μην εκπλαγείτε αν δείτε OutOfSync κατάσταση. Μέχρι τώρα έχουμε κατεβάσει το Helm chart και έχουμε δημιουργήσει ένα σημείο εισόδου σε αυτό για το Argo CD. Ωστόσο, όσον αφορά το Kubernetes, δεν έχει εκχωρηθεί κανένας πόρος σε αυτό. Για να συγχρονίσετε αυτήν την εφαρμογή, εκτελέστε την παρακάτω εντολή:
|
1 |
argocd app sync helm-guestbook |

Όταν εργάζεστε με το GitOps, είναι πάντα απαραίτητο να συγχρονίζετε την εφαρμογή με το upstream. Επομένως, όποτε προκύπτει αλλαγή στο αποθετήριο, το Argo CD αναπτύσσει την εφαρμογή.
Έχουμε αναπτύξει την εφαρμογή χρησιμοποιώντας τη γραμμή εντολών του Argo CD. Μπορείτε να επιτύχετε το ίδιο αποτέλεσμα χρησιμοποιώντας τη διεπαφή ιστού του Argo CD. Η διεπαφή ιστού είναι πολύ χρήσιμη εάν θέλετε να ελέγξετε την κατάσταση και τη λειτουργία της εφαρμογής. Για να ανοίξετε τη διεπαφή ιστού, ανοίξτε το localhost:8080:

Για να επαληθεύσουμε την εγκατάσταση, θα ανοίξουμε την εφαρμογή στο πρόγραμμα περιήγησης. Το δικό μας helm-guestbook εκτελείται στη θύρα 80. Εάν έχετε οποιαδήποτε άλλη εφαρμογή που χρησιμοποιεί τη θύρα 80, μπορείτε να προωθήσετε τη θύρα έτσι ώστε να μην διακοπούν άλλες εφαρμογές:
|
1 |
kubectl port-forward svc/helm-guestbook 9090:80 |
Τέλος, ανοίξτε τη διεύθυνση url localhost:9090 στο πρόγραμμα περιήγησής σας για να δείτε την εφαρμογή σας να εκτελείται:

Τώρα, εάν ένας προγραμματιστής προωθήσει οποιονδήποτε κώδικα στο απομακρυσμένο αποθετήριο GitHub, το ArgoCD θα τον εντοπίσει και θα τον αποτυπώσει. Οι αναπτύξεις σας στο ArgoCD θα ενημερωθούν ανάλογα, παρέχοντας συνεχή διαθεσιμότητα.
Συμπέρασμα
Σε αυτόν τον οδηγό, σας δείξαμε πώς να εγκαταστήσετε και να αναπτύξετε εφαρμογές στο Kubernetes χρησιμοποιώντας το Argo CD. Είναι σημαντικό να βεβαιωθείτε ότι οι αναπτύξεις σας στο Kubernetes είναι συντηρήσιμες. Το GitOps θα μπορούσε να σας βοηθήσει πολύ σε αυτό το κομμάτι.
Το Kubernetes είναι πλέον το πρότυπο για αναπτύξεις στο cloud. Η CloudSigma διαθέτει μερικούς εξαιρετικούς οδηγούς για το Kubernetes που μπορείτε να δείτε στη συνέχεια:
- Υπηρεσία DNS του Kubernetes: Ένας οδηγός για αρχάριους
- Εγκατάσταση του WordPress με MySQL στο Kubernetes με το Helm
- Εγκατάσταση του Jenkins στο Kubernetes
- Εξερευνώντας το CloudSigma PaaS: Πώς να αποκτήσετε πρόσβαση σε εφαρμογή Kubernetes μέσω δημόσιας IP
Καλό computing!
Σχόλια
Δεν υπάρχουν σχόλια ακόμα. Γράψτε το πρώτο.