Λυπάμαι, OpenShift, δεν σε εκτιμήσαμε αρκετά και σε θεωρήσαμε δεδομένο

Αυτή η ανάρτηση γράφτηκε επειδή το προσωπικό μας είχε αρκετές συζητήσεις με πελάτες σχετικά με την ανάπτυξη εφαρμογών στο Kubernetes και τις ιδιαιτερότητες μιας τέτοιας ανάπτυξης στο OpenShift.

Λυπάμαι, OpenShift, δεν σε εκτιμήσαμε αρκετά και σε θεωρήσαμε δεδομένο

Συνήθως ξεκινάμε με τη θέση ότι το Kubernetes είναι απλώς Kubernetes και το OpenShift είναι ήδη μια πλατφόρμα Kubernetes, όπως το Microsoft AKS ή το Amazon EKS. Κάθε μία από αυτές τις πλατφόρμες έχει τα δικά της πλεονεκτήματα, εστιασμένα σε ένα συγκεκριμένο κοινό-στόχο. Και μετά από αυτό, η συζήτηση ρέει ήδη σε σύγκριση των δυνατών και των αδυναμιών συγκεκριμένων πλατφορμών.

Γενικά, σκεφτήκαμε να γράψουμε αυτήν την ανάρτηση με μια έξοδο όπως "Ακούστε, δεν έχει σημασία πού εκτελείτε τον κώδικα, στο OpenShift ή στο AKS, στο EKS, σε ορισμένα προσαρμοσμένα Kubernetes, ναι σε οποιοδήποτε Kubernetes (ας το πούμε KUK για συντομία) «Είναι πολύ απλό, τόσο εκεί όσο και εκεί».

Στη συνέχεια σχεδιάσαμε να πάρουμε το απλούστερο "Hello World" και να το χρησιμοποιήσουμε για να δείξουμε τι είναι κοινό και ποιες είναι οι διαφορές μεταξύ του CMC και της Red Hat OpenShift Container Platform (εφεξής OCP ή απλά OpenShift).

Ωστόσο, κατά τη σύνταξη αυτής της ανάρτησης, συνειδητοποιήσαμε ότι έχουμε συνηθίσει τόσο πολύ να χρησιμοποιούμε το OpenShift που απλά δεν συνειδητοποιούμε πώς έχει αναπτυχθεί και μετατραπεί σε μια καταπληκτική πλατφόρμα που έχει γίνει πολύ περισσότερα από μια απλή διανομή Kubernetes. Τείνουμε να θεωρούμε δεδομένη την ωριμότητα και την απλότητα του OpenShift, ενώ παραβλέπουμε τη μεγαλοπρέπειά του.

Γενικά, ήρθε η ώρα της ενεργητικής μετάνοιας και τώρα θα συγκρίνουμε βήμα προς βήμα την έναρξη λειτουργίας του "Hello World" μας στο KUK και στο OpenShift και θα το κάνουμε όσο το δυνατόν πιο αντικειμενικά (καλά, εκτός από μερικές φορές δείχνοντας μια προσωπική στάση απέναντι στο θέμα). Αν σας ενδιαφέρει μια καθαρά υποκειμενική άποψη για αυτό το θέμα, τότε μπορείτε να τη διαβάσετε εδώ (EN). Και σε αυτή την ανάρτηση θα μείνουμε στα γεγονότα και μόνο στα γεγονότα.

Συστάδες

Έτσι, το "Hello World" μας χρειάζεται συστάδες. Ας πούμε απλώς «όχι» σε τυχόν δημόσια σύννεφα, για να μην πληρώνουμε για διακομιστές, μητρώα, δίκτυα, μεταφορά δεδομένων κ.λπ. Αντίστοιχα, επιλέγουμε ένα απλό σύμπλεγμα ενός κόμβου Minikube (για KUK) και Δοχεία έτοιμα για κώδικα (για ένα σύμπλεγμα OpenShift). Και οι δύο αυτές επιλογές είναι πραγματικά εύκολες στην εγκατάσταση, αλλά απαιτούν πολλούς πόρους στον φορητό υπολογιστή σας.

Λυπάμαι, OpenShift, δεν σε εκτιμήσαμε αρκετά και σε θεωρήσαμε δεδομένο

Συνέλευση στο KUK-e

Λοιπόν πάμε.

Βήμα 1 - Δημιουργία εικόνας κοντέινερ

Ας ξεκινήσουμε με την ανάπτυξη του "Hello World" μας στο minikube. Αυτό θα απαιτήσει:

  1. 1. Εγκατεστημένο Docker.
  2. 2. Εγκατεστημένο Git.
  3. 3. Εγκατεστημένο το Maven (στην πραγματικότητα, αυτό το έργο χρησιμοποιεί δυαδικό mvnw, οπότε μπορείτε να το κάνετε χωρίς αυτό).
  4. 4. Στην πραγματικότητα, η ίδια η πηγή, δηλ. κλώνος αποθήκης github.com/gcolman/quarkus-hello-world.git

Το πρώτο βήμα είναι να δημιουργήσετε ένα έργο Quarkus. Μην φοβάστε αν δεν έχετε χρησιμοποιήσει ποτέ το Quarkus.io - είναι εύκολο. Απλώς επιλέγετε τα στοιχεία που θέλετε να χρησιμοποιήσετε στο έργο (RestEasy, Hibernate, Amazon SQS, Camel κ.λπ.), και στη συνέχεια ο ίδιος ο Quarkus, χωρίς καμία συμμετοχή σας, στήνει το αρχέτυπο maven και τα βάζει όλα στο github. Δηλαδή, κυριολεκτικά ένα κλικ του ποντικιού - και τελειώσατε. Αυτός είναι ο λόγος που αγαπάμε το Quarkus.

Λυπάμαι, OpenShift, δεν σε εκτιμήσαμε αρκετά και σε θεωρήσαμε δεδομένο

Ο ευκολότερος τρόπος για να δημιουργήσετε το "Hello World" μας σε μια εικόνα με κοντέινερ είναι να χρησιμοποιήσετε τις επεκτάσεις quarkus-maven για το Docker, το οποίο θα κάνει όλη την απαραίτητη εργασία. Με την εμφάνιση του Quarkus, αυτό έγινε πολύ εύκολο και απλό: προσθέστε την επέκταση container-image-docker και μπορείτε να δημιουργήσετε εικόνες με εντολές maven.

./mvnw quarkus:add-extension -Dextensions=”container-image-docker”

Και τέλος, χτίζουμε την εικόνα μας χρησιμοποιώντας το Maven. Ως αποτέλεσμα, ο πηγαίος κώδικας μας μετατρέπεται σε μια έτοιμη εικόνα κοντέινερ, η οποία μπορεί ήδη να εκτελεστεί στο χρόνο εκτέλεσης κοντέινερ.

Λυπάμαι, OpenShift, δεν σε εκτιμήσαμε αρκετά και σε θεωρήσαμε δεδομένο

./mvnw -X clean package -Dquarkus.container-image.build=true

Αυτό, στην πραγματικότητα, είναι όλο, τώρα μπορείτε να εκτελέσετε το κοντέινερ με την εντολή docker run, έχοντας αντιστοιχίσει την υπηρεσία μας στη θύρα 8080 ώστε να είναι δυνατή η πρόσβαση σε αυτό.

docker run -i — rm -p 8080:8080 gcolman/quarkus-hello-world

Λυπάμαι, OpenShift, δεν σε εκτιμήσαμε αρκετά και σε θεωρήσαμε δεδομένο

Αφού ξεκινήσει η παρουσία του κοντέινερ, το μόνο που μένει είναι να ελέγξουμε με την εντολή curl ότι εκτελείται η υπηρεσία μας:

Λυπάμαι, OpenShift, δεν σε εκτιμήσαμε αρκετά και σε θεωρήσαμε δεδομένο

Έτσι, όλα λειτουργούν, και ήταν πραγματικά εύκολο και απλό.

Βήμα 2 - Υποβάλετε το κοντέινερ μας στο χώρο αποθήκευσης εικόνων του κοντέινερ

Προς το παρόν, η εικόνα που δημιουργήσαμε αποθηκεύεται τοπικά στον τοπικό μας χώρο αποθήκευσης κοντέινερ. Εάν θέλουμε να χρησιμοποιήσουμε αυτήν την εικόνα στο περιβάλλον KUK μας, τότε πρέπει να τη βάλουμε σε κάποιο άλλο αποθετήριο. Το Kubernetes δεν έχει αυτές τις δυνατότητες, επομένως θα χρησιμοποιήσουμε το dockerhub. Γιατί, πρώτον, είναι δωρεάν και δεύτερον, (σχεδόν) όλοι το κάνουν.

Αυτό είναι επίσης πολύ απλό και εδώ χρειάζεται μόνο ένας λογαριασμός dockerhub.

Έτσι, εγκαθιστούμε το dockerhub και στέλνουμε την εικόνα μας εκεί.

Λυπάμαι, OpenShift, δεν σε εκτιμήσαμε αρκετά και σε θεωρήσαμε δεδομένο

Βήμα 3 - Ξεκινήστε το Kubernetes

Υπάρχουν πολλοί τρόποι για να δημιουργήσουμε μια διαμόρφωση kubernetes για να τρέξουμε το "Hello World", αλλά θα χρησιμοποιήσουμε τον απλούστερο από αυτούς, επειδή είμαστε τέτοιοι άνθρωποι ...

Αρχικά, ξεκινάμε το σύμπλεγμα minikube:

minikube start

Βήμα 4 - Ανάπτυξη της εικόνας του κοντέινερ μας

Τώρα πρέπει να μετατρέψουμε τον κώδικα και την εικόνα του κοντέινερ σε διαμόρφωση kubernetes. Με άλλα λόγια, χρειαζόμαστε ένα pod και έναν ορισμό ανάπτυξης που να δείχνει την εικόνα του κοντέινερ στο dockerhub. Ένας από τους ευκολότερους τρόπους για να το κάνετε αυτό είναι να εκτελέσετε την εντολή δημιουργίας ανάπτυξης που δείχνει την εικόνα μας:

Λυπάμαι, OpenShift, δεν σε εκτιμήσαμε αρκετά και σε θεωρήσαμε δεδομένο

kubectl create deployment hello-quarkus — image =gcolman/quarkus-hello-world:1.0.0-SNAPSHOT

Με αυτήν την εντολή, είπαμε στο COOK μας να δημιουργήσει μια διαμόρφωση ανάπτυξης, η οποία θα πρέπει να περιέχει την προδιαγραφή pod για την εικόνα του κοντέινερ μας. Αυτή η εντολή θα εφαρμόσει επίσης αυτήν τη διαμόρφωση στο σύμπλεγμα minikube και θα δημιουργήσει μια ανάπτυξη που θα κατεβάσει την εικόνα του κοντέινερ και θα εκτελέσει μια ομάδα στο σύμπλεγμα.

Βήμα 5 - ανοίξτε την πρόσβαση στην υπηρεσία μας

Τώρα που έχουμε μια αναπτυγμένη εικόνα κοντέινερ, ήρθε η ώρα να σκεφτούμε πώς να διαμορφώσουμε την εξωτερική πρόσβαση σε αυτήν την υπηρεσία Restful, η οποία, στην πραγματικότητα, είναι προγραμματισμένη στον κώδικά μας.

Υπάρχουν πολλοί τρόποι εδώ. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε την εντολή expose για να δημιουργήσετε αυτόματα κατάλληλα στοιχεία Kubernetes, όπως υπηρεσίες και τελικά σημεία. Στην πραγματικότητα, αυτό θα κάνουμε εκτελώντας την εντολή expose για το αντικείμενο ανάπτυξης:

kubectl expose deployment hello-quarkus — type=NodePort — port=8080

Ας σταθούμε για λίγο στην επιλογή «-type» της εντολής expose.

Όταν εκθέτουμε και δημιουργούμε τα στοιχεία που απαιτούνται για την εκτέλεση της υπηρεσίας μας, χρειαζόμαστε, μεταξύ άλλων, να μπορούμε να συνδεόμαστε από έξω με την υπηρεσία hello-quarkus που βρίσκεται μέσα στο δίκτυό μας που ορίζεται από το λογισμικό. Και παράμετρος τύπος μας επιτρέπει να δημιουργούμε και να συνδέουμε πράγματα όπως συσκευές εξισορρόπησης φορτίου για τη δρομολόγηση της κυκλοφορίας σε αυτό το δίκτυο.

Για παράδειγμα, το γράψιμο type=LoadBalancer, αρχικοποιούμε αυτόματα το δημόσιο εξισορροπητή φόρτου cloud για να συνδεθεί στο σύμπλεγμα Kubernetes. Αυτό, φυσικά, είναι υπέροχο, αλλά πρέπει να καταλάβετε ότι μια τέτοια διαμόρφωση θα είναι στενά συνδεδεμένη με ένα συγκεκριμένο δημόσιο σύννεφο και θα είναι πιο δύσκολο να το μεταφέρετε μεταξύ των περιπτώσεων Kubernetes σε διαφορετικά περιβάλλοντα.

Στο παράδειγμά μας type=NodePort, δηλαδή, η κλήση στην υπηρεσία μας γίνεται από τη διεύθυνση IP του κόμβου και τον αριθμό θύρας. Αυτή η επιλογή σάς επιτρέπει να μην χρησιμοποιείτε δημόσια σύννεφα, αλλά απαιτεί ορισμένα πρόσθετα βήματα. Αρχικά, χρειάζεστε τον δικό σας εξισορροπητή φορτίου, επομένως θα αναπτύξουμε τον εξισορροπητή φορτίου NGINX στο σύμπλεγμα μας.

Βήμα 6 - Ρυθμίστε έναν εξισορροπητή φορτίου

Το minikube έχει μια σειρά από χαρακτηριστικά πλατφόρμας που διευκολύνουν τη δημιουργία των στοιχείων που χρειάζεστε για εξωτερική πρόσβαση, όπως ελεγκτές εισόδου. Το Minikube συνοδεύεται από τον ελεγκτή εισόδου Nginx και το μόνο που έχουμε να κάνουμε είναι να τον ενεργοποιήσουμε και να τον διαμορφώσουμε.

minikube addons enable ingress

Τώρα, με μία μόνο εντολή, θα δημιουργήσουμε έναν ελεγκτή εισόδου Nginx που θα λειτουργεί μέσα στο σύμπλεγμα minikube:

ingress-nginx-controller-69ccf5d9d8-j5gs9 1/1 Running 1 33m

Βήμα 7 - Ρυθμίστε την είσοδο

Τώρα πρέπει να διαμορφώσουμε τον ελεγκτή εισόδου Nginx ώστε να δέχεται αιτήματα hello-quarkus.

Λυπάμαι, OpenShift, δεν σε εκτιμήσαμε αρκετά και σε θεωρήσαμε δεδομένο

Λυπάμαι, OpenShift, δεν σε εκτιμήσαμε αρκετά και σε θεωρήσαμε δεδομένο

Και τέλος, πρέπει να εφαρμόσουμε αυτή τη διαμόρφωση.

Λυπάμαι, OpenShift, δεν σε εκτιμήσαμε αρκετά και σε θεωρήσαμε δεδομένο

kubectl apply -f ingress.yml

Λυπάμαι, OpenShift, δεν σε εκτιμήσαμε αρκετά και σε θεωρήσαμε δεδομένο

Εφόσον τα κάνουμε όλα αυτά στον δικό μας υπολογιστή, απλώς προσθέτουμε τη διεύθυνση IP του κόμβου μας στο αρχείο /etc/hosts για να κατευθύνουμε αιτήματα http στο minikube μας στον εξισορροπητή φορτίου NGINX.

192.168.99.100 hello-quarkus.info

Αυτό ήταν, τώρα η υπηρεσία minikube μας είναι διαθέσιμη από το εξωτερικό μέσω του ελεγκτή εισόδου Nginx.

Λυπάμαι, OpenShift, δεν σε εκτιμήσαμε αρκετά και σε θεωρήσαμε δεδομένο

Λοιπόν, ήταν εύκολο, σωστά; Ή όχι τόσο πολύ;

Λυπάμαι, OpenShift, δεν σε εκτιμήσαμε αρκετά και σε θεωρήσαμε δεδομένο

Εκτέλεση σε OpenShift (κοντέινερ με ετοιμότητα κώδικα)

Και τώρα ας δούμε πώς γίνονται όλα στην Red Hat OpenShift Container Platform (OCP).

Όπως και στην περίπτωση του minikube, επιλέγουμε ένα σχήμα με ένα σύμπλεγμα OpenShift ενός κόμβου με τη μορφή Code Ready Containers (CRC). Παλαιότερα ονομαζόταν minishift και βασιζόταν στο έργο OpenShift Origin, αλλά τώρα είναι CRC και βασίζεται στην πλατφόρμα OpenShift Container της Red Hat.

Εδώ, συγγνώμη, δεν μπορούμε παρά να πούμε: "Το OpenShift είναι υπέροχο!"

Αρχικά, σκεφτήκαμε να γράψουμε ότι η ανάπτυξη στο OpenShift δεν διαφέρει από την ανάπτυξη στο Kubernetes. Και μάλιστα έτσι είναι. Αλλά στη διαδικασία σύνταξης αυτής της ανάρτησης, θυμηθήκαμε πόσες περιττές κινήσεις πρέπει να κάνετε όταν δεν έχετε OpenShift, και επομένως, πάλι, είναι όμορφο. Μας αρέσει να είναι εύκολα τα πράγματα και πόσο εύκολο είναι να αναπτύξουμε και να εκτελέσουμε το παράδειγμά μας στο OpenShift σε σύγκριση με το minikube είναι αυτό που μας ενέπνευσε να γράψουμε αυτήν την ανάρτηση.

Ας προχωρήσουμε στη διαδικασία και ας δούμε τι πρέπει να κάνουμε.

Έτσι, στο παράδειγμα minikube, ξεκινήσαμε με το Docker… Περιμένετε, δεν χρειαζόμαστε πλέον εγκατεστημένο το Docker στο μηχάνημα.

Και δεν χρειαζόμαστε τοπικό git.
Και ο Maven δεν χρειάζεται.
Και δεν χρειάζεται να δημιουργήσετε μια εικόνα κοντέινερ με το χέρι.
Και δεν χρειάζεται να αναζητήσετε κανένα αποθετήριο εικόνων κοντέινερ.
Και δεν χρειάζεται να εγκαταστήσετε έναν ελεγκτή εισόδου.
Και δεν χρειάζεται να ρυθμίσετε την είσοδο.

Καταλαβαίνεις? Για την ανάπτυξη και εκτέλεση της εφαρμογής μας στο OpenShift, δεν χρειάζεται τίποτα από τα παραπάνω. Και η ίδια η διαδικασία είναι η εξής.

Βήμα 1 – Εκκίνηση του συμπλέγματος OpenShift

Χρησιμοποιούμε Code Ready Containers από την Red Hat, που είναι ουσιαστικά το ίδιο Minikube, αλλά μόνο με ένα πλήρες σύμπλεγμα Openshift ενός κόμβου.

crc start

Βήμα 2 - Δημιουργήστε και αναπτύξτε την εφαρμογή στο σύμπλεγμα OpenShift

Σε αυτό το βήμα είναι που η απλότητα και η ευκολία του OpenShift εκδηλώνονται σε όλο του το μεγαλείο. Όπως συμβαίνει με όλες τις διανομές Kubernetes, έχουμε πολλούς τρόπους για να τρέξουμε μια εφαρμογή σε ένα σύμπλεγμα. Και, όπως στην περίπτωση του KUK, επιλέγουμε συγκεκριμένα το πιο απλό.

Το OpenShift ανέκαθεν κατασκευαζόταν ως μια πλατφόρμα για τη δημιουργία και τη λειτουργία εφαρμογών με εμπορευματοκιβώτια. Η κατασκευή κοντέινερ ήταν πάντα αναπόσπαστο μέρος αυτής της πλατφόρμας, επομένως υπάρχει ένα σωρό πρόσθετους πόρους Kubernetes για τις αντίστοιχες εργασίες.

Θα χρησιμοποιήσουμε τη διαδικασία Source 2 Image (S2I) του OpenShift, η οποία έχει πολλούς διαφορετικούς τρόπους για να λάβουμε την πηγή μας (κώδικα ή δυαδικά αρχεία) και να τη μετατρέψουμε σε μια εικόνα με κοντέινερ που εκτελείται σε ένα σύμπλεγμα OpenShift.

Για αυτό χρειαζόμαστε δύο πράγματα:

  • Ο πηγαίος μας κώδικας στο αποθετήριο git
  • Δόμηση-εικόνα, βάσει της οποίας θα γίνει η συναρμολόγηση.

Υπάρχουν πολλές τέτοιες εικόνες, που διατηρούνται τόσο από την Red Hat όσο και από την κοινότητα, και θα χρησιμοποιήσουμε την εικόνα OpenJDK, καλά, αφού φτιάχνω μια εφαρμογή Java.

Μπορείτε να εκτελέσετε μια έκδοση S2I τόσο από την κονσόλα γραφικών OpenShift Developer όσο και από τη γραμμή εντολών. Θα χρησιμοποιήσουμε την εντολή new-app, λέγοντάς της από πού να πάρει την εικόνα του builder και τον πηγαίο κώδικα.

Λυπάμαι, OpenShift, δεν σε εκτιμήσαμε αρκετά και σε θεωρήσαμε δεδομένο

oc new-app registry.access.redhat.com/ubi8/openjdk-11:latest~https://github.com/gcolman/quarkus-hello-world.git

Αυτό είναι όλο, η εφαρμογή μας δημιουργήθηκε. Με αυτόν τον τρόπο, η διαδικασία S2I έκανε τα ακόλουθα πράγματα:

  • Δημιούργησε ένα build-pod υπηρεσίας για όλα τα είδη που σχετίζονται με τη δημιουργία της εφαρμογής.
  • Δημιούργησε μια διαμόρφωση OpenShift Build.
  • Έκανα λήψη της εικόνας του προγράμματος δημιουργίας στο εσωτερικό μητρώο του OpenShift Docker.
  • Κλωνοποιήθηκε το "Hello World" στο τοπικό αποθετήριο.
  • Είδα ότι υπήρχε ένα maven pom εκεί μέσα και έτσι συνέταξα την εφαρμογή με το Maven.
  • Δημιούργησε μια νέα εικόνα κοντέινερ που περιέχει τη μεταγλωττισμένη εφαρμογή Java και τοποθέτησε αυτήν την εικόνα στο εσωτερικό μητρώο κοντέινερ.
  • Δημιούργησε ένα Kubernetes Deployment με προδιαγραφές για pod, υπηρεσία κ.λπ.
  • Ξεκίνησε την ανάπτυξη εικόνας κοντέινερ.
  • Καταργήθηκε το build-pod υπηρεσίας.

Υπάρχουν πολλά σε αυτή τη λίστα, αλλά το κύριο πράγμα είναι ότι ολόκληρη η κατασκευή πραγματοποιείται αποκλειστικά μέσα στο OpenShift, το εσωτερικό μητρώο Docker βρίσκεται μέσα στο OpenShift και η διαδικασία δημιουργίας δημιουργεί όλα τα στοιχεία Kubernetes και τα εκτελεί στο σύμπλεγμα.

Εάν παρακολουθείτε οπτικά την εκκίνηση του S2I στην κονσόλα, μπορείτε να δείτε πώς εκκινείται το build pod κατά τη διάρκεια της κατασκευής.

Λυπάμαι, OpenShift, δεν σε εκτιμήσαμε αρκετά και σε θεωρήσαμε δεδομένο

Και τώρα ας ρίξουμε μια ματιά στα αρχεία καταγραφής του builder pod: πρώτα, εκεί μπορείτε να δείτε πώς το maven κάνει τη δουλειά του και κατεβάζει εξαρτήσεις για τη δημιουργία της εφαρμογής java μας.

Λυπάμαι, OpenShift, δεν σε εκτιμήσαμε αρκετά και σε θεωρήσαμε δεδομένο

Αφού ολοκληρωθεί η κατασκευή του maven, ξεκινά η δημιουργία της εικόνας κοντέινερ και, στη συνέχεια, αυτή η ενσωματωμένη εικόνα αποστέλλεται στο εσωτερικό αποθετήριο.

Λυπάμαι, OpenShift, δεν σε εκτιμήσαμε αρκετά και σε θεωρήσαμε δεδομένο

Όλα, η διαδικασία συναρμολόγησης έχει ολοκληρωθεί. Τώρα ας βεβαιωθούμε ότι τα pods και οι υπηρεσίες της εφαρμογής μας έχουν ξεκινήσει στο σύμπλεγμα.

oc get service

Λυπάμαι, OpenShift, δεν σε εκτιμήσαμε αρκετά και σε θεωρήσαμε δεδομένο

Αυτό είναι όλο. Και υπάρχει μόνο μία ομάδα. Το μόνο που έχουμε να κάνουμε είναι να εκθέσουμε αυτήν την υπηρεσία για εξωτερική πρόσβαση.

Βήμα 3 - κάντε την υπηρεσία εκτεθειμένη για πρόσβαση από έξω

Όπως και στην περίπτωση του KUK, στην πλατφόρμα OpenShift, το "Hello World" μας χρειάζεται επίσης ένα δρομολογητή για να κατευθύνει την εξωτερική κίνηση σε μια υπηρεσία εντός του συμπλέγματος. Στο OpenShift αυτό το κάνει πολύ εύκολο. Πρώτον, το στοιχείο δρομολόγησης HAProxy είναι εγκατεστημένο στο σύμπλεγμα από προεπιλογή (μπορεί να αλλάξει στο ίδιο NGINX). Δεύτερον, υπάρχουν ειδικοί και εξαιρετικά διαμορφώσιμοι πόροι που ονομάζονται Routes, οι οποίοι θυμίζουν αντικείμενα Ingress στα παλιά καλά Kubernetes (στην πραγματικότητα, οι Routes του OpenShift επηρέασαν σε μεγάλο βαθμό τη σχεδίαση των αντικειμένων Ingress, τα οποία μπορούν τώρα να χρησιμοποιηθούν στο OpenShift) , αλλά για το "Hello World», και σχεδόν σε όλες τις άλλες περιπτώσεις, μας αρκεί η τυπική Διαδρομή χωρίς πρόσθετη διαμόρφωση.

Για να δημιουργήσουμε ένα FQDN με δυνατότητα δρομολόγησης για το "Hello World" (ναι, το OpenShiift έχει το δικό του DNS για δρομολόγηση βάσει ονομάτων υπηρεσιών), απλώς εκθέτουμε την υπηρεσία μας:

Λυπάμαι, OpenShift, δεν σε εκτιμήσαμε αρκετά και σε θεωρήσαμε δεδομένο

oc expose service quarkus-hello-world

Αν κοιτάξετε τη νέα Διαδρομή, τότε μπορείτε να βρείτε το FQDN και άλλες πληροφορίες δρομολόγησης εκεί:

oc get route

Λυπάμαι, OpenShift, δεν σε εκτιμήσαμε αρκετά και σε θεωρήσαμε δεδομένο

Και τέλος, έχουμε πρόσβαση στην υπηρεσία μας από το πρόγραμμα περιήγησης:

Λυπάμαι, OpenShift, δεν σε εκτιμήσαμε αρκετά και σε θεωρήσαμε δεδομένο

Τώρα όμως ήταν πολύ εύκολο!

Αγαπάμε το Kubernetes και όλα όσα σας επιτρέπει να κάνετε αυτή η τεχνολογία, και επίσης αγαπάμε την απλότητα και την ελαφρότητα. Το Kubernetes σχεδιάστηκε για να κάνει τα διανεμημένα, κλιμακούμενα δοχεία απίστευτα εύκολο στη χρήση, αλλά η απλότητά του δεν είναι πλέον αρκετή για να φέρει εφαρμογές στην παραγωγή σήμερα. Και εδώ μπαίνει στο παιχνίδι το OpenShift, το οποίο συμβαδίζει με την εποχή και προσφέρει το Kubernetes, επικεντρωμένο κυρίως στον προγραμματιστή. Έχει επενδυθεί μεγάλη προσπάθεια για την προσαρμογή της πλατφόρμας OpenShift ειδικά για τον προγραμματιστή, συμπεριλαμβανομένης της δημιουργίας εργαλείων όπως S2I, ODI, Developer Portal, OpenShift Operator Framework, IDE integration, Developer Catalogs, Helm integration, monitoring και πολλά άλλα.

Ελπίζουμε ότι αυτό το άρθρο ήταν ενδιαφέρον και χρήσιμο για εσάς. Και μπορείτε να βρείτε πρόσθετους πόρους, υλικά και άλλα πράγματα χρήσιμα για ανάπτυξη στην πλατφόρμα OpenShift στην πύλη Προγραμματιστές Red Hat.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο