บทแนะนำนี้สาธิตวิธีใช้ Google Kubernetes Engine (GKE) เพื่อแสดงเว็บแอปพลิเคชันของคุณต่ออินเทอร์เน็ตบนที่อยู่ IP ภายนอกแบบคงที่ และกำหนดค่าชื่อโดเมนให้ชี้ไปที่แอปพลิเคชันของคุณ บทช่วยสอนนี้จะถือว่าคุณเป็นเจ้าของชื่อโดเมนที่จดทะเบียน เช่น ตัวอย่าง.คอม คุณสามารถจดทะเบียนชื่อโดเมนผ่าน Google โดเมนหรือผู้รับจดทะเบียนโดเมนรายอื่นของคุณ ทางเลือกถ้าคุณไม่มี ##วัตถุประสงค์ บทช่วยสอนนี้สาธิตขั้นตอนต่อไปนี้: ## ค่าใช้จ่าย บทแนะนำนี้ใช้องค์ประกอบที่เรียกเก็บเงินได้ต่อไปนี้ของ Google Cloud: ในการสร้างประมาณการค่าใช้จ่ายตามการใช้งานที่คาดการณ์ไว้ของคุณ ใช้เครื่องคำนวณราคา เมื่อคุณจบบทแนะนำนี้ คุณสามารถหลีกเลี่ยงการเรียกเก็บเงินต่อเนื่องได้โดยการลบทรัพยากรที่คุณสร้างขึ้น สำหรับข้อมูลเพิ่มเติม โปรดดูที่ การล้างข้อมูล ## ก่อนที่คุณจะเริ่มทำตามขั้นตอนต่อไปนี้เพื่อเปิดใช้งาน Kubernetes Engine API: - ไปที่หน้า Kubernetes Engine ในคอนโซล Google Cloud - สร้างหรือเลือกโครงการ - รอให้ API และบริการที่เกี่ยวข้องเปิดใช้งาน การดำเนินการนี้อาจใช้เวลาหลายนาที - ตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ระบบคลาวด์แล้ว เรียนรู้วิธีตรวจสอบว่ามีการเปิดใช้งานการเรียกเก็บเงินในโครงการหรือไม่ ติดตั้งเครื่องมือบรรทัดคำสั่งต่อไปนี้ที่ใช้ในบทช่วยสอนนี้: - gcloud ใช้เพื่อสร้างและลบคลัสเตอร์ Kubernetes Engine gcloud รวมอยู่ใน gcloudCLI - kubectlis ใช้เพื่อจัดการ Kubernetes ซึ่งเป็นระบบการประสานคลัสเตอร์ที่ใช้โดย Kubernetes Engine คุณสามารถติดตั้ง คูเบคลัสซิ่ง gcloud: ส่วนประกอบ gcloud ติดตั้ง kubectl โคลนโค้ดตัวอย่างจาก GitHub: git โคลน httpsgithub.com/GoogleCloudPlatform/kubernetes-engine-samples cd kubernetes-engine-samples/hello-app/manifests ตั้งค่าเริ่มต้นสำหรับ เพื่อประหยัดเวลาในการพิมพ์รหัสโครงการของคุณ และตัวเลือกโซน Compute Engine ใน เครื่องมือบรรทัดคำสั่ง gcloud เครื่องมือบรรทัดคำสั่ง gcloud คุณสามารถตั้งค่าเริ่มต้น: โครงการชุดการกำหนดค่า gcloud project-idgcloud config ตั้งค่าการคำนวณ/โซน compute-zone สร้างคลัสเตอร์ สร้างคลัสเตอร์คอนเทนเนอร์ชื่อ ทดสอบโดเมนเพื่อปรับใช้เว็บแอปพลิเคชันของคุณ: กลุ่มคอนเทนเนอร์ gcloud สร้างการทดสอบโดเมน ## การปรับใช้เว็บแอปพลิเคชันของคุณ รายการต่อไปนี้อธิบายการปรับใช้ที่เรียกใช้ตัวอย่างเว็บแอปพลิเคชันคอนเทนเนอร์อิมเมจ: # ลิขสิทธิ์ 2021 Google LLC # # ได้รับอนุญาตภายใต้ Apache License เวอร์ชัน 2.0 ("ใบอนุญาต # คุณไม่สามารถใช้ไฟล์นี้ได้ ยกเว้นจะเป็นไปตามใบอนุญาต # คุณอาจขอรับสำเนาใบอนุญาตได้ที่ # # httpwww.apache.org /licenses/LICENSE-2.0 # # เว้นแต่กฎหมายที่ใช้บังคับกำหนดหรือตกลงเป็นลายลักษณ์อักษร ซอฟต์แวร์ # ที่แจกจ่ายภายใต้ใบอนุญาตจะแจกจ่ายบนพื้นฐาน "ตามที่เป็น"# โดยไม่มีการรับประกันหรือเงื่อนไขใดๆ ไม่ว่าจะโดยชัดแจ้งหรือโดยนัย # ดูใบอนุญาตสำหรับภาษาเฉพาะที่ควบคุมการอนุญาตและข้อจำกัด # ภายใต้ใบอนุญาต apiVersion: apps/v1 ชนิด: ข้อมูลเมตาการปรับใช้: ชื่อ: helloweb ป้ายกำกับ: แอป: hello spec: ตัวเลือก: matchLabels: แอป: hello ระดับ: แม่แบบเว็บ: ข้อมูลเมตา: ป้ายกำกับ: แอป: สวัสดี ระดับ: สเป็คเว็บ: คอนเทนเนอร์: - ชื่อ: รูปภาพสวัสดีแอป: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 พอร์ต: - containerPort: 8080 ทรัพยากร: คำขอ :ซีพียู:200ม เรียกใช้คำสั่งต่อไปนี้เพื่อสร้างการปรับใช้: kubectl ใช้ -f helloweb-deployment.yaml ## เปิดเผยใบสมัครของคุณ คุณสามารถเปิดเผยแอปพลิเคชันของคุณบน GKE โดยใช้วิธีใดวิธีหนึ่งต่อไปนี้: ใช้บริการ ซึ่งสร้าง TCP Network Load Balancer ที่ทำงานร่วมกับที่อยู่ IP ระดับภูมิภาค ใช้ Ingress ซึ่งสร้าง HTTP(S) Load Balancer และรองรับที่อยู่ IP ส่วนกลาง หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับข้อดีและข้อเสียของแต่ละวิธี โปรดดูที่การตั้งค่า HTTP(S) Load Balancing with Ingress ใช้บริการ เพื่อให้แน่ใจว่าแอปพลิเคชันของคุณมีที่อยู่ IP สาธารณะแบบคงที่ คุณต้องจองที่อยู่ IP แบบคงที่ หากคุณเลือกที่จะเปิดเผยแอปพลิเคชันของคุณโดยใช้บริการ คุณต้องสร้างที่อยู่ IP ประจำภูมิภาค ที่อยู่ IP สากลใช้งานได้เฉพาะกับประเภททรัพยากร Ingress ดังที่อธิบายไว้ในหัวข้อถัดไป หากต้องการใช้บริการ ให้สร้างที่อยู่ IP แบบคงที่ชื่อ สวัสดีเว็บ-ip ใน ภูมิภาค เรากลาง1: จีคลาวด์ ที่อยู่ประมวลผล gcloud สร้าง helloweb-ip --region us-central1 หากต้องการค้นหาที่อยู่ IP แบบคงที่ที่คุณสร้างขึ้น ให้รันคำสั่งต่อไปนี้: ที่อยู่การประมวลผล gcloud อธิบาย helloweb-ip --region us-central1Output: ที่อยู่: 203.0.113.32 .. ตัวเชื่อมต่อการกำหนดค่า **หมายเหตุ ขั้นตอนนี้จำเป็นต้องมี ตัวเชื่อมต่อการกำหนดค่า ติดตาม คำแนะนำในการติดตั้ง เพื่อติดตั้ง Config Connector บนคลัสเตอร์ของคุณ apiVersion: compute.cnrm.cloud.google.com/v1beta1 ประเภท: ComputeAddress metadata: ชื่อ: helloweb-ip spec: สถานที่: us-central1 kubectl ใช้ -f compute-address-regional.yaml หากต้องการค้นหาที่อยู่ IP แบบคงที่ ให้รันคำสั่งต่อไปนี้: kubectl รับที่อยู่ compute สวัสดีเว็บ-ip -o jsonpathspec.address}'รายการต่อไปนี้อธิบายบริการประเภท LoadBalancer ซึ่งสร้างตัวจัดสรรภาระงานเครือข่ายเพื่อแสดง Pods ด้วย IP สาธารณะ แทนที่ `YOUR.IP.ADDRESS.HERE` ด้วยที่อยู่ IP แบบคงที่: # ลิขสิทธิ์ 2021 Google LLC # # ได้รับอนุญาตภายใต้ Apache License เวอร์ชัน 2.0 ("ใบอนุญาต # คุณไม่สามารถใช้ไฟล์นี้ได้ ยกเว้นจะเป็นไปตามใบอนุญาต # คุณอาจขอรับสำเนาใบอนุญาตได้ที่ # # httpwww.apache.org /licenses/LICENSE-2.0 # # เว้นแต่กฎหมายที่ใช้บังคับกำหนดหรือตกลงเป็นลายลักษณ์อักษร ซอฟต์แวร์ # ที่แจกจ่ายภายใต้ใบอนุญาตจะแจกจ่ายบนพื้นฐาน "ตามที่เป็น"# โดยไม่มีการรับประกันหรือเงื่อนไขใดๆ ไม่ว่าจะโดยชัดแจ้งหรือโดยนัย # ดูใบอนุญาตสำหรับภาษาเฉพาะที่ควบคุมการอนุญาตและข้อจำกัด # ภายใต้ใบอนุญาต apiVersion: v1 ชนิด: ข้อมูลเมตาของบริการ: ชื่อ: helloweb ป้ายกำกับ: แอป: hello spec: ตัวเลือก: แอป: hello ระดับ: เว็บ พอร์ต: - พอร์ต: 80 targetPort: ประเภท 8080: LoadBalancer loadBalancerIP: "YOUR.IP.ADDRESS.HERE"จากนั้น สร้างบริการ: kubectl ใช้ -f helloweb-service-static-ip.yaml หากต้องการดูที่อยู่ IP ที่สงวนไว้ซึ่งเชื่อมโยงกับโหลดบาลานเซอร์: kubectl รับบริการเอาต์พุต: NAME CLUSTER-IP EXTERNAL-IP PORT(S) อายุ helloweb 10.31.254.176 203.0.113.32 80:30690/TCP 54 วินาที ใช้ขาเข้า หากคุณเลือกที่จะเปิดเผยแอปพลิเคชันของคุณโดยใช้ Ingress ซึ่งสร้าง HTTP(S) Load Balancer คุณต้องจองที่อยู่ IP แบบคงที่ส่วนกลาง ที่อยู่ IP ภูมิภาคใช้ไม่ได้กับ Ingress หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิธีใช้ Ingress เพื่อแสดงแอปพลิเคชันของคุณสู่อินเทอร์เน็ต โปรดดูบทช่วยสอนการตั้งค่า HTTP(S) Load Balancing ด้วย Ingress เพื่อสร้างที่อยู่ IP แบบคงที่ส่วนกลางชื่อ สวัสดีเว็บ-ip: จีคลาวด์ ที่อยู่การประมวลผล gcloud สร้าง helloweb-ip --global หากต้องการค้นหาที่อยู่ IP แบบคงที่ที่คุณสร้างขึ้น: ที่อยู่การคำนวณ gcloud อธิบาย helloweb-ip --globalOutput: ที่อยู่: 203.0.113.32 .. ตัวเชื่อมต่อการกำหนดค่า **หมายเหตุ ขั้นตอนนี้จำเป็นต้องมี ตัวเชื่อมต่อการกำหนดค่า ติดตาม คำแนะนำในการติดตั้ง เพื่อติดตั้ง Config Connector บนคลัสเตอร์ของคุณ apiVersion: compute.cnrm.cloud.google.com/v1beta1 ประเภท: ComputeAddress metadata: ชื่อ: helloweb-ip spec: สถานที่: ทั่วโลก kubectl ใช้ -f compute-address-global.yaml รายการต่อไปนี้อธิบาย Ingress ว่าเว็บแอปพลิเคชันบน IP แบบคงที่พร้อมทรัพยากรสองรายการ: - ก บริการด้วย ประเภท: NodePort - หนึ่ง Ingress กำหนดค่าด้วยชื่อบริการและหมายเหตุประกอบ IP แบบคงที่ # ลิขสิทธิ์ 2021 Google LLC # # ได้รับอนุญาตภายใต้ Apache License เวอร์ชัน 2.0 ("ใบอนุญาต # คุณไม่สามารถใช้ไฟล์นี้ได้ ยกเว้นจะเป็นไปตามใบอนุญาต # คุณอาจขอรับสำเนาใบอนุญาตได้ที่ # # httpwww.apache.org /licenses/LICENSE-2.0 # # เว้นแต่กฎหมายที่ใช้บังคับกำหนดหรือตกลงเป็นลายลักษณ์อักษร ซอฟต์แวร์ # ที่แจกจ่ายภายใต้ใบอนุญาตจะแจกจ่ายบนพื้นฐาน "ตามที่เป็น"# โดยไม่มีการรับประกันหรือเงื่อนไขใดๆ ไม่ว่าจะโดยชัดแจ้งหรือโดยนัย # ดูใบอนุญาตสำหรับภาษาเฉพาะที่ควบคุมการอนุญาตและ # ข้อจำกัดภายใต้ใบอนุญาต apiVersion: networking.k8s.io/v1 ประเภท: ข้อมูลเมตาของ Ingress: ชื่อ: คำอธิบายประกอบของ helloweb: kubernetes.io/ingress.global-static-ip-name: helloweb -ip labels: app: hello spec: defaultBackend: service: name: helloweb-backend port: number: 8080apiVersion: v1 type: Service metadata: name: helloweb-backend labels: app: hello spec: type: NodePort selector: app: สวัสดี ชั้น: พอร์ตเว็บ: - พอร์ต: 8080 targetPort: 8080 เดอะ kubernetes.io/ingress.global-static-ip-name คำอธิบายประกอบระบุชื่อ ของทรัพยากรที่อยู่ IP ส่วนกลางที่จะเชื่อมโยงกับ HTTP(S) Load บาลานเซอร์ ใช้ทรัพยากรกับคลัสเตอร์: kubectl ใช้ -f helloweb-ingress-static-ip.yamlOutput: ingress "helloweb"สร้างบริการ "helloweb-backend"แล้ว หากต้องการดูที่อยู่ IP สำรองที่เชื่อมโยงกับโหลดบาลานเซอร์: kubectl รับ ingressOutput: ชื่อ โฮสต์ ที่อยู่ อายุพอร์ต สวัสดีเว็บ * 203.0.113.32 80 4m ## เยี่ยมชมที่อยู่ IP แบบคงที่ที่คุณสงวนไว้ หากต้องการตรวจสอบว่าโหลดบาลานเซอร์ได้รับการกำหนดค่าอย่างถูกต้อง คุณสามารถใช้ a เว็บเบราว์เซอร์เพื่อเยี่ยมชมที่อยู่ IP หรือใช้งาน ขด: ขด http203.0.113.32/Output: สวัสดีชาวโลก! ชื่อโฮสต์: helloweb-3766687455-8lvqv ## การกำหนดค่าระเบียนชื่อโดเมนของคุณ เพื่อให้เบราว์เซอร์ค้นหาชื่อโดเมนของคุณ เช่น example.com หรือโดเมนย่อย ชื่อ เช่น blog.example.com ชี้ไปที่ที่อยู่ IP แบบคงที่ที่คุณจองไว้ คุณต้องอัปเดตระเบียน DNS (Domain Name Server) ของชื่อโดเมนของคุณ คุณต้องสร้างไฟล์ **A** (Address) พิมพ์ระเบียน DNS สำหรับโดเมนหรือโดเมนย่อยของคุณ ชื่อและกำหนดค่าด้วยที่อยู่ IP ที่สงวนไว้ ระเบียน DNS ของโดเมนของคุณได้รับการจัดการโดยเนมเซิร์ฟเวอร์ของคุณ เนมเซิร์ฟเวอร์ของคุณอาจเป็น "ผู้รับจดทะเบียน"ที่คุณจดทะเบียนโดเมน บริการ DNS เช่น Cloud DNS หรือผู้ให้บริการบุคคลที่สามรายอื่น หากเนมเซิร์ฟเวอร์ของคุณคือ Cloud DNS: ทำตามคำแนะนำเริ่มต้นใช้งานด่วนของ Cloud DNS เพื่อกำหนดค่าระเบียน DNS A สำหรับชื่อโดเมนของคุณด้วยที่อยู่ IP ที่สงวนไว้ของแอปพลิเคชันของคุณ หากเนมเซิร์ฟเวอร์ของคุณเป็นผู้ให้บริการรายอื่น: โปรดดูเอกสารประกอบของบริการ DNS ของคุณเกี่ยวกับการตั้งค่าระเบียน DNS A เพื่อกำหนดค่าชื่อโดเมนของคุณ หากคุณเลือกใช้ Cloud DNS แทน โปรดดูที่การย้ายข้อมูลไปยัง Cloud DNS ## เยี่ยมชมชื่อโดเมนของคุณ หากต้องการตรวจสอบว่าระเบียน DNS A ของชื่อโดเมนของคุณแก้ไขเป็นที่อยู่ IP ที่คุณจองไว้ โปรดไปที่ชื่อโดเมนของคุณ ในการสร้างแบบสอบถาม DNS สำหรับระเบียน A ของชื่อโดเมนของคุณ ให้เรียกใช้ เจ้าภาพ สั่งการ: โฮสต์ example.comOutput: example.com มีที่อยู่ 203.0.113.32 ณ จุดนี้ คุณสามารถชี้เว็บเบราว์เซอร์ของคุณไปที่ชื่อโดเมนและเยี่ยมชมเว็บไซต์ของคุณได้! ## ทำความสะอาด หากต้องการหลีกเลี่ยงการเรียกเก็บเงินจากบัญชี Google Cloud ของคุณสำหรับทรัพยากรที่ใช้ในบทช่วยสอนนี้ ให้ลบโครงการที่มีทรัพยากรนั้น หรือเก็บโครงการและลบทรัพยากรแต่ละรายการ ลบทรัพยากรการทำโหลดบาลานซ์: kubectl ลบขาเข้า บริการ -l app=สวัสดี ปล่อย IP แบบคงที่ที่สงวนไว้หลังจากลบโหลดบาลานเซอร์แล้ว ที่อยู่ IP ที่ไม่ได้ใช้แต่สงวนไว้จะไม่เสียค่าใช้จ่ายอีกต่อไป และจะถูกเรียกเก็บเงินตามราคาที่อยู่ IP ที่ไม่ได้ใช้ รันคำสั่งต่อไปนี้เพื่อรีลีสทรัพยากร IP แบบคงที่: หากคุณใช้บริการ: ที่อยู่การคำนวณ gcloud ลบ helloweb-ip --region us-central1 หากคุณใช้ Ingress: ที่อยู่การคำนวณ gcloud ลบ helloweb-ip --global - ลบแอปพลิเคชันตัวอย่าง: kubectl ลบ -f helloweb-deployment.yaml รอจนกว่าโหลดบาลานเซอร์จะถูกลบโดยดูผลลัพธ์ของคำสั่งต่อไปนี้ ผลลัพธ์ไม่ควรแสดงกฎการส่งต่อที่มี "helloweb"ในชื่อ: รายการกฎการส่งต่อการคำนวณ gcloud ลบคลัสเตอร์คอนเทนเนอร์: คลัสเตอร์คอนเทนเนอร์ gcloud ลบการทดสอบโดเมน ## อะไรต่อไป จดทะเบียนชื่อโดเมนของคุณเองผ่าน Google Domains สำรวจบทแนะนำ Kubernetes Engine อื่นๆ สำรวจสถาปัตยกรรมอ้างอิง ไดอะแกรม บทแนะนำ และแนวทางปฏิบัติที่ดีที่สุดเกี่ยวกับ Google Cloud ดูที่ Cloud Architecture Center ของเรา