Ipinapakita ng tutorial na ito kung paano gamitin ang Google Kubernetes Engine (GKE) para ilantad ang iyong web application sa internet sa isang static na external na IP address at mag-configure ng domain name para tumuro sa iyong application Ipinapalagay ng tutorial na ito na nagmamay-ari ka ng rehistradong domain name, gaya ng example.com Maaari kang magrehistro ng domain name sa pamamagitan ng Google Mga domain o ibang domain registrar ng iyong choice kung wala ka ## Mga Layunin Ipinapakita ng tutorial na ito ang mga sumusunod na hakbang: ## Mga gastos Ginagamit ng tutorial na ito ang mga sumusunod na masisingil na bahagi ng Google Cloud: Upang makabuo ng pagtatantya ng gastos batay sa iyong inaasahang paggamit, gamitin ang calculator ng pagpepresyo Kapag natapos mo ang tutorial na ito, maiiwasan mo ang patuloy na pagsingil sa pamamagitan ng pagtanggal ng mga mapagkukunang ginawa mo. Para sa higit pang impormasyon, tingnan ang Clean up ## Bago ka magsimulaGawin ang mga sumusunod na hakbang upang paganahin ang Kubernetes Engine API: - Bisitahin ang pahina ng Kubernetes Engine sa Google Cloud console - Lumikha o pumili ng isang proyekto - Hintaying ma-enable ang API at mga kaugnay na serbisyo. Maaaring tumagal ito ng ilang minuto - Tiyaking naka-enable ang pagsingil para sa iyong proyekto sa Cloud. Matutunan kung paano tingnan kung naka-enable ang pagsingil sa isang proyekto I-install ang sumusunod na command-line tool na ginamit sa tutorial na ito: - ginamit ng gcloudis para gumawa at magtanggal ng mga cluster ng Kubernetes Engine gcloudis na kasama sa gcloudCLI - ginamit ng kubectlis upang pamahalaan ang Kubernetes, ang cluster orchestration system na ginagamit ng Kubernetes Engine. Maaari mong i-install kubectlusing gcloud: Ang mga bahagi ng gcloud ay nag-install ng kubectl I-clone ang sample code mula sa GitHub: git clone httpsgithub.com/GoogleCloudPlatform/kubernetes-engine-samples cd kubernetes-engine-samples/hello-app/manifests Itakda ang mga default para sa Para makatipid ng oras sa pag-type ng iyong project ID at mga opsyon sa Compute Engine zone sa tool sa command-line ng gcloud gcloudcommand-line tool, maaari mong itakda ang mga default: gcloud config set project project-idgcloud config set compute/zone compute-zone Gumawa ng cluster Gumawa ng cluster ng container na pinangalanan domain-test para i-deploy ang iyong web application: Ang mga cluster ng container ng gcloud ay gumagawa ng domain-test ## Pag-deploy ng iyong web application Inilalarawan ng sumusunod na manifest ang isang Deployment na nagpapatakbo ng sample na larawan ng container ng web application: # Copyright 2021 Google LLC # # Licensed sa ilalim ng Apache License, Bersyon 2.0 (ang "Lisensya # hindi mo maaaring gamitin ang file na ito maliban sa pagsunod sa Lisensya. # Maaari kang kumuha ng kopya ng Lisensya sa # # httpwww.apache.org /licenses/LICENSE-2.0 # # Maliban kung iniaatas ng naaangkop na batas o napagkasunduan nang nakasulat, ang software # na ibinahagi sa ilalim ng Lisensya ay ibinabahagi sa "AS IS"na BASEHAN, # WALANG WARRANTY O ANUMANG URI, alinman sa ipinahayag o ipinahiwatig. # Tingnan ang Lisensya para sa partikular na wikang namamahala sa mga pahintulot at # limitasyon sa ilalim ng Lisensya. apiVersion: apps/v1 kind: Deployment metadata: name: helloweb labels: app: hello spec: selector: matchLabels: app: hello tier: web template: metadata: mga label: app: hello tier: web spec: container: - pangalan: hello-app na larawan: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 port: - containerPort: 8080 resources: mga kahilingan : cpu: 200m Patakbuhin ang sumusunod na command upang lumikha ng Deployment: kubectl apply -f helloweb-deployment.yaml ## Inilalantad ang iyong aplikasyon Maaari mong ilantad ang iyong aplikasyon sa GKE gamit ang alinman sa mga sumusunod na pamamaraan: Gumamit ng Serbisyo, na lumilikha ng TCP Network Load Balancer na gumagana sa mga panrehiyong IP address. Gumamit ng Ingress, na gumagawa ng HTTP(S) Load Balancer at sumusuporta sa mga pandaigdigang IP address Upang matuto nang higit pa tungkol sa mga kalamangan at kahinaan ng bawat pamamaraan, sumangguni sa Pagse-set up ng HTTP(S) Load Balancing sa Ingress Gumamit ng Serbisyo Upang matiyak na ang iyong aplikasyon ay may static na pampublikong IP address, dapat kang magreserba ng static na IP address Kung pinili mong ilantad ang iyong aplikasyon gamit ang isang Serbisyo, dapat kang lumikha ng isang rehiyonal na IP address. Gumagana lamang ang mga pandaigdigang IP address sa uri ng mapagkukunan ng Ingress, tulad ng ipinaliwanag sa susunod na seksyon Para gumamit ng Serbisyo, gumawa ng static na IP address na pinangalanan helloweb-ip sa rehiyon us-central1: gcloud Lumilikha ang mga gcloud compute address ng helloweb-ip --region us-central1 Upang mahanap ang static na IP address na iyong nilikha, patakbuhin ang sumusunod na command: inilalarawan ng mga gcloud compute address ang helloweb-ip --region us-central1Output: address: 203.0.113.32 .. Config Connector **Tandaan Nangangailangan ang hakbang na ito Config Connector. Sundin ang mga tagubilin sa pag-install upang i-install ang Config Connector sa iyong cluster apiVersion: compute.cnrm.cloud.google.com/v1beta1 uri: ComputeAddress metadata: pangalan: helloweb-ip spec: lokasyon: us-central1 kubectl apply -f compute-address-regional.yamlPara mahanap ang static na IP address, patakbuhin ang sumusunod na command: kubectl kumuha ng computeaddress helloweb-ip -o jsonpathspec.address}'Ang sumusunod na manifest ay naglalarawan ng isang Serbisyo ng uri ng LoadBalancer, na gumagawa ng network load balancer upang ilantad ang mga Pod na may pampublikong IP Palitan `YOUR.IP.ADDRESS.HERE` na may static na IP address: # # Copyright 2021 Google LLC # # Licensed sa ilalim ng Apache License, Bersyon 2.0 (ang "Lisensya # hindi mo maaaring gamitin ang file na ito maliban sa pagsunod sa Lisensya. # Maaari kang kumuha ng kopya ng Lisensya sa # # httpwww.apache.org /licenses/LICENSE-2.0 # # Maliban kung kinakailangan ng naaangkop na batas o sumang-ayon sa nakasulat, ang software # na ibinahagi sa ilalim ng Lisensya ay ibinahagi sa "AS IS"BASE, # WALANG WARRANTY O ANUMANG URI, alinman sa hayag o ipinahiwatig. # Tingnan ang Lisensya para sa partikular na wika na namamahala sa mga pahintulot at # limitasyon sa ilalim ng Lisensya. apiVersion: v1 kind: Service metadata: name: helloweb labels: app: hello spec: selector: app: hello tier: web ports: - port: 80 targetPort: 8080 type: LoadBalancer loadBalancerIP: "YOUR.IP.ADDRESS.HERE"Pagkatapos, lumikha ng Serbisyo: kubectl apply -f helloweb-service-static-ip.yaml Para makita ang nakareserbang IP address na nauugnay sa load balancer: kubectl makakuha ng serviceOutput: NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE helloweb 10.31.254.176 203.0.113.32 80:30690/TCP 54s Gumamit ng Ingress Kung pipiliin mong ilantad ang iyong aplikasyon gamit ang isang Ingress, na lumilikha ng HTTP(S) Load Balancer, dapat kang magreserba ng pandaigdigang static na IP address. Ang mga panrehiyong IP address ay hindi gumagana sa Ingress Upang matuto nang higit pa tungkol sa kung paano gamitin ang Ingress upang ilantad ang iyong mga application sa internet, sumangguni sa tutorial na Pag-set up ng HTTP(S) Load Balancing gamit ang Ingress Upang lumikha ng isang pandaigdigang static na IP address na pinangalanan helloweb-ip: gcloud Lumilikha ang mga gcloud compute address ng helloweb-ip --global Upang mahanap ang static na IP address na iyong ginawa: inilalarawan ng mga gcloud compute address ang helloweb-ip --globalOutput: address: 203.0.113.32 .. Config Connector **Tandaan Nangangailangan ang hakbang na ito Config Connector. Sundin ang mga tagubilin sa pag-install upang i-install ang Config Connector sa iyong cluster apiVersion: compute.cnrm.cloud.google.com/v1beta1 uri: ComputeAddress metadata: pangalan: helloweb-ip spec: lokasyon: global kubectl apply -f compute-address-global.yaml Inilalarawan ng sumusunod na manifest ang isang Ingress na isang web application sa isang static na IP na may dalawang mapagkukunan: - A Servicewith uri:NodePort - Isang Ingressconfigured gamit ang pangalan ng serbisyo at static na IP annotation # Copyright 2021 Google LLC # # Licensed sa ilalim ng Apache License, Bersyon 2.0 (ang "Lisensya # hindi mo maaaring gamitin ang file na ito maliban sa pagsunod sa Lisensya. # Maaari kang kumuha ng kopya ng Lisensya sa # # httpwww.apache.org /licenses/LICENSE-2.0 # # Maliban kung kinakailangan ng naaangkop na batas o sumang-ayon sa nakasulat, ang software # na ibinahagi sa ilalim ng Lisensya ay ibinahagi sa "AS IS"BASE, # WALANG WARRANTY O ANUMANG URI, alinman sa hayag o ipinahiwatig. # Tingnan ang Lisensya para sa partikular na wikang namamahala sa mga pahintulot at # limitasyon sa ilalim ng Lisensya. apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: helloweb annotation: kubernetes.io/ingress.global-static-ip-name: helloweb -ip label: app: hello spec: defaultBackend: service: name: helloweb-backend port: number: 8080apiVersion: v1 kind: Service metadata: name: helloweb-backend labels: app: hello spec: type: NodePort selector: app: hello tier: mga web port: - port: 8080 targetPort: 8080 Ang Tinutukoy ng kubernetes.io/ingress.global-static-ip-name annotation ang pangalan ng pandaigdigang mapagkukunan ng IP address na iuugnay sa HTTP(S) Load Balancer Ilapat ang mapagkukunan sa cluster: kubectl apply -f helloweb-ingress-static-ip.yamlOutput: pagpasok ng "helloweb"na ginawang serbisyo na "helloweb-backend"na ginawa Para makita ang nakareserbang IP address na nauugnay sa load balancer: kubectl makakuha ng ingressOutput: NAME HOST ADDRESS PORTS AGE helloweb * 203.0.113.32 80 4m ## Pagbisita sa iyong nakareserbang static na IP address Upang ma-verify na ang load balancer ay na-configure nang tama, maaari mong gamitin ang a web browser upang bisitahin ang IP address o gamitin kulot: curl http203.0.113.32/Output: Hello, mundo! Hostname: helloweb-3766687455-8lvqv ## Pag-configure ng iyong mga tala ng domain name Upang magkaroon ng mga browser na nagtatanong ng iyong domain name, gaya ng example.com, o subdomain pangalan, tulad ng blog.example.com, ituro ang static na IP address na iyong inilaan, dapat mong i-update ang mga tala ng DNS (Domain Name Server) ng iyong domain name Dapat kang lumikha ng isang **A** (Address) type DNS record para sa iyong domain o subdomain pangalan at i-configure ang halaga nito gamit ang nakareserbang IP address Ang mga DNS record ng iyong domain ay pinamamahalaan ng iyong nameserver. Ang iyong nameserver ay maaaring ang "registrar"kung saan mo inirehistro ang iyong domain, isang serbisyo ng DNS gaya ng Cloud DNS, o isa pang third-party na provider Kung ang iyong nameserver ay Cloud DNS:Sundin ang Cloud DNS Quickstart na gabay upang i-configure ang DNS A record para sa iyong domain name gamit ang nakareserbang IP address ng iyong application. Kung isa pang provider ang iyong nameserver: Sumangguni sa dokumentasyon ng iyong serbisyo ng DNS sa pagtatakda ng mga tala ng DNS A upang i-configure ang iyong domain name. Kung pipiliin mong gamitin sa halip ang Cloud DNS, sumangguni sa Paglipat sa Cloud DNS ## Pagbisita sa iyong domain name Upang i-verify na ang mga tala ng DNS A ng iyong domain name ay lumulutas sa IP address na iyong inilaan, bisitahin ang iyong domain name Upang gumawa ng DNS query para sa A record ng iyong domain name, patakbuhin ang host utos: host example.comOutput: example.com ay may address na 203.0.113.32 Sa puntong ito, maaari mong ituro ang iyong web browser sa iyong domain name at bisitahin ang iyong website! ## Maglinis Upang maiwasan ang mga pagsingil sa iyong Google Cloud account para sa mga mapagkukunang ginamit sa tutorial na ito, i-delete ang proyektong naglalaman ng mga mapagkukunan, o panatilihin ang proyekto at tanggalin ang mga indibidwal na mapagkukunan. Tanggalin ang mga mapagkukunan ng pagbabalanse ng pag-load: kubectl delete ingress,service -l app=hello Ilabas ang nakareserbang static na IP. Pagkatapos matanggal ang load balancer, ang hindi nagamit ngunit nakareserbang IP address ay hindi na libre at sinisingil sa bawat hindi nagamit na pagpepresyo ng IP address. Patakbuhin ang sumusunod na mga utos upang ilabas ang static na mapagkukunan ng IP: Kung gumamit ka ng Serbisyo: Ang mga gcloud compute address ay tinanggal ang helloweb-ip --region us-central1 Kung gumamit ka ng Ingress: Ang mga gcloud compute address ay nagtatanggal ng helloweb-ip --global - Tanggalin ang sample na application: kubectl tanggalin -f helloweb-deployment.yaml Maghintay hanggang matanggal ang load balancer sa pamamagitan ng panonood sa output ng sumusunod na command. Hindi dapat magpakita ang output ng panuntunan sa pagpapasa na naglalaman ng "helloweb"sa pangalan nito: listahan ng mga patakaran sa pagpapasa ng gcloud compute Tanggalin ang cluster ng container: Ang mga cluster ng container ng gcloud ay nagde-delete ng domain-test ## Anong susunod Irehistro ang iyong sariling domain name sa pamamagitan ng Google Domains Galugarin ang iba pang mga tutorial sa Kubernetes Engine Galugarin ang mga reference na arkitektura, diagram, tutorial, at pinakamahusay na kagawian tungkol sa Google Cloud. Tingnan ang aming Cloud Architecture Center.