Το Istio είναι ένα βολικό εργαλείο για τη σύνδεση, την ασφάλιση και την παρακολούθηση κατανεμημένων εφαρμογών. Το Istio χρησιμοποιεί μια ποικιλία τεχνολογιών για την εκτέλεση και τη διαχείριση λογισμικού σε κλίμακα, συμπεριλαμβανομένων κοντέινερ για τη συσκευασία κώδικα εφαρμογής και εξαρτήσεων για ανάπτυξη, και το Kubernetes για τη διαχείριση αυτών των κοντέινερ. Επομένως, για να δουλέψετε με το Istio πρέπει να γνωρίζετε πώς λειτουργεί μια εφαρμογή με πολλαπλές υπηρεσίες που βασίζονται σε αυτές τις τεχνολογίες χωρίς Ιστιο. Εάν αυτά τα εργαλεία και οι έννοιες είναι ήδη γνωστά σε εσάς, μη διστάσετε να παραλείψετε αυτό το σεμινάριο και να μεταβείτε κατευθείαν στην ενότητα Εγκατάσταση του Istio στο Google Kubernetes Engine (GKE) ή εγκατάσταση επέκτασης Ιστιο επί ΓΚΕ.
Αυτός είναι ένας οδηγός βήμα προς βήμα όπου θα ακολουθήσουμε ολόκληρη τη διαδικασία από τον πηγαίο κώδικα έως το κοντέινερ GKE για να σας δώσουμε μια βασική κατανόηση αυτών των τεχνολογιών μέσω ενός παραδείγματος. Θα δείτε επίσης πώς το Istio αξιοποιεί τη δύναμη αυτών των τεχνολογιών. Αυτό προϋποθέτει ότι δεν γνωρίζετε τίποτα για τα κοντέινερ, τα Kubernetes, τα πλέγματα εξυπηρέτησης ή το Istio.
εργασίες
Σε αυτό το σεμινάριο, θα ολοκληρώσετε τις ακόλουθες εργασίες:
Εκμάθηση μιας απλής εφαρμογής hello world με πολλαπλές υπηρεσίες.
Εκτελέστε την εφαρμογή από τον πηγαίο κώδικα.
Συσκευασία της εφαρμογής σε δοχεία.
Δημιουργία συμπλέγματος Kubernetes.
Ανάπτυξη κοντέινερ σε ένα σύμπλεγμα.
Πριν ξεκινήσετε
Ακολουθήστε τις οδηγίες για να ενεργοποιήσετε το Kubernetes Engine API:
Σε αυτό το σεμινάριο, μπορείτε να χρησιμοποιήσετε το Cloud Shell, το οποίο προετοιμάζει την εικονική μηχανή g1-small στο Google Compute Engine με Linux που βασίζεται σε Debian ή υπολογιστή Linux ή macOS.
Επιλογή Α: Χρήση του Cloud Shell
Οφέλη από τη χρήση του Cloud Shell:
Περιβάλλοντα ανάπτυξης Python 2 και Python 3 (συμπεριλαμβανομένων virtualenv) έχουν διαμορφωθεί πλήρως.
Εργαλεία γραμμής εντολών gcloud, λιμενεργάτης, πηγαίνω и kubectl, που θα χρησιμοποιήσουμε είναι ήδη εγκατεστημένα.
Σετ kubectl - εργαλείο γραμμής εντολών για εργασία με Kubernetes.
gcloud components install kubectl
Σετ Docker Community Edition (CE). Θα χρησιμοποιήσετε το εργαλείο γραμμής εντολών λιμενεργάτηςγια να δημιουργήσετε εικόνες κοντέινερ για το δείγμα εφαρμογής.
Εγκαταστήστε το εργαλείο Έλεγχος έκδοσης Gitγια να λάβετε το δείγμα εφαρμογής από το GitHub.
Το δείγμα εφαρμογής είναι γραμμένο σε Python και αποτελείται από δύο στοιχεία που αλληλεπιδρούν χρησιμοποιώντας ΠΕΡΙΦΕΡΕΙΑ:
διακομιστής: απλός διακομιστής με ένα τελικό σημείο ΠΑΡΕ, /, το οποίο εκτυπώνει στην κονσόλα "hello world".
φορτωτής: σενάριο που στέλνει κίνηση σε διακομιστής, με διαμορφώσιμο αριθμό αιτημάτων ανά δευτερόλεπτο.
Εκτέλεση μιας εφαρμογής από τον πηγαίο κώδικα
Για να εξερευνήσετε το δείγμα εφαρμογής, εκτελέστε το στο Cloud Shell ή στον υπολογιστή σας.
1) Στον κατάλογο istio-samples/sample-apps/helloserver τρέξιμο διακομιστής:
python3 server/server.py
Κατά την εκκίνηση διακομιστής εμφανίζεται το εξής:
INFO:root:Starting server...
2) Ανοίξτε ένα άλλο παράθυρο τερματικού για αποστολή αιτημάτων διακομιστής. Εάν χρησιμοποιείτε το Cloud Shell, κάντε κλικ στο εικονίδιο προσθήκης για να ανοίξετε μια άλλη περίοδο λειτουργίας.
3) Στείλτε ένα αίτημα στο διακομιστής:
curl http://localhost:8080
απαντήσεις διακομιστή:
Hello World!
4) Από τον κατάλογο όπου κατεβάσατε το δείγμα κώδικα, μεταβείτε στον κατάλογο που περιέχει φορτωτής:
cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/loadgen
5) Δημιουργήστε τις ακόλουθες μεταβλητές περιβάλλοντος:
Από την άποψη της δικτύωσης, ολόκληρη η εφαρμογή εκτελείται σε έναν μόνο κεντρικό υπολογιστή (τοπικός υπολογιστής ή εικονική μηχανή Cloud Shell). Επομένως μπορείτε να χρησιμοποιήσετε localhostγια αποστολή αιτημάτων σε διακομιστής.
10) Να σταματήσει φορτωτής и διακομιστής, εισαγω Ctrl-c σε κάθε παράθυρο τερματικού.
11) Στο παράθυρο τερματικού φορτωτής απενεργοποιήστε το εικονικό περιβάλλον:
deactivate
Συσκευασία εφαρμογής σε δοχεία
Για να εκτελέσετε την εφαρμογή στο GKE, πρέπει να συσκευάσετε το παράδειγμα εφαρμογής − διακομιστής и φορτωτής - στις Εμπορευματοκιβώτια. Ένα κοντέινερ είναι ένας τρόπος συσκευασίας μιας εφαρμογής για την απομόνωσή της από το περιβάλλον της.
Για να συσκευάσετε μια εφαρμογή σε ένα δοχείο, χρειάζεστε Dockerfile. Dockerfile είναι ένα αρχείο κειμένου που ορίζει εντολές για τη δημιουργία του πηγαίου κώδικα της εφαρμογής και των εξαρτήσεών του Εικόνα Docker. Μόλις κατασκευαστεί, ανεβάζετε την εικόνα σε ένα μητρώο κοντέινερ όπως το Docker Hub ή Μητρώο κοντέινερ.
Το παράδειγμα έχει ήδη Dockerfile για διακομιστής и φορτωτής με όλες τις απαραίτητες εντολές για τη συλλογή εικόνων. Παρακάτω - Dockerfile για διακομιστής:
FROM python:3-slim as base
FROM base as builder
RUN apt-get -qq update
&& apt-get install -y --no-install-recommends
g++
&& rm -rf /var/lib/apt/lists/*
# Enable unbuffered logging
FROM base as final
ENV PYTHONUNBUFFERED=1
RUN apt-get -qq update
&& apt-get install -y --no-install-recommends
wget
WORKDIR /helloserver
# Grab packages from builder
COPY --from=builder /usr/local/lib/python3.7/ /usr/local/lib/python3.7/
# Add the application
COPY . .
EXPOSE 8080
ENTRYPOINT [ "python", "server.py" ]
Ομάδα ΑΠΟ python:3-slim ως βάση λέει στον Docker να χρησιμοποιήσει το πιο πρόσφατο Εικόνα Python 3 ως βάση.
Ομάδα ΑΝΤΙΓΡΑΦΟ. . αντιγράφει τα αρχεία προέλευσης στον τρέχοντα κατάλογο εργασίας (μόνο στην περίπτωσή μας server.py) στο σύστημα αρχείων του κοντέινερ.
ΣΗΜΕΙΟ ΕΙΣΟΔΟΥ ορίζει την εντολή που χρησιμοποιείται για την εκκίνηση του κοντέινερ. Στην περίπτωσή μας, αυτή η εντολή είναι σχεδόν ίδια με αυτήν που εκτελούσατε server.py από τον πηγαίο κώδικα.
Ομάδα ΕΚΘΕΣΕΙ δείχνει ότι διακομιστής περιμένει για δεδομένα μέσω της θύρας 8080. Αυτή η ομάδα δεν είναι παρέχει λιμάνια. Αυτό είναι κάποιο είδος τεκμηρίωσης που απαιτείται για το άνοιγμα της θύρας 8080 κατά την εκκίνηση του δοχείου.
Προετοιμασία για τη συσκευασία της αίτησής σας
1) Ορίστε τις ακόλουθες μεταβλητές περιβάλλοντος. Αντικαθιστώ PROJECT_ID στο αναγνωριστικό του έργου σας GCP.
export PROJECT_ID="PROJECT_ID"
export GCR_REPO="preparing-istio"
Χρησιμοποιώντας αξίες PROJECT_ID и GCR_REPO προσθέτετε ετικέτα στην εικόνα του Docker όταν τη δημιουργείτε και την σπρώχνετε σε ένα ιδιωτικό μητρώο κοντέινερ.
2) Ορίστε το προεπιλεγμένο έργο GCP για το εργαλείο γραμμής εντολών gcloud.
gcloud config set project $PROJECT_ID
3) Ορίστε την προεπιλεγμένη ζώνη για το εργαλείο γραμμής εντολών gcloud.
gcloud config set compute/zone us-central1-b
4) Βεβαιωθείτε ότι η υπηρεσία Container Registry είναι ενεργοποιημένη στο έργο GCP.
Ελέγξτε τη λίστα εικόνων στο αποθετήριο και επαληθεύστε ότι οι εικόνες έχουν μεταφορτωθεί:
gcloud container images list --repository gcr.io/$PROJECT_ID/preparing-istio
Η εντολή εμφανίζει τα ονόματα των εικόνων που μεταφορτώθηκαν πρόσφατα:
NAME
gcr.io/PROJECT_ID/preparing-istio/helloserver
gcr.io/PROJECT_ID/preparing-istio/loadgen
Δημιουργία συμπλέγματος ΓΚΕ.
Αυτά τα κοντέινερ θα μπορούσαν να εκτελεστούν σε μια εικονική μηχανή Cloud Shell ή σε έναν υπολογιστή με την εντολή τρέξιμο λιμανιού. Αλλά σε ένα περιβάλλον παραγωγής, χρειάζεστε έναν τρόπο για να ενορχηστρώσετε κεντρικά τα κοντέινερ. Για παράδειγμα, χρειάζεστε ένα σύστημα που διασφαλίζει ότι τα κοντέινερ λειτουργούν πάντα και χρειάζεστε έναν τρόπο να αυξήσετε την κλίμακα και να περιστρέψετε πρόσθετες παρουσίες κοντέινερ εάν αυξάνεται η επισκεψιμότητα.
Για να εκτελέσετε εφαρμογές με κοντέινερ μπορείτε να χρησιμοποιήσετε ΓΚΕ. Το GKE είναι μια πλατφόρμα ενορχήστρωσης κοντέινερ που συγκεντρώνει εικονικές μηχανές σε ένα σύμπλεγμα. Κάθε εικονική μηχανή ονομάζεται κόμβος. Τα συμπλέγματα GKE βασίζονται στο σύστημα διαχείρισης συμπλεγμάτων Kubernetes ανοιχτού κώδικα. Το Kubernetes παρέχει μηχανισμούς αλληλεπίδρασης με το σύμπλεγμα.
Ομάδα gcloud δημιουργεί ένα istioready cluster στο έργο GCP και την προεπιλεγμένη ζώνη που ορίσατε. Για να εκτελέσετε το Istio, συνιστούμε να έχετε τουλάχιστον 4 κόμβους και μια εικονική μηχανή n1-πρότυπο-2.
Η ομάδα δημιουργεί το σύμπλεγμα σε λίγα λεπτά. Όταν το σύμπλεγμα είναι έτοιμο, η εντολή βγάζει κάτι σαν αυτό μήνυμα.
2) Καταχωρίστε διαπιστευτήρια στο εργαλείο γραμμής εντολών kubectlγια να το χρησιμοποιήσετε για τη διαχείριση του συμπλέγματος:
3) Τώρα μπορείτε να επικοινωνήσετε με την Kubernetes μέσω kubectl. Για παράδειγμα, η ακόλουθη εντολή μπορεί να βρει την κατάσταση των κόμβων:
kubectl get nodes
Η εντολή παράγει μια λίστα με κόμβους:
NAME STATUS ROLES AGE VERSION
gke-istoready-default-pool-dbeb23dc-1vg0 Ready <none> 99s v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-36z5 Ready <none> 100s v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-fj7s Ready <none> 99s v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-wbjw Ready <none> 99s v1.13.6-gke.13
Βασικές Έννοιες Kubernetes
Το διάγραμμα δείχνει μια εφαρμογή στο ΓΚΕ:
Πριν αναπτύξετε κοντέινερ στο GKE, μάθετε τις βασικές έννοιες του Kubernetes. Υπάρχουν σύνδεσμοι στο τέλος εάν θέλετε να μάθετε περισσότερα.
Κόμβοι και συστάδες. Στο ΓΚΕ, ένας κόμβος είναι μια εικονική μηχανή. Σε άλλες πλατφόρμες Kubernetes, ένας κόμβος μπορεί να είναι ένας υπολογιστής ή μια εικονική μηχανή. Ένα σύμπλεγμα είναι μια συλλογή κόμβων που μπορεί να θεωρηθεί ως μια ενιαία μονάδα όπου αναπτύσσετε μια εφαρμογή με κοντέινερ.
Pods. Στο Kubernetes, τα δοχεία λειτουργούν σε λοβούς. Ένα Pod στο Kubernetes είναι μια αδιαίρετη μονάδα. Ένα Pod χωρά ένα ή περισσότερα δοχεία. Αναπτύσσετε κοντέινερ διακομιστή και φορτωτής σε ξεχωριστούς λοβούς. Όταν υπάρχουν πολλά κοντέινερ σε ένα pod (για παράδειγμα, ένας διακομιστής εφαρμογών και διακομιστή μεσολάβησης), τα κοντέινερ διαχειρίζονται ως ενιαία οντότητα και μοιράζονται πόρους pod.
Αναπτύξεις. Στο Kubernetes, μια ανάπτυξη είναι ένα αντικείμενο που είναι μια συλλογή από πανομοιότυπα pods. Το Deployment εκκινεί πολλαπλά αντίγραφα pods που διανέμονται σε κόμβους συμπλέγματος. Η ανάπτυξη αντικαθιστά αυτόματα τις ομάδες που απέτυχαν ή δεν ανταποκρίνονται.
Υπηρεσία Kubernetes. Κατά την εκτέλεση κώδικα εφαρμογής στο ΓΚΕ, η σύνδεση μεταξύ φορτωτής и διακομιστής. Όταν ξεκινήσατε τις υπηρεσίες σε μια εικονική μηχανή ή επιτραπέζιο υπολογιστή Cloud Shell, στείλατε αιτήματα σε διακομιστής στο localhost: 8080. Μόλις αναπτυχθούν στο GKE, τα pods εκτελούνται σε διαθέσιμους κόμβους. Από προεπιλογή, δεν έχετε κανέναν έλεγχο σε ποιον κόμβο εκτελείται το pod, επομένως εσείς λοβοί χωρίς μόνιμες διευθύνσεις IP.
Για να αποκτήσετε μια διεύθυνση IP για διακομιστής, πρέπει να ορίσετε μια αφαίρεση δικτύου πάνω από τα pod. Αυτό είναι Υπηρεσία Kubernetes. Η υπηρεσία Kubernetes παρέχει ένα μόνιμο τελικό σημείο για ένα σύνολο ομάδων ομάδων. Υπάρχουν λίγα είδη υπηρεσιών. διακομιστής χρήσεις LoadBalancer, το οποίο παρέχει μια εξωτερική διεύθυνση IP για επικοινωνία διακομιστής έξω από το σύμπλεγμα.
Το Kubernetes διαθέτει επίσης ένα ενσωματωμένο σύστημα DNS που εκχωρεί ονόματα DNS (για παράδειγμα, helloserver.default.cluster.local) Υπηρεσίες. Χάρη σε αυτό, τα pods εντός του συμπλέγματος επικοινωνούν με άλλα pods του συμπλέγματος σε μια σταθερή διεύθυνση. Το όνομα DNS δεν μπορεί να χρησιμοποιηθεί εκτός του συμπλέγματος, όπως στο Cloud Shell ή σε υπολογιστή.
Ο Kubernetes εκδηλώνεται
Όταν εκτελούσατε την εφαρμογή από την πηγή, χρησιμοποιούσατε την επιτακτική εντολή python3
server.py
Το Imperative υποδηλώνει ένα ρήμα: "κάνω αυτό".
Χρήσεις Kubernetes δηλωτικό μοντέλο. Αυτό σημαίνει ότι δεν λέμε στον Kubernetes τι ακριβώς να κάνει, αλλά μάλλον περιγράφουμε την επιθυμητή κατάσταση. Για παράδειγμα, το Kubernetes ξεκινά και σταματά τα pods όπως απαιτείται για να διατηρήσει την πραγματική κατάσταση του συστήματος συνεπή με την επιθυμητή κατάσταση.
Υποδεικνύετε την επιθυμητή κατάσταση σε μανιφέστα ή αρχεία ΓΙΑΜΛ. Ένα αρχείο YAML περιέχει προδιαγραφές για ένα ή περισσότερα αντικείμενα Kubernetes.
Το παράδειγμα περιέχει ένα αρχείο YAML για διακομιστής и φορτωτής. Κάθε αρχείο YAML καθορίζει την επιθυμητή κατάσταση του αντικειμένου ανάπτυξης και της υπηρεσίας Kubernetes.
Πρώτο πεδίο Spec περιέχει μια περιγραφή της επιθυμητής κατάστασης.
spec.αντίγραφα υποδεικνύει τον επιθυμητό αριθμό λοβών.
Τμήμα spec.πρότυπο ορίζει ένα πρότυπο pod. Υπάρχει ένα πεδίο στην προδιαγραφή pod εικόνα, το οποίο καθορίζει το όνομα της εικόνας που πρέπει να εξαχθεί από το Μητρώο κοντέινερ.
LoadBalancer: Οι πελάτες αποστέλλουν αιτήματα στη διεύθυνση IP του εξισορροπητή φορτίου, η οποία έχει μόνιμη διεύθυνση IP και είναι προσβάσιμη εκτός του συμπλέγματος.
targetPort: όπως θυμάστε, η ομάδα ΕΚΘΕΣΗ 8080 в Dockerfile δεν παρείχε λιμάνια. Παρέχετε το λιμάνι 8080ώστε να μπορείτε να έρθετε σε επαφή με το δοχείο διακομιστής έξω από το σύμπλεγμα. Στην περίπτωσή μας hellosvc.default.cluster.local:80 (μικρό όνομα: hellosvc) αντιστοιχεί στο λιμάνι 8080 Διευθύνσεις IP pod helloserver.
λιμάνι: Αυτός είναι ο αριθμός θύρας όπου άλλες υπηρεσίες στο σύμπλεγμα θα στείλουν αιτήματα.
loadgen.yaml
Αντικείμενο ανάπτυξης σε loadgen.yaml μοιάζει server.yaml. Η διαφορά είναι ότι το αντικείμενο ανάπτυξης περιέχει μια ενότητα env. Καθορίζει τις μεταβλητές περιβάλλοντος που χρειάζονται φορτωτής και που εγκαταστήσατε κατά την εκτέλεση της εφαρμογής από την πηγή.
Ώρα φορτωτής δεν δέχεται εισερχόμενα αιτήματα, για το πεδίο τύπος ενδείξεις ClusterIP. Αυτός ο τύπος παρέχει μια μόνιμη διεύθυνση IP που μπορούν να χρησιμοποιήσουν οι υπηρεσίες στο σύμπλεγμα, αλλά αυτή η διεύθυνση IP δεν εκτίθεται σε εξωτερικούς πελάτες.
Αντικαθιστώ PROJECT_ID στο αναγνωριστικό του έργου σας GCP.
9) Αποθήκευση και κλείσιμο loadgen.yaml, κλείστε το πρόγραμμα επεξεργασίας κειμένου.
10) Αναπτύξτε το αρχείο YAML στο Kubernetes:
kubectl apply -f loadgen.yaml
Με την επιτυχή ολοκλήρωση, η εντολή παράγει τον ακόλουθο κώδικα:
deployment.apps/loadgenerator created
service/loadgensvc created
11) Ελέγξτε την κατάσταση των λοβών:
kubectl get pods
Η εντολή δείχνει την κατάσταση:
NAME READY STATUS RESTARTS AGE
helloserver-69b9576d96-mwtcj 1/1 Running 0 58s
loadgenerator-774dbc46fb-gpbrz 1/1 Running 0 57s
12) Εξαγωγή αρχείων καταγραφής εφαρμογών από το pod φορτωτής. Αντικαθιστώ POD_ID στο αναγνωριστικό από την προηγούμενη απάντηση.
kubectl logs loadgenerator-POD_ID
13) Λάβετε εξωτερικές διευθύνσεις IP hellosvc:
kubectl get service
Η απάντηση της εντολής μοιάζει κάπως έτσι:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hellosvc LoadBalancer 10.81.15.158 192.0.2.1 80:31127/TCP 33m
kubernetes ClusterIP 10.81.0.1 <none> 443/TCP 93m
loadgensvc ClusterIP 10.81.15.155 <none> 80/TCP 4m52s
14) Στείλτε ένα αίτημα στο hellosvc: αντικατάσταση EXTERNAL_IP σε εξωτερική διεύθυνση IP hellosvc.
curl http://EXTERNAL_IP
Ας πάρουμε το Ιστιο
Έχετε ήδη μια εφαρμογή αναπτυγμένη στο ΓΚΕ. φορτωτής μπορεί να χρησιμοποιήσει Kubernetes DNS (hellosvc:80) για αποστολή αιτημάτων σε διακομιστήςκαι μπορείτε να στείλετε αιτήματα σε διακομιστής με εξωτερική διεύθυνση IP. Αν και το Kubernetes έχει πολλές δυνατότητες, λείπουν ορισμένες πληροφορίες σχετικά με τις υπηρεσίες:
Πώς αλληλεπιδρούν οι υπηρεσίες; Ποιες είναι οι σχέσεις μεταξύ των υπηρεσιών; Πώς ρέει η κίνηση μεταξύ των υπηρεσιών; Γνωρίζετε ότι φορτωτής στέλνει αιτήματα σε διακομιστής, αλλά φανταστείτε ότι δεν γνωρίζετε τίποτα για την εφαρμογή. Για να απαντήσουμε σε αυτές τις ερωτήσεις, ας δούμε τη λίστα με τα τρέχοντα pod στο GKE.
Μετρήσεις. Πόσο καιρό διακομιστής απαντά σε ένα εισερχόμενο αίτημα; Πόσα αιτήματα ανά δευτερόλεπτο λαμβάνονται από τον διακομιστή; Δίνει μηνύματα λάθους;
Πληροφορίες Ασφαλείας. Κυκλοφορία μεταξύ φορτωτής и διακομιστής απλώς περνάει HTTP ή από mTLS?
Ο Istio απαντά σε όλα αυτά τα ερωτήματα. Για να γίνει αυτό, το Istio τοποθετεί ένα sidecar proxy Απεσταλμένος σε κάθε λοβό. Ο διακομιστής μεσολάβησης Envoy παρεμποδίζει όλη την εισερχόμενη και εξερχόμενη κίνηση προς τα κοντέινερ εφαρμογών. Αυτό σημαίνει ότι διακομιστής и φορτωτής λάβετε μέσω του sidecar proxy Envoy και όλη την κίνηση από φορτωτής к διακομιστής περνά από τον πληρεξούσιο του Απεσταλμένου.
Οι συνδέσεις μεταξύ διαμεσολαβητών Envoy σχηματίζουν ένα πλέγμα υπηρεσίας. Η αρχιτεκτονική πλέγματος υπηρεσιών παρέχει ένα επίπεδο ελέγχου πάνω από το Kubernetes.
Εφόσον οι πληρεξούσιοι Envoy εκτελούνται στα δικά τους κοντέινερ, το Istio μπορεί να εγκατασταθεί πάνω από ένα σύμπλεγμα GKE χωρίς σχεδόν καμία αλλαγή στον κώδικα εφαρμογής. Αλλά έχετε κάνει κάποια δουλειά για να ετοιμάσετε την εφαρμογή σας για διαχείριση από το Istio:
Υπηρεσίες για όλα τα κοντέινερ. Σε αναπτύξεις διακομιστής и φορτωτής συνδέεται με την υπηρεσία Kubernetes. Ακόμη και φορτωτής, που δεν λαμβάνει εισερχόμενα αιτήματα, υπάρχει υπηρεσία.
Οι θύρες στις υπηρεσίες πρέπει να έχουν ονόματα. Αν και οι θύρες υπηρεσίας μπορούν να παραμείνουν χωρίς όνομα στο GKE, το Istio απαιτεί να καθορίσετε όνομα λιμένα σύμφωνα με το πρωτόκολλό του. Στο αρχείο YAML η θύρα για διακομιστής καλείται httpεπειδή ο διακομιστής χρησιμοποιεί το πρωτόκολλο HTTP. Αν υπηρεσία χρησιμοποιούνται gRPC, θα ονομάζατε το λιμάνι grpc.
Οι αναπτύξεις επισημαίνονται. Επομένως, μπορείτε να χρησιμοποιήσετε τις δυνατότητες διαχείρισης κυκλοφορίας του Istio, όπως ο διαχωρισμός της κυκλοφορίας μεταξύ εκδόσεων της ίδιας υπηρεσίας.
Εγκατάσταση
Υπάρχουν δύο τρόποι εγκατάστασης του Istio. Μπορώ ενεργοποιήστε την επέκταση Istio στο GKE ή εγκαταστήστε την έκδοση ανοιχτού κώδικα του Istio στο σύμπλεγμα. Με το Istio στο GKE, μπορείτε εύκολα να διαχειριστείτε τις εγκαταστάσεις και τις αναβαθμίσεις του Istio σε όλο τον κύκλο ζωής του συμπλέγματος GKE. Εάν θέλετε την πιο πρόσφατη έκδοση του Istio ή περισσότερο έλεγχο στη διαμόρφωση του πίνακα ελέγχου Istio, εγκαταστήστε την έκδοση ανοιχτού κώδικα αντί για την επέκταση Istio on GKE. Για να αποφασίσετε για την προσέγγιση, διαβάστε το άρθρο Χρειάζομαι Istio στο ΓΚΕ;.
Επιλέξτε μια επιλογή, διαβάστε τον κατάλληλο οδηγό και ακολουθήστε τις οδηγίες για να εγκαταστήσετε το Istio στο σύμπλεγμα σας. Εάν θέλετε να χρησιμοποιήσετε το Istio με την εφαρμογή που αναπτύξατε πρόσφατα, ενεργοποιήστε την υλοποίηση sidecar για τον χώρο ονομάτων αθέτηση.
Καθαρισμός
Για να αποφύγετε τη χρέωση στον λογαριασμό σας στο Google Cloud Platform για τους πόρους που χρησιμοποιήσατε σε αυτόν τον οδηγό, διαγράψτε το σύμπλεγμα κοντέινερ μόλις εγκαταστήσετε το Istio και παίξετε με το δείγμα εφαρμογής. Αυτό θα καταργήσει όλους τους πόρους συμπλέγματος, όπως περιπτώσεις υπολογιστών, δίσκους και πόρους δικτύου.