Αυτό το σεμινάριο δείχνει πώς να χρησιμοποιήσετε το Google Kubernetes Engine (GKE) για να εκθέσετε την εφαρμογή Ιστού σας στο διαδίκτυο σε μια στατική εξωτερική διεύθυνση IP και να διαμορφώσετε ένα όνομα τομέα ώστε να οδηγεί στην εφαρμογή σας Αυτό το σεμινάριο προϋποθέτει ότι έχετε ένα καταχωρημένο όνομα τομέα, όπως π.χ example.com Μπορείτε να καταχωρίσετε ένα όνομα τομέα μέσω της Google Τομείς ή άλλο καταχωρητή τομέα σας επιλογή αν δεν έχετε ## Στόχοι Αυτό το σεμινάριο δείχνει τα ακόλουθα βήματα: ## Κόστος Αυτός ο οδηγός χρησιμοποιεί τα ακόλουθα χρεώσιμα στοιχεία του Google Cloud: Για να δημιουργήσετε μια εκτίμηση κόστους με βάση την προβλεπόμενη χρήση σας, χρησιμοποιήστε τον υπολογιστή τιμολόγησης Όταν ολοκληρώσετε αυτόν τον οδηγό, μπορείτε να αποφύγετε τη συνέχιση της χρέωσης διαγράφοντας τους πόρους που δημιουργήσατε. Για περισσότερες πληροφορίες, ανατρέξτε στην ενότητα Εκκαθάριση ## Πριν ξεκινήσετε Ακολουθήστε τα παρακάτω βήματα για να ενεργοποιήσετε το Kubernetes Engine API: - Επισκεφτείτε τη σελίδα του Kubernetes Engine στην κονσόλα Google Cloud - Δημιουργήστε ή επιλέξτε ένα έργο - Περιμένετε να ενεργοποιηθεί το API και οι σχετικές υπηρεσίες. Αυτό μπορεί να διαρκέσει αρκετά λεπτά - Βεβαιωθείτε ότι η χρέωση είναι ενεργοποιημένη για το έργο σας στο Cloud. Μάθετε πώς μπορείτε να ελέγξετε εάν η χρέωση είναι ενεργοποιημένη σε ένα έργο Εγκαταστήστε τα ακόλουθα εργαλεία γραμμής εντολών που χρησιμοποιούνται σε αυτό το σεμινάριο: - Το gcloudis χρησιμοποιήθηκε για τη δημιουργία και τη διαγραφή συμπλεγμάτων Kubernetes Engine γκλούδης που περιλαμβάνονται στο gcloudCLI - Το kubectlis χρησιμοποιήθηκε για τη διαχείριση του Kubernetes, του συστήματος ενορχήστρωσης συμπλέγματος που χρησιμοποιούσε η Kubernetes Engine. Μπορείτε να εγκαταστήσετε kubectlusing gcloud: Τα στοιχεία του gcloud εγκαθιστούν το kubectl Κλωνοποιήστε το δείγμα κώδικα από το GitHub: git clone httpsgithub.com/GoogleCloudPlatform/kubernetes-engine-samples cd kubernetes-engine-samples/hello-app/manifests Ορίστε προεπιλογές για το Για να εξοικονομήσετε χρόνο πληκτρολογώντας το αναγνωριστικό του έργου σας και επιλογές ζώνης Υπολογιστική μηχανή στο εργαλείο γραμμής εντολών gcloud εργαλείο γραμμής εντολών gcloud, μπορείτε να ορίσετε τις προεπιλογές: έργο συνόλου ρυθμίσεων gcloud σύνολο διαμόρφωσης project-idgcloud compute/zone compute-zone Δημιουργήστε ένα σύμπλεγμα Δημιουργήστε ένα σύμπλεγμα κοντέινερ με το όνομα δοκιμή τομέα για την ανάπτυξη της εφαρμογής Ιστού σας: Τα συμπλέγματα κοντέινερ gcloud δημιουργούν δοκιμή τομέα ## Ανάπτυξη της εφαρμογής Ιστού σας Η ακόλουθη δήλωση περιγράφει μια Ανάπτυξη που εκτελεί ένα δείγμα εικόνας κοντέινερ εφαρμογής Ιστού: # Πνευματικά δικαιώματα 2021 Google LLC # # Άδεια χρήσης βάσει της Άδειας χρήσης Apache, Έκδοση 2.0 (η "Άδεια # δεν μπορείτε να χρησιμοποιήσετε αυτό το αρχείο παρά μόνο σε συμμόρφωση με την Άδεια χρήσης. # Μπορείτε να αποκτήσετε αντίγραφο της Άδειας στη διεύθυνση # # httpwww.apache.org /licenses/LICENSE-2.0 # # Εκτός εάν απαιτείται από την ισχύουσα νομοθεσία ή συμφωνηθεί γραπτώς, το λογισμικό # που διανέμεται βάσει της Άδειας Χρήσης διανέμεται σε ΒΑΣΗ "ΩΣ ΕΧΕΙ", # ΧΩΡΙΣ ΕΓΓΥΗΣΕΙΣ Ή ΠΡΟΫΠΟΘΕΣΕΙΣ ΚΑΘΕ ΕΙΔΟΥΣ, ρητές ή σιωπηρές. Ανατρέξτε στην Άδεια χρήσης για τη συγκεκριμένη γλώσσα που διέπει τα δικαιώματα και τους # περιορισμούς βάσει της Άδειας.apiΈκδοση: apps/v1 είδος: Μεταδεδομένα ανάπτυξης: όνομα: helloweb labels: app: hello spec: selector: matchLabels: app: hello tier: template web: metadata: labels: app: hello tier: web spec: containers: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 ports: - containerPort: 8080 πόροι: αιτήματα : CPU: 200m Εκτελέστε την ακόλουθη εντολή για να δημιουργήσετε το Deployment: kubectl εφαρμόζω -f helloweb-deployment.yaml ## Αποκάλυψη της αίτησής σας Μπορείτε να εκθέσετε την αίτησή σας στο GKE χρησιμοποιώντας μία από τις ακόλουθες μεθόδους: Χρησιμοποιήστε μια Υπηρεσία, η οποία δημιουργεί ένα TCP Network Load Balancer που λειτουργεί με τοπικές διευθύνσεις IP. Χρησιμοποιήστε ένα Ingress, το οποίο δημιουργεί ένα HTTP(S) Load Balancer και υποστηρίζει καθολικές διευθύνσεις IP Για να μάθετε περισσότερα σχετικά με τα πλεονεκτήματα και τα μειονεκτήματα κάθε μεθόδου, ανατρέξτε στην ενότητα Ρύθμιση εξισορρόπησης φορτίου HTTP(S) με Ingress Χρησιμοποιήστε μια Υπηρεσία Για να διασφαλίσετε ότι η εφαρμογή σας έχει στατική δημόσια διεύθυνση IP, πρέπει να κάνετε κράτηση για μια στατική διεύθυνση IP Εάν επιλέξετε να εκθέσετε την εφαρμογή σας χρησιμοποιώντας μια Υπηρεσία, πρέπει να δημιουργήσετε μια τοπική διεύθυνση IP. Οι καθολικές διευθύνσεις IP λειτουργούν μόνο με τον τύπο πόρων Ingress, όπως εξηγείται στην επόμενη ενότητα Για να χρησιμοποιήσετε μια Υπηρεσία, δημιουργήστε μια στατική διεύθυνση IP με το όνομα helloweb-ip στο περιφέρεια us-central1: gcloud Οι διευθύνσεις υπολογισμού gcloud δημιουργούν helloweb-ip --region us-central1 Για να βρείτε τη στατική διεύθυνση IP που δημιουργήσατε, εκτελέστε την ακόλουθη εντολή: Οι διευθύνσεις υπολογισμού gcloud περιγράφουν το helloweb-ip --region us-central1Output: διεύθυνση: 203.0.113.32 .. Config Connector **Σημείωση Αυτό το βήμα απαιτεί Config Connector. Ακολούθησε το Οδηγίες Εγκατάστασης για να εγκαταστήσετε το Config Connector στο σύμπλεγμα σας apiVersion: compute.cnrm.cloud.google.com/v1beta1 είδος: ComputeAddress μεταδεδομένα: όνομα: helloweb-ip spec: τοποθεσία: us-central1 kubectl apply -f compute-address-regional.yamlΓια να βρείτε τη στατική διεύθυνση IP, εκτελέστε την ακόλουθη εντολή: kubectl πάρε computeaddress helloweb-ip -o jsonpathspec.address}'Η ακόλουθη δήλωση περιγράφει μια Υπηρεσία τύπου LoadBalancer, η οποία δημιουργεί έναν εξισορροπητή φόρτου δικτύου για να εκθέσει τα Pods με δημόσια IP Αντικαθιστώ «YOUR.IP.ADDRESS.HERE» με τη στατική διεύθυνση IP: # Πνευματικά δικαιώματα 2021 Google LLC # # Άδεια χρήσης βάσει της Άδειας χρήσης Apache, Έκδοση 2.0 (η "Άδεια # δεν μπορείτε να χρησιμοποιήσετε αυτό το αρχείο παρά μόνο σε συμμόρφωση με την Άδεια χρήσης. # Μπορείτε να αποκτήσετε ένα αντίγραφο της Άδειας στη διεύθυνση # # httpwww.apache.org /licenses/LICENSE-2.0 # # Εκτός εάν απαιτείται από την ισχύουσα νομοθεσία ή συμφωνηθεί γραπτώς, το λογισμικό # που διανέμεται βάσει της Άδειας Χρήσης διανέμεται σε ΒΑΣΗ "ΩΣ ΕΧΕΙ", # ΧΩΡΙΣ ΕΓΓΥΗΣΕΙΣ Ή ΠΡΟΫΠΟΘΕΣΕΙΣ ΚΑΘΕ ΕΙΔΟΥΣ, ρητές ή σιωπηρές. Ανατρέξτε στην Άδεια χρήσης για τη συγκεκριμένη γλώσσα που διέπει τα δικαιώματα και τους # περιορισμούς βάσει της Άδειας.apiΈκδοση: v1 είδος: Μεταδεδομένα υπηρεσίας: όνομα: helloweb labels: app: hello spec: επιλογέας: app: hello tier: θύρες web: - θύρα: 80 targetPort: Τύπος 8080: LoadBalancer loadBalancerIP: "YOUR.IP.ADDRESS.HERE"Στη συνέχεια, δημιουργήστε την Υπηρεσία: kubectl εφαρμόζω -f helloweb-service-static-ip.yaml Για να δείτε τη δεσμευμένη διεύθυνση IP που σχετίζεται με το πρόγραμμα εξισορρόπησης φορτίου: kubectl get serviceOutput: ΟΝΟΜΑ CLUSTER-IP EXTERNAL-IP PORT(S) AGE helloweb 10.31.254.176 203.0.113.32 80:30690/TCP 54s Χρησιμοποιήστε ένα Ingress Εάν επιλέξετε να εκθέσετε την εφαρμογή σας χρησιμοποιώντας ένα Ingress, το οποίο δημιουργεί ένα HTTP(S) Load Balancer, πρέπει να δεσμεύσετε μια καθολική στατική διεύθυνση IP. Οι τοπικές διευθύνσεις IP δεν λειτουργούν με το Ingress Για να μάθετε περισσότερα σχετικά με τον τρόπο χρήσης του Ingress για την έκθεση των εφαρμογών σας στο διαδίκτυο, ανατρέξτε στον οδηγό Ρύθμιση εξισορρόπησης φορτίου HTTP(S) με Ingress Για να δημιουργήσετε μια καθολική στατική διεύθυνση IP με όνομα helloweb-ip: gcloud Οι διευθύνσεις υπολογισμού gcloud δημιουργούν helloweb-ip --global Για να βρείτε τη στατική διεύθυνση IP που δημιουργήσατε: Οι διευθύνσεις υπολογισμού gcloud περιγράφουν το helloweb-ip --globalOutput: διεύθυνση: 203.0.113.32 .. Config Connector **Σημείωση Αυτό το βήμα απαιτεί Config Connector. Ακολούθησε το Οδηγίες Εγκατάστασης για να εγκαταστήσετε το Config Connector στο σύμπλεγμα σας apiVersion: compute.cnrm.cloud.google.com/v1beta1 είδος: ComputeAddress μεταδεδομένα: όνομα: helloweb-ip spec: τοποθεσία: καθολική kubectl εφαρμόζω -f compute-address-global.yaml Η ακόλουθη δήλωση περιγράφει μια εφαρμογή εισόδου που είναι μια εφαρμογή Ιστού σε μια στατική IP με δύο πόρους: - ΕΝΑ Service με τύπος:NodePort - Αν Το Ingress έχει διαμορφωθεί με το όνομα της υπηρεσίας και τον στατικό σχολιασμό IP # Πνευματικά δικαιώματα 2021 Google LLC # # Άδεια χρήσης βάσει της Άδειας χρήσης Apache, Έκδοση 2.0 (η "Άδεια # δεν μπορείτε να χρησιμοποιήσετε αυτό το αρχείο παρά μόνο σε συμμόρφωση με την Άδεια χρήσης. # Μπορείτε να αποκτήσετε ένα αντίγραφο της Άδειας στη διεύθυνση # # httpwww.apache.org /licenses/LICENSE-2.0 # # Εκτός εάν απαιτείται από την ισχύουσα νομοθεσία ή συμφωνηθεί γραπτώς, το λογισμικό # που διανέμεται βάσει της Άδειας Χρήσης διανέμεται σε ΒΑΣΗ "ΩΣ ΕΧΕΙ", # ΧΩΡΙΣ ΕΓΓΥΗΣΕΙΣ Ή ΠΡΟΫΠΟΘΕΣΕΙΣ ΚΑΘΕ ΕΙΔΟΥΣ, ρητές ή σιωπηρές. Δείτε την Άδεια χρήσης για τις συγκεκριμένες γλώσσες που διέπουν τα δικαιώματα και τους # περιορισμούς βάσει της Άδειας. apiVersion: networking.k8s.io/v1 είδος: Μεταδεδομένα εισόδου: όνομα: helloweb σχολιασμοί: kubernetes.io/ingress.global-static-ip-name: helloweb -ip labels: app: hello spec: defaultBackend: υπηρεσία: όνομα: helloweb-backend port: αριθμός: 8080apiΈκδοση: v1 είδος: Μεταδεδομένα υπηρεσίας: όνομα: helloweb-backend labels: app: hello spec: τύπος: NodePort Selector: app: hello Επίπεδο: θύρες web: - θύρα: 8080 targetPort: 8080 ο Ο σχολιασμός kubernetes.io/ingress.global-static-ip-name καθορίζει το όνομα του παγκόσμιου πόρου διεύθυνσης IP που θα συσχετιστεί με το φορτίο HTTP(S). Ισορροπητής Εφαρμόστε τον πόρο στο σύμπλεγμα: kubectl apply -f helloweb-ingress-static-ip.yamlΈξοδος: είσοδος "helloweb"δημιουργήθηκε η υπηρεσία "helloweb-backend". Για να δείτε τη δεσμευτική διεύθυνση IP που σχετίζεται με τον εξισορροπητή φορτίου: kubectl get ingressOutput: ΟΝΟΜΑ ΦΙΛΟΞΕΝΟΥΣ ΔΙΕΥΘΥΝΣΗ ΛΙΜΑΝΙΕΣ ΗΛΙΚΙΑ helloweb * 203.0.113.32 80 4μ ## Επίσκεψη της δεσμευμένης στατικής διεύθυνσης IP σας Για να επαληθεύσετε ότι ο εξισορροπητής φορτίου έχει ρυθμιστεί σωστά, μπορείτε είτε να χρησιμοποιήσετε α πρόγραμμα περιήγησης ιστού για να επισκεφθείτε τη διεύθυνση IP ή να χρησιμοποιήσετε μπούκλα: curl http203.0.113.32/Output: Γειά σου Κόσμε! Όνομα κεντρικού υπολογιστή: helloweb-3766687455-8lvqv ## Διαμόρφωση των εγγραφών του ονόματος τομέα σας Για να έχετε προγράμματα περιήγησης που ζητούν το όνομα τομέα σας, όπως π.χ example.com ή υποτομέα όνομα, όπως blog.example.com, τοποθετήστε το δείκτη στη στατική διεύθυνση IP που έχετε δεσμεύσει, πρέπει να ενημερώσετε τις εγγραφές DNS (Domain Name Server) του ονόματος τομέα σας Πρέπει να δημιουργήσετε ένα **A** (Διεύθυνση) πληκτρολογήστε εγγραφή DNS για τον τομέα ή τον υποτομέα σας όνομα και η τιμή του να διαμορφωθεί με τη δεσμευμένη διεύθυνση IP Η διαχείριση των εγγραφών DNS του τομέα σας γίνεται από τον διακομιστή ονομάτων σας. Ο διακομιστής ονομάτων σας μπορεί να είναι ο "καταχωρητής"όπου καταχωρίσατε τον τομέα σας, μια υπηρεσία DNS όπως το Cloud DNS ή άλλος πάροχος τρίτου μέρους Εάν ο διακομιστής ονομάτων σας είναι Cloud DNS: Ακολουθήστε τον οδηγό γρήγορης εκκίνησης του Cloud DNS για να διαμορφώσετε μια εγγραφή DNS για το όνομα τομέα σας με τη δεσμευμένη διεύθυνση IP της εφαρμογής σας. Εάν ο διακομιστής ονομάτων σας είναι άλλος πάροχος: Ανατρέξτε στην τεκμηρίωση της υπηρεσίας DNS σχετικά με τη ρύθμιση των εγγραφών DNS A για τη διαμόρφωση του ονόματος τομέα σας. Αν επιλέξετε να χρησιμοποιήσετε το Cloud DNS, ανατρέξτε στο Μετεγκατάσταση στο Cloud DNS ## Επίσκεψη στο όνομα τομέα σας Για να επαληθεύσετε ότι οι εγγραφές DNS A του ονόματος τομέα σας καταλήγουν στη διεύθυνση IP που έχετε δεσμεύσει, επισκεφτείτε το όνομα τομέα σας Για να κάνετε ένα ερώτημα DNS για την εγγραφή A του ονόματος τομέα σας, εκτελέστε το πλήθος εντολή: host example.comOutput: Το example.com έχει διεύθυνση 203.0.113.32 Σε αυτό το σημείο, μπορείτε να υποδείξετε το πρόγραμμα περιήγησής σας στο όνομα τομέα σας και να επισκεφτείτε τον ιστότοπό σας! ## Καθάρισε Για να αποφύγετε χρεώσεις στον λογαριασμό σας στο Google Cloud για τους πόρους που χρησιμοποιούνται σε αυτόν τον οδηγό, είτε διαγράψτε το έργο που περιέχει τους πόρους είτε διατηρήστε το έργο και διαγράψτε τους μεμονωμένους πόρους Διαγράψτε τους πόρους εξισορρόπησης φορτίου: kubectl διαγραφή εισόδου,υπηρεσία -l app=γεια Αποδεσμεύστε τη δεσμευμένη στατική IP. Μετά τη διαγραφή του εξισορροπητή φορτίου, η αχρησιμοποίητη αλλά δεσμευμένη διεύθυνση IP δεν είναι πλέον δωρεάν και χρεώνεται ανά τιμή διεύθυνσης IP που δεν χρησιμοποιείται. Εκτελέστε τις ακόλουθες εντολές για να απελευθερώσετε τον στατικό πόρο IP: Εάν χρησιμοποιήσατε μια Υπηρεσία: gcloud compute διευθύνσεις διαγραφή helloweb-ip --region us-central1 Εάν χρησιμοποιήσατε ένα Ingress: gcloud compute διευθύνσεις διαγραφή helloweb-ip --global - Διαγράψτε το δείγμα εφαρμογής: kubectl διαγραφή -f helloweb-deployment.yaml Περιμένετε μέχρι να διαγραφεί το load balancer παρακολουθώντας την έξοδο της ακόλουθης εντολής. Η έξοδος δεν πρέπει να εμφανίζει κανόνα προώθησης που περιέχει "helloweb"στο όνομά του: λίστα κανόνων προώθησης υπολογισμού gcloud Διαγραφή του συμπλέγματος κοντέινερ: Τα συμπλέγματα κοντέινερ gcloud διαγράφουν τη δοκιμή τομέα ## Τι έπεται Καταχωρίστε το δικό σας όνομα τομέα μέσω του Google Domains Εξερευνήστε άλλα μαθήματα Kubernetes Engine Εξερευνήστε αρχιτεκτονικές αναφοράς, διαγράμματα, σεμινάρια και βέλτιστες πρακτικές σχετικά με το Google Cloud. Ρίξτε μια ματιά στο Κέντρο Αρχιτεκτονικής Cloud.