Acest tutorial demonstrează cum să utilizați Google Kubernetes Engine (GKE) pentru a vă expune aplicația web la internet pe o adresă IP externă statică și a configura un nume de domeniu pentru a indica aplicația dvs. Acest tutorial presupune că dețineți un nume de domeniu înregistrat, cum ar fi exemplu.com Puteți înregistra un nume de domeniu prin Google Domenii sau un alt registrator al domeniului dvs alegere dacă nu ai unul ## Obiective Acest tutorial demonstrează următorii pași: ## Cheltuieli Acest tutorial folosește următoarele componente facturabile ale Google Cloud: Pentru a genera o estimare a costurilor bazată pe utilizarea proiectată, utilizați calculatorul de prețuri Când terminați acest tutorial, puteți evita facturarea continuă ștergând resursele pe care le-ați creat. Pentru mai multe informații, consultați Curățare ## Înainte de a începeFaceți următorii pași pentru a activa API-ul Kubernetes Engine: - Accesați pagina Kubernetes Engine din consola Google Cloud - Creați sau selectați un proiect - Așteptați ca API-ul și serviciile asociate să fie activate. Acest lucru poate dura câteva minute - Asigurați-vă că facturarea este activată pentru proiectul dvs. Cloud. Aflați cum să verificați dacă facturarea este activată într-un proiect Instalați următoarele instrumente de linie de comandă utilizate în acest tutorial: - gcloudis folosit pentru a crea și șterge clustere Kubernetes Engine gcloudis incluse în gcloudCLI - kubectlis a folosit pentru a gestiona Kubernetes, sistemul de orchestrare a clusterelor folosit de Kubernetes Engine. Puteți instala kubectlusing gcloud: Componentele gcloud instalează kubectl Clonează exemplul de cod din GitHub: git clone httpsgithub.com/GoogleCloudPlatform/kubernetes-engine-samples cd kubernetes-engine-samples/hello-app/manifests Setați valorile implicite pentru Pentru a economisi timp introducând ID-ul proiectului și opțiunile zonei Compute Engine în instrument de linie de comandă gcloud instrumentul gcloudcommand-line, puteți seta valorile implicite: proiect set de configurare gcloud set de configurare project-idgcloud compute/zone compute-zone Creați un cluster Creați un cluster de containere numit domain-test pentru a implementa aplicația dvs. web: clusterele de containere gcloud creează domain-test ## Implementarea aplicației dvs. web Următorul manifest descrie o implementare care rulează un exemplu de imagine de container de aplicație web: # Copyright 2021 Google LLC # # Licențiat conform Licenței Apache, Versiunea 2.0 („Licența # nu puteți utiliza acest fișier decât în ​​conformitate cu Licența. # Puteți obține o copie a Licenței la # # httpwww.apache.org /licenses/LICENSE-2.0 # # Cu excepția cazului în care legea aplicabilă este cerută sau este convenit în scris, software-ul # distribuit în baza Licenței este distribuit „CA AȘA ESTE”, # FĂRĂ GARANȚII SAU CONDIȚII DE NICIUN FEL, exprese sau implicite. # Consultați Licența pentru permisiunile și # limitări ale limbii specifice din licență. apiVersion: apps/v1 kind: Metadate de implementare: nume: helloweb etichete: app: hello spec: selector: matchLabels: app: hello tier: șablon web: metadate: etichete: app: hello tier: web spec: containers: - nume: hello-app imagine: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 porturi: - containerPort: 8080 resurse: solicitări : CPU: 200m Rulați următoarea comandă pentru a crea implementarea: kubectl apply -f helloweb-deployment.yaml ## Expunerea aplicației dvs Vă puteți expune aplicația pe GKE utilizând oricare dintre următoarele metode: Utilizați un serviciu, care creează un Echilibrator de sarcină de rețea TCP care funcționează cu adrese IP regionale. Utilizați un Ingress, care creează un echilibrator de încărcare HTTP(S) și acceptă adrese IP globale Pentru a afla mai multe despre avantajele și dezavantajele fiecărei metode, consultați Configurarea echilibrării sarcinii HTTP(S) cu Ingress. Utilizați un serviciu Pentru a vă asigura că aplicația dvs. are o adresă IP publică statică, trebuie să rezervați o adresă IP statică Dacă alegeți să vă expuneți aplicația folosind un Serviciu, trebuie să creați o adresă IP regională. Adresele IP globale funcționează numai cu tipul de resursă Ingress, așa cum se explică în secțiunea următoare Pentru a utiliza un serviciu, creați o adresă IP statică numită helloweb-ip în regiune us-central1: gcloud adresele de calcul gcloud creează helloweb-ip --region us-central1 Pentru a găsi adresa IP statică pe care ați creat-o, executați următoarea comandă: adresele de calcul gcloud descriu helloweb-ip --region us-central1Output: adresa: 203.0.113.32 .. Conector de configurare **Notă Acest pas necesită Conector de configurare. Urmează instructiuni de instalare pentru a instala Config Connector pe clusterul dvs apiVersion: compute.cnrm.cloud.google.com/v1beta1 fel: metadate ComputeAddress: nume: helloweb-ip spec: locație: us-central1 kubectl apply -f compute-address-regional.yamlPentru a găsi adresa IP statică, rulați următoarea comandă: kubectl obține computeaddress helloweb-ip -o jsonpathspec.address}'Următorul manifest descrie un serviciu de tip LoadBalancer, care creează un echilibrator de încărcare a rețelei pentru a expune podurile cu un IP public A inlocui `YOUR.IP.ADDRESS.HERE` cu adresa IP statică: # Copyright 2021 Google LLC # # Licențiat conform Licenței Apache, Versiunea 2.0 („Licența # nu puteți utiliza acest fișier decât în ​​conformitate cu Licența. # Puteți obține o copie a Licenței la # # httpwww.apache.org /licenses/LICENSE-2.0 # # Cu excepția cazului în care legea aplicabilă este cerută sau este convenit în scris, software-ul # distribuit în baza Licenței este distribuit „CA AȘA ESTE”, # FĂRĂ GARANȚII SAU CONDIȚII DE NICIUN FEL, exprese sau implicite. # Consultați Licența pentru permisiunile și # limitări ale limbii specifice din licență. apiVersion: v1 fel: metadate serviciu: nume: helloweb etichete: app: hello spec: selector: app: hello tier: porturi web: - port: 80 targetPort: 8080 tip: LoadBalancer loadBalancerIP: „ADRESA.IP.DVS.AICI” Apoi, creați Serviciul: kubectl apply -f helloweb-service-static-ip.yaml Pentru a vedea adresa IP rezervată asociată cu echilibrul de încărcare: kubectl obține serviceOutput: NUME CLUSTER-IP EXTERN-IP PORT(E) Vârsta helloweb 10.31.254.176 203.0.113.32 80:30690/TCP 54s Utilizați un Ingress Dacă alegeți să vă expuneți aplicația folosind un Ingress, care creează un echilibrator de încărcare HTTP(S), trebuie să rezervați o adresă IP statică globală. Adresele IP regionale nu funcționează cu Ingress Pentru a afla mai multe despre cum să utilizați Ingress pentru a vă expune aplicațiile la internet, consultați tutorialul Configurarea echilibrării sarcinii HTTP(S) cu Ingress. Pentru a crea o adresă IP statică globală numită helloweb-ip: gcloud adresele de calcul gcloud creează helloweb-ip --global Pentru a găsi adresa IP statică pe care ați creat-o: adresele de calcul gcloud descriu helloweb-ip --globalOutput: adresa: 203.0.113.32 .. Conector de configurare **Notă Acest pas necesită Conector de configurare. Urmează instructiuni de instalare pentru a instala Config Connector pe clusterul dvs apiVersion: compute.cnrm.cloud.google.com/v1beta1 fel: metadate ComputeAddress: nume: helloweb-ip spec: locație: global kubectl aplica -f compute-address-global.yaml Următorul manifest descrie o intrare care o aplicație web pe un IP static cu două resurse: - A Servicewith tip:NodePort - An Intrare configurată cu numele serviciului și adnotarea IP statică # Copyright 2021 Google LLC # # Licențiat conform Licenței Apache, Versiunea 2.0 („Licența # nu puteți utiliza acest fișier decât în ​​conformitate cu Licența. # Puteți obține o copie a Licenței la # # httpwww.apache.org /licenses/LICENSE-2.0 # # Cu excepția cazului în care legea aplicabilă este cerută sau este convenit în scris, software-ul # distribuit în baza Licenței este distribuit „CA AȘA ESTE”, # FĂRĂ GARANȚII SAU CONDIȚII DE NICIUN FEL, exprese sau implicite. # Consultați Licența pentru permisiunile și # limitări ale limbii specifice din cadrul Licenței. apiVersion: networking.k8s.io/v1 fel: Metadate de intrare: nume: helloweb adnotări: kubernetes.io/ingress.global-static-ip-name: helloweb -ip labels: app: hello spec: defaultBackend: service: name: helloweb-backend port: număr: 8080apiVersion: v1 fel: metadate serviciu: nume: helloweb-backend etichete: app: hello spec: tip: NodePort selector: app: hello nivel: porturi web: - port: 8080 targetPort: 8080 The Adnotarea kubernetes.io/ingress.global-static-ip-name specifică numele a resursei globale de adresă IP care urmează să fie asociată cu încărcarea HTTP(S). Echilibrist Aplicați resursa la cluster: kubectl apply -f helloweb-ingress-static-ip.yamlOutput: ingress „helloweb” creat serviciul „helloweb-backend” creat Pentru a vedea adresa IP de rezervă asociată cu echilibrul de încărcare: kubectl obține ingressOutput: NUME GAZDE ADRESĂ PORTURI Vârsta helloweb * 203.0.113.32 80 4m ## Vizitarea adresei IP statice rezervate Pentru a verifica dacă echilibrul de încărcare este configurat corect, puteți utiliza fie a browser web pentru a vizita adresa IP sau a utiliza răsuci: curl http203.0.113.32/Ieșire: Salut Lume! Nume gazdă: helloweb-3766687455-8lvqv ## Configurarea înregistrărilor de nume de domeniu Pentru ca browserele să interogă numele domeniului dvs., cum ar fi example.com sau subdomeniu nume, cum ar fi blog.example.com, indicați adresa IP statică pe care ați rezervat-o, trebuie să actualizați înregistrările DNS (Domain Name Server) ale numelui dumneavoastră de domeniu Trebuie să creați un Înregistrare DNS de tip **A** (Adresă) pentru domeniul sau subdomeniul dvs nume și să aibă valoarea configurată cu adresa IP rezervată Înregistrările DNS ale domeniului dvs. sunt gestionate de serverul dvs. de nume. Serverul dvs. de nume ar putea fi „registrarul” la care v-ați înregistrat domeniul, un serviciu DNS, cum ar fi Cloud DNS, sau un alt furnizor terță parte Dacă serverul dvs. de nume este Cloud DNS: Urmați ghidul de pornire rapidă Cloud DNS pentru a configura înregistrarea DNS A pentru numele dvs. de domeniu cu adresa IP rezervată a aplicației dvs. Dacă serverul dvs. de nume este un alt furnizor: Consultați documentația serviciului DNS despre setarea înregistrărilor DNS A pentru a vă configura numele domeniului. Dacă alegeți să utilizați Cloud DNS, consultați Migrarea la Cloud DNS ## Vizitarea numelui dvs. de domeniu Pentru a verifica dacă înregistrările DNS A ale numelui dvs. de domeniu se rezolvă la adresa IP pe care ați rezervat-o, vizitați numele domeniului dvs. Pentru a face o interogare DNS pentru înregistrarea A a numelui dvs. de domeniu, rulați gazdă comanda: exemplu gazdă.comIeșire: example.com are adresa 203.0.113.32 În acest moment, puteți îndrepta browserul dvs. web către numele dvs. de domeniu și puteți vizita site-ul dvs. web! ## A curăța Pentru a evita costurile contului dvs. Google Cloud pentru resursele utilizate în acest tutorial, fie ștergeți proiectul care conține resursele, fie păstrați proiectul și ștergeți resursele individuale Ștergeți resursele de echilibrare a sarcinii: kubectl șterge ingress, service -l app=hello Eliberați IP-ul static rezervat. După ce echilibrul de încărcare este șters, adresa IP neutilizată, dar rezervată nu mai este gratuită și este facturată în funcție de prețul adresei IP neutilizate. Rulați următoarele comenzi pentru a elibera resursa IP statică: Dacă ați folosit un serviciu: gcloud compute adresele șterge helloweb-ip --region us-central1 Dacă ați folosit un Ingress: gcloud compute adresele șterge helloweb-ip --global - Ștergeți aplicația exemplu: kubectl delete -f helloweb-deployment.yaml Așteptați până când echilibratorul de încărcare este șters, urmărind rezultatul comenzii următoare. Ieșirea nu ar trebui să arate o regulă de redirecționare care conține „helloweb” în numele său: lista de reguli de redirecționare gcloud compute Ștergeți clusterul de containere: clusterele de containere gcloud șterg domain-test ## Ce urmeaza Înregistrați-vă propriul nume de domeniu prin Google Domains Explorați alte tutoriale Kubernetes Engine Explorați arhitecturi de referință, diagrame, tutoriale și cele mai bune practici despre Google Cloud. Aruncă o privire la Centrul nostru de arhitectură în cloud.