1. ภาพรวม
แล็บนี้สาธิตฟีเจอร์และความสามารถที่ออกแบบมาเพื่อปรับปรุงเวิร์กโฟลว์การพัฒนาสำหรับวิศวกรซอฟต์แวร์ที่ได้รับมอบหมายให้พัฒนาแอปพลิเคชัน Python ในสภาพแวดล้อมที่มีคอนเทนเนอร์ การพัฒนาคอนเทนเนอร์โดยทั่วไปกำหนดให้ผู้ใช้ต้องเข้าใจรายละเอียดของคอนเทนเนอร์และกระบวนการบิลด์คอนเทนเนอร์ นอกจากนี้ โดยปกติแล้ว นักพัฒนาซอฟต์แวร์จะต้องหยุดโฟลว์การทำงาน ย้ายออกจาก IDE เพื่อทดสอบและแก้ไขข้อบกพร่องของแอปพลิเคชันในสภาพแวดล้อมระยะไกล เครื่องมือและเทคโนโลยีที่กล่าวถึงในบทแนะนำนี้ช่วยให้นักพัฒนาแอปทำงานกับแอปพลิเคชันที่อยู่ในคอนเทนเนอร์ได้อย่างมีประสิทธิภาพโดยไม่ต้องออกจาก IDE

Cloud Workstations คืออะไร
Cloud Workstations มีสภาพแวดล้อมการพัฒนาที่มีการจัดการใน Google Cloud พร้อมการรักษาความปลอดภัยในตัวและสภาพแวดล้อมการพัฒนาที่กำหนดค่าไว้ล่วงหน้าแต่ปรับแต่งได้ เข้าถึง Cloud Workstations ผ่าน IDE บนเบราว์เซอร์ จากโปรแกรมแก้ไขโค้ดในเครื่องหลายโปรแกรม (เช่น VSCode หรือ IDE ของ JetBrains เช่น IntelliJ IDEA Ultimate และ PyCharm Professional) หรือผ่าน SSH
Cloud Workstations ใช้ทรัพยากรต่อไปนี้
- ผู้ดูแลระบบสร้างคลัสเตอร์เวิร์กสเตชัน
- ในคลัสเตอร์เวิร์กสเตชันแต่ละคลัสเตอร์ ผู้ดูแลระบบจะสร้างการกำหนดค่าเวิร์กสเตชันอย่างน้อย 1 รายการ ซึ่งทำหน้าที่เป็นเทมเพลตสำหรับเวิร์กสเตชัน
- นักพัฒนาซอฟต์แวร์สามารถสร้างเวิร์กสเตชันที่กำหนดสภาพแวดล้อมในการพัฒนาซึ่งมี Cloud IDE, เครื่องมือภาษา, ไลบรารี และอื่นๆ
Cloud Workstations ช่วยให้ผู้ดูแลระบบ IT และความปลอดภัยจัดสรร ปรับขนาด จัดการ และรักษาความปลอดภัยของสภาพแวดล้อมการพัฒนาได้อย่างง่ายดาย รวมถึงช่วยให้นักพัฒนาซอฟต์แวร์เข้าถึงสภาพแวดล้อมการพัฒนาด้วยการกำหนดค่าที่สอดคล้องกันและเครื่องมือที่ปรับแต่งได้
Cloud Workstations ช่วยในการเปลี่ยนความปลอดภัยไปทางซ้ายด้วยการปรับปรุงระดับความปลอดภัยของสภาพแวดล้อมการพัฒนาแอปพลิเคชัน โดยมีฟีเจอร์ด้านความปลอดภัย เช่น การควบคุมบริการ VPC, ขาเข้าหรือขาออกส่วนตัว, การบังคับอัปเดตรูปภาพ และนโยบายการเข้าถึง Identity and Access Management
Cloud Code คืออะไร
Cloud Code รองรับ IDE สำหรับวงจรการพัฒนาแอปพลิเคชัน Kubernetes และ Cloud Run ทั้งหมด ตั้งแต่การสร้างและปรับแต่งแอปพลิเคชันใหม่จากเทมเพลตตัวอย่างไปจนถึงการเรียกใช้แอปพลิเคชันที่เสร็จสมบูรณ์ Cloud Code ช่วยคุณตลอดเส้นทางการพัฒนาด้วยตัวอย่างที่พร้อมใช้งาน ข้อมูลโค้ดการกำหนดค่าสำเร็จรูป และประสบการณ์การแก้ไขข้อบกพร่องที่ปรับแต่งมาโดยเฉพาะ ซึ่งจะช่วยให้การพัฒนาด้วย Kubernetes และ Cloud Run ง่ายขึ้นมาก
ฟีเจอร์บางส่วนของ Cloud Code มีดังนี้
- สร้างและเรียกใช้แอปพลิเคชันอย่างต่อเนื่อง
- การสนับสนุนการแก้ไขข้อบกพร่องสำหรับแอปพลิเคชัน Kubernetes ที่อยู่ระหว่างการพัฒนา
- การสตรีมและการดูบันทึก
ดูข้อมูลเพิ่มเติมเกี่ยวกับฟีเจอร์อื่นๆ ของ Cloud Code
สิ่งที่คุณจะได้เรียนรู้
ในแล็บนี้ คุณจะได้เรียนรู้วิธีการพัฒนาด้วยคอนเทนเนอร์ใน GCP ซึ่งรวมถึง
- ตรวจสอบ Cloud Workstations
- เปิดเวิร์กสเตชัน
- ตรวจสอบ Cloud Code
- แก้ไขข้อบกพร่องใน Kubernetes
2. การตั้งค่าและข้อกำหนด
การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง
- ลงชื่อเข้าใช้ Google Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี



- ชื่อโปรเจ็กต์คือชื่อที่แสดงสำหรับผู้เข้าร่วมโปรเจ็กต์นี้ ซึ่งเป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ โดยคุณจะอัปเดตได้ทุกเมื่อ
- รหัสโปรเจ็กต์จะไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมดและเปลี่ยนแปลงไม่ได้ (เปลี่ยนไม่ได้หลังจากตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ซึ่งโดยปกติแล้วคุณไม่จำเป็นต้องสนใจว่าสตริงนั้นคืออะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (โดยปกติจะระบุเป็น
PROJECT_ID) หากไม่ชอบรหัสที่สร้างขึ้น คุณก็สร้างรหัสแบบสุ่มอีกรหัสหนึ่งได้ หรือคุณจะลองใช้ชื่อของคุณเองเพื่อดูว่าพร้อมใช้งานหรือไม่ก็ได้ คุณจะเปลี่ยนแปลงรหัสนี้หลังจากขั้นตอนนี้ไม่ได้ และรหัสจะยังคงอยู่ตลอดระยะเวลาของโปรเจ็กต์ - โปรดทราบว่ายังมีค่าที่ 3 ซึ่งคือหมายเลขโปรเจ็กต์ที่ API บางตัวใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 นี้ได้ในเอกสารประกอบ
- จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของ Cloud การทำตาม Codelab นี้ไม่ควรมีค่าใช้จ่ายมากนัก หรืออาจไม่มีเลย หากต้องการปิดทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่สร้างขึ้นหรือลบทั้งโปรเจ็กต์ได้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD
การตั้งค่าสภาพแวดล้อม
ใน Cloud Shell ให้ตั้งค่ารหัสโปรเจ็กต์และหมายเลขโปรเจ็กต์สำหรับโปรเจ็กต์ บันทึกเป็นตัวแปร PROJECT_ID และ PROJECT_ID
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID \
--format='value(projectNumber)')
ในแล็บนี้ คุณจะได้ติดตั้งใช้งานโค้ดใน GKE นอกจากนี้ คุณยังใช้เวิร์กสเตชันระบบคลาวด์เป็น IDE ได้ด้วย
สคริปต์การตั้งค่าด้านล่างจะเตรียมโครงสร้างพื้นฐานนี้ให้คุณ
- ดาวน์โหลดสคริปต์การตั้งค่าและทำให้สคริปต์ใช้งานได้
wget https://raw.githubusercontent.com/GoogleCloudPlatform/container-developer-workshop/main/labs/python/setup_with_cw.sh
chmod +x setup_with_cw.sh
- เปิดไฟล์
setup_with_cw.shแล้วแก้ไขค่าของรหัสผ่านที่ตั้งค่าเป็น CHANGEME ในปัจจุบัน - เรียกใช้สคริปต์การตั้งค่าเพื่อสร้างคลัสเตอร์ GKE ที่คุณจะใช้ในแล็บนี้ การตั้งค่านี้จะใช้เวลาประมาณ 20 นาที
./setup_with_cw.sh &
- เปิด Cloud Workstations ใน Cloud Console รอให้คลัสเตอร์อยู่ในสถานะ
READYก่อนทำขั้นตอนถัดไป - หากเซสชัน Cloud Shell ถูกตัดการเชื่อมต่อ ให้คลิก "เชื่อมต่ออีกครั้ง" แล้วเรียกใช้คำสั่ง gcloud CLI เพื่อตั้งค่ารหัสโปรเจ็กต์ แทนที่รหัสโปรเจ็กต์ตัวอย่างด้านล่างด้วยรหัสโปรเจ็กต์ Qwiklabs ของคุณก่อนเรียกใช้คำสั่ง
gcloud config set project qwiklabs-gcp-project-id
- ดาวน์โหลดและเรียกใช้สคริปต์ด้านล่างในเทอร์มินัลเพื่อสร้างการกำหนดค่า Cloud Workstations
wget https://raw.githubusercontent.com/GoogleCloudPlatform/container-developer-workshop/main/labs/python/workstation_config_setup.sh
chmod +x workstation_config_setup.sh
./workstation_config_setup.sh
คลัสเตอร์และการกำหนดค่า Cloud Workstations
เปิด Cloud Workstations ใน Cloud Console ตรวจสอบว่าคลัสเตอร์อยู่ในสถานะ READY

ตรวจสอบสถานะของการกำหนดค่าที่มีอยู่

สร้างเวิร์กสเตชันใหม่

เปลี่ยนชื่อเป็น my-workstation แล้วเลือกการกำหนดค่าที่มีอยู่: codeoss-python

เปิดเวิร์กสเตชัน
- เริ่มและเปิดตัวเวิร์กสเตชัน ระบบจะใช้เวลาสักครู่ในการเริ่มเวิร์กสเตชัน

- อนุญาตคุกกี้ของบุคคลที่สามโดยคลิกไอคอนในแถบที่อยู่


- คลิก "เว็บไซต์ไม่ทำงานใช่ไหม"

- คลิก "อนุญาตคุกกี้"

- เมื่อเปิดตัวเวิร์กสเตชันแล้ว คุณจะเห็น IDE ของ Code OSS ปรากฏขึ้น
คลิก "ทำเครื่องหมายว่าเสร็จสิ้น" ในหน้าเริ่มต้นใช้งาน IDE ของเวิร์กสเตชัน

3. ภาพรวม Cloud Code
ตรวจสอบส่วนต่างๆ ที่มีใน Cloud Code
- การพัฒนา Kubernetes รับสภาพแวดล้อมการพัฒนาและการแก้ไขข้อบกพร่องของ Kubernetes ที่ผสานรวมอย่างเต็มรูปแบบภายใน IDE สร้างและจัดการคลัสเตอร์ได้โดยตรงจากภายใน IDE
- แก้ไขข้อบกพร่องของแอปพลิเคชันที่ทำงานอยู่ แก้ไขข้อบกพร่องของโค้ดภายใน IDE โดยใช้ Cloud Code สำหรับ VS Code และ Cloud Code สำหรับ IntelliJ โดยใช้ประโยชน์จากฟีเจอร์การแก้ไขข้อบกพร่องของ IDE ในตัว
- สำรวจการติดตั้งใช้งาน ดูทรัพยากรพื้นฐานและข้อมูลเมตาสำหรับคลัสเตอร์ Kubernetes และบริการ Cloud Run คุณสามารถดึงข้อมูลคำอธิบาย ดูบันทึก จัดการข้อมูลลับ หรือรับเทอร์มินัลลงในพ็อดได้โดยตรง
- ลดความซับซ้อนของการพัฒนา Kubernetes ในเครื่อง เบื้องหลัง Cloud Code สำหรับ IDE ใช้เครื่องมือยอดนิยม เช่น Skaffold, Jib และ kubectl เพื่อให้ความคิดเห็นเกี่ยวกับโค้ดของคุณอย่างต่อเนื่องแบบเรียลไทม์

ลงชื่อเข้าใช้ Google Cloud
- คลิกไอคอน Cloud Code แล้วเลือก "ลงชื่อเข้าใช้ Google Cloud"

- คลิก "ไปลงชื่อเข้าใช้"

- ตรวจสอบเอาต์พุตในเทอร์มินัลและเปิดลิงก์

- เข้าสู่ระบบด้วยข้อมูลเข้าสู่ระบบของนักเรียน Qwiklabs

- เลือก "อนุญาต"

- คัดลอกรหัสยืนยันแล้วกลับไปที่แท็บเวิร์กสเตชัน

- วางรหัสยืนยันแล้วกด Enter

คลิกปุ่ม "อนุญาต" หากเห็นข้อความนี้ เพื่อให้คุณคัดลอกและวางลงในเวิร์กสเตชันได้

4. สร้างแอปพลิเคชันเริ่มต้น Python ใหม่
ในส่วนนี้ คุณจะได้สร้างแอปพลิเคชัน Python ใหม่
- เปิดเทอร์มินัลใหม่

- สร้างไดเรกทอรีใหม่และเปิดเป็นพื้นที่ทำงาน
mkdir music-service && cd music-service
code-oss-cloud-workstations -r --folder-uri="$PWD"
- สร้างไฟล์ชื่อ
requirements.txtแล้วคัดลอกเนื้อหาต่อไปนี้ลงในไฟล์

Flask
gunicorn
ptvsd==4.3.2
- สร้างไฟล์ชื่อ
app.pyแล้ววางโค้ดต่อไปนี้ลงในไฟล์
import os
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route("/")
def hello_world():
message="Hello, World!"
return message
if __name__ == '__main__':
server_port = os.environ.get('PORT', '8080')
app.run(debug=False, port=server_port, host='0.0.0.0')
- สร้างไฟล์ชื่อ
Dockerfileแล้ววางข้อความต่อไปนี้ลงในไฟล์
FROM python:3.8
ARG FLASK_DEBUG=0
ENV FLASK_DEBUG=$FLASK_DEBUG
ENV FLASK_APP=app.py
WORKDIR /app
COPY requirements.txt .
RUN pip install --trusted-host pypi.python.org -r requirements.txt
COPY . .
ENTRYPOINT ["python3", "-m", "flask", "run", "--port=8080", "--host=0.0.0.0"]
หมายเหตุ: FLASK_DEBUG=1 ช่วยให้คุณโหลดการเปลี่ยนแปลงโค้ดไปยังแอป Flask ของ Python โดยอัตโนมัติได้ Dockerfile นี้ช่วยให้คุณส่งค่านี้เป็นอาร์กิวเมนต์การสร้างได้
สร้างไฟล์ Manifest
ในเทอร์มินัล ให้เรียกใช้คำสั่งต่อไปนี้เพื่อสร้าง skaffold.yaml และ deployment.yaml เริ่มต้น
- เริ่มต้น Skaffold ด้วยคำสั่งต่อไปนี้
skaffold init --generate-manifests
เมื่อได้รับข้อความแจ้ง ให้ใช้ลูกศรเพื่อเลื่อนเคอร์เซอร์และใช้แป้นเว้นวรรคเพื่อเลือกตัวเลือก
เลือก:
8080สำหรับพอร์ตyเพื่อบันทึกการกำหนดค่า
อัปเดตการกำหนดค่า Skaffold
- เปลี่ยนชื่อแอปพลิเคชันเริ่มต้น
- เปิด
skaffold.yaml - เลือกชื่อรูปภาพที่ตั้งเป็น
dockerfile-imageในปัจจุบัน - คลิกขวาแล้วเลือก "เปลี่ยนทุกรายการ"
- พิมพ์ชื่อใหม่เป็นภาษา
python-app - แก้ไขส่วนบิลด์เพิ่มเติมเพื่อ
- เพิ่ม
docker.buildArgsลงในบัตรFLASK_DEBUG=1 - ซิงค์การตั้งค่าเพื่อโหลดการเปลี่ยนแปลงใดๆ ในไฟล์
*.pyจาก IDE ไปยังคอนเทนเนอร์ที่ทำงานอยู่
หลังจากแก้ไขแล้ว ส่วนบิลด์ในไฟล์ skaffold.yaml จะเป็นดังนี้
build:
artifacts:
- image: python-app
docker:
buildArgs:
FLASK_DEBUG: "1"
dockerfile: Dockerfile
sync:
infer:
- '**/*.py'
แก้ไขไฟล์การกำหนดค่า Kubernetes
- เปลี่ยนชื่อเริ่มต้น
- เปิดไฟล์
deployment.yaml - เลือกชื่อรูปภาพที่ตั้งเป็น
dockerfile-imageในปัจจุบัน - คลิกขวาแล้วเลือก "เปลี่ยนทุกรายการ"
- พิมพ์ชื่อใหม่เป็นภาษา
python-app
5. การเดินผ่านกระบวนการพัฒนา
เมื่อเพิ่มตรรกะทางธุรกิจแล้ว คุณจะสามารถนําไปใช้และทดสอบแอปพลิเคชันได้ ส่วนต่อไปนี้จะแสดงการใช้ปลั๊กอิน Cloud Code ปลั๊กอินนี้ทำงานร่วมกับ Skaffold เพื่อเพิ่มประสิทธิภาพกระบวนการพัฒนา เมื่อคุณทําการติดตั้งใช้งานใน GKE ในขั้นตอนต่อไปนี้ Cloud Code และ Skaffold จะสร้างอิมเมจคอนเทนเนอร์ พุชไปยัง Container Registry แล้วติดตั้งใช้งานyourแอปพลิเคชันใน GKE โดยอัตโนมัติ ซึ่งจะเกิดขึ้นเบื้องหลังโดยซ่อนรายละเอียดจากขั้นตอนการทำงานของนักพัฒนาแอป
เพิ่มคลัสเตอร์ Kubernetes
- เพิ่มคลัสเตอร์

- เลือก Google Kubernetes Engine

- เลือกโปรเจ็กต์

- เลือก "python-cluster" ที่สร้างขึ้นในการตั้งค่าเริ่มต้น

- ตอนนี้คลัสเตอร์จะปรากฏในรายการคลัสเตอร์ Kubernetes ในส่วน Cloud Code ไปยังส่วนต่างๆ และสำรวจคลัสเตอร์จากที่นี่

ทําให้ใช้งานได้ใน Kubernetes
- เลือก Cloud Code  ในบานหน้าต่างที่ด้านล่างของ Cloud Shell Editor

- เลือกเรียกใช้ใน Kubernetes ในแผงที่ปรากฏที่ด้านบน
หากได้รับข้อความแจ้ง ให้เลือก "ใช่" เพื่อใช้บริบท Kubernetes ปัจจุบัน

คำสั่งนี้จะเริ่มการสร้างซอร์สโค้ดแล้วจึงเรียกใช้การทดสอบ การสร้างและการทดสอบจะใช้เวลาสักครู่ การทดสอบเหล่านี้รวมถึงการทดสอบหน่วยและขั้นตอนการตรวจสอบที่ตรวจสอบกฎที่ตั้งค่าไว้สำหรับสภาพแวดล้อมการติดตั้งใช้งาน ขั้นตอนการตรวจสอบนี้ได้รับการกำหนดค่าไว้แล้ว และจะช่วยให้คุณได้รับคำเตือนเกี่ยวกับปัญหาในการทำให้ใช้งานได้แม้ว่าคุณจะยังทำงานในสภาพแวดล้อมในการพัฒนาซอฟต์แวร์อยู่ก็ตาม
- เมื่อเรียกใช้คำสั่งเป็นครั้งแรก ข้อความแจ้งจะปรากฏที่ด้านบนของหน้าจอเพื่อถามว่าคุณต้องการใช้บริบท Kubernetes ปัจจุบันหรือไม่ ให้เลือก "ใช่" เพื่อยอมรับและใช้บริบทปัจจุบัน
- จากนั้นระบบจะแสดงข้อความแจ้งเพื่อถามว่าควรใช้รีจิสทรีคอนเทนเนอร์ใด กด Enter เพื่อยอมรับค่าเริ่มต้นที่ระบุ
- เลือกแท็บ "เอาต์พุต" ในบานหน้าต่างด้านล่างเพื่อดูความคืบหน้าและการแจ้งเตือน ใช้เมนูแบบเลื่อนลงเพื่อเลือก "Kubernetes: เรียกใช้/แก้ไขข้อบกพร่อง"

- เลือก "Kubernetes: เรียกใช้/แก้ไขข้อบกพร่อง - โดยละเอียด" ในเมนูแบบเลื่อนลงของช่องทางทางด้านขวาเพื่อดูรายละเอียดเพิ่มเติมและบันทึกที่สตรีมแบบสดจากคอนเทนเนอร์

เมื่อสร้างและทดสอบเสร็จแล้ว บันทึกของแท็บเอาต์พุตจะมี URL http://localhost:8080 แสดงอยู่ในมุมมอง "Kubernetes: เรียกใช้/แก้ไขข้อบกพร่อง"
- ในเทอร์มินัล Cloud Code ให้วางเมาส์เหนือ URL แรกในเอาต์พุต (http://localhost:8080) จากนั้นเลือก "เปิดตัวอย่างเว็บ" ในเคล็ดลับเครื่องมือที่ปรากฏขึ้น
- แท็บเบราว์เซอร์ใหม่จะเปิดขึ้นและแสดงข้อความ
Hello, World!
Hot Reload
- เปิดไฟล์
app.py - เปลี่ยนข้อความทักทายเป็น
Hello from Python
สังเกตได้ทันทีว่าในOutputหน้าต่างKubernetes: Run/Debugมุมมอง ผู้สังเกตการณ์จะซิงค์ไฟล์ที่อัปเดตกับคอนเทนเนอร์ใน Kubernetes
Update initiated Build started for artifact python-app Build completed for artifact python-app Deploy started Deploy completed Status check started Resource pod/python-app-6f646ffcbb-tn7qd status updated to In Progress Resource deployment/python-app status updated to In Progress Resource deployment/python-app status completed successfully Status check succeeded ...
- หากเปลี่ยนไปใช้
Kubernetes: Run/Debug - Detailedมุมมอง คุณจะเห็นว่าระบบจดจำการเปลี่ยนแปลงไฟล์ จากนั้นจะสร้างและติดตั้งแอปใหม่
files modified: [app.py]
Syncing 1 files for gcr.io/veer-pylab-01/python-app:3c04f58-dirty@sha256:a42ca7250851c2f2570ff05209f108c5491d13d2b453bb9608c7b4af511109bd
Copying files:map[app.py:[/app/app.py]]togcr.io/veer-pylab-01/python-app:3c04f58-dirty@sha256:a42ca7250851c2f2570ff05209f108c5491d13d2b453bb9608c7b4af511109bd
Watching for changes...
[python-app] * Detected change in '/app/app.py', reloading
[python-app] * Restarting with stat
[python-app] * Debugger is active!
[python-app] * Debugger PIN: 744-729-662
- รีเฟรชแท็บเบราว์เซอร์ที่คุณเห็นผลลัพธ์ก่อนหน้าเพื่อดูผลลัพธ์ที่อัปเดตแล้ว
การแก้ไขข้อบกพร่อง
- ไปที่มุมมองการแก้ไขข้อบกพร่องและหยุดเธรดปัจจุบัน
หากระบบขอ คุณสามารถเลือกทำความสะอาดหลังจากการเรียกใช้แต่ละครั้งได้ 
- คลิก
Cloud Codeในเมนูด้านล่าง แล้วเลือกDebug on Kubernetesเพื่อเรียกใช้แอปพลิเคชันในโหมดdebug

- ใน
Kubernetes Run/Debug - DetailedมุมมองของOutputหน้าต่าง ให้สังเกตว่า Skaffold จะนำแอปพลิเคชันนี้ไปใช้งานในโหมดแก้ไขข้อบกพร่อง
- เมื่อเรียกใช้เป็นครั้งแรก ระบบจะแสดงข้อความแจ้งเพื่อถามว่าแหล่งที่มาอยู่ตรงไหนในคอนเทนเนอร์ ค่านี้เกี่ยวข้องกับไดเรกทอรีใน Dockerfile
กด Enter เพื่อยอมรับค่าเริ่มต้น

การสร้างและทำให้แอปพลิเคชันใช้งานได้จะใช้เวลา 2-3 นาที หากเซสชันการแก้ไขข้อบกพร่องถูกตัดการเชื่อมต่อ ให้เรียกใช้ขั้นตอนเพื่อ "แก้ไขข้อบกพร่องใน Kubernetes" อีกครั้งจากส่วน "เซสชันการพัฒนา"
- เมื่อกระบวนการเสร็จสมบูรณ์ คุณจะเห็นดีบักเกอร์ที่แนบมาและแท็บเอาต์พุตระบุว่า
Attached debugger to container "python-app-8476f4bbc-h6dsl" successfully.และ URL http://localhost:8080 แสดงอยู่
Port forwarding pod/python-app-8bd64cf8b-cskfl in namespace default, remote port 5678 -> http://127.0.0.1:5678
- แถบสถานะด้านล่างจะเปลี่ยนสีจากสีน้ำเงินเป็นสีส้มเพื่อระบุว่าอยู่ในโหมดแก้ไขข้อบกพร่อง

- ใน
Kubernetes Run/Debugให้สังเกตว่ามีการเริ่มคอนเทนเนอร์ที่แก้ไขข้อบกพร่องได้
**************URLs***************** Forwarded URL from service python-app: http://localhost:8080 Debuggable container started pod/python-app-8bd64cf8b-cskfl:python-app (default) Update succeeded ***********************************
ใช้เบรกพอยท์
- เปิดไฟล์
app.py - ค้นหาข้อความที่ระบุว่า
return message - เพิ่มเบรกพอยต์ในบรรทัดนั้นโดยคลิกพื้นที่ว่างทางด้านซ้ายของหมายเลขบรรทัด ตัวบ่งชี้สีแดงจะแสดงขึ้นเพื่อระบุว่าได้ตั้งค่าเบรกพอยต์แล้ว
- โหลดเบราว์เซอร์ซ้ำและสังเกตว่าโปรแกรมแก้ไขข้อบกพร่องจะหยุดกระบวนการที่เบรกพอยท์และช่วยให้คุณตรวจสอบตัวแปรและสถานะของแอปพลิเคชันที่ทำงานจากระยะไกลใน GKE ได้
- คลิกส่วนตัวแปร
- คลิก Locals แล้วคุณจะเห็นตัวแปร
"message" - ดับเบิลคลิกชื่อตัวแปร "message" แล้วเปลี่ยนค่าในป๊อปอัปเป็นค่าอื่น เช่น
"Greetings from Python" - คลิกปุ่ม "ดำเนินการต่อ" ในแผงควบคุมการแก้ไขข้อบกพร่อง

- ตรวจสอบการตอบกลับในเบราว์เซอร์ ซึ่งตอนนี้จะแสดงค่าที่อัปเดตที่คุณเพิ่งป้อน
- หยุดโหมด "แก้ไขข้อบกพร่อง" โดยกดปุ่มหยุด
และนำเบรกพอยท์ออกโดยคลิกเบรกพอยท์อีกครั้ง
6. ล้างข้อมูล
ยินดีด้วย ในแล็บนี้ คุณได้สร้างแอปพลิเคชัน Python ใหม่ตั้งแต่ต้นและกำหนดค่าให้ทำงานร่วมกับคอนเทนเนอร์ได้อย่างมีประสิทธิภาพ จากนั้นคุณได้ทําการทำให้ใช้งานได้และแก้ไขข้อบกพร่องของแอปพลิเคชันไปยังคลัสเตอร์ GKE ระยะไกลตามโฟลว์ของนักพัฒนาซอฟต์แวร์เดียวกันกับที่พบในสแต็กแอปพลิเคชันแบบดั้งเดิม
วิธีล้างข้อมูลหลังจากทำแล็บเสร็จ
- ลบไฟล์ที่ใช้ในห้องทดลอง
cd ~ && rm -rf ~/music-service
- ลบโปรเจ็กต์เพื่อนำโครงสร้างพื้นฐานและทรัพยากรที่เกี่ยวข้องทั้งหมดออก
—
อัปเดตล่าสุด: 22/3/23