1. ภาพรวม
ห้องทดลองนี้แสดงให้เห็นฟีเจอร์และความสามารถที่ออกแบบมาเพื่อปรับปรุงเวิร์กโฟลว์การพัฒนาสำหรับวิศวกรซอฟต์แวร์ที่ได้รับมอบหมายให้พัฒนาแอปพลิเคชัน Python ในสภาพแวดล้อมที่สร้างโดยใช้คอนเทนเนอร์ การพัฒนาคอนเทนเนอร์ทั่วไปกำหนดให้ผู้ใช้ทำความเข้าใจรายละเอียดของคอนเทนเนอร์และกระบวนการสร้างคอนเทนเนอร์ นอกจากนี้ นักพัฒนาซอฟต์แวร์มักต้องแยกขั้นตอนของตนเองโดยย้ายออกจาก IDE เพื่อทดสอบและแก้ไขข้อบกพร่องแอปพลิเคชันในสภาพแวดล้อมระยะไกล ด้วยเครื่องมือและเทคโนโลยีที่กล่าวถึงในบทแนะนำนี้ นักพัฒนาซอฟต์แวร์สามารถทำงานได้อย่างมีประสิทธิภาพกับแอปพลิเคชันที่สร้างโดยใช้คอนเทนเนอร์โดยไม่ต้องออกจาก IDE
เวิร์กสเตชันระบบคลาวด์คืออะไร
Cloud Workstations มอบสภาพแวดล้อมการพัฒนาที่มีการจัดการบน Google Cloud พร้อมการรักษาความปลอดภัยในตัวและสภาพแวดล้อมการพัฒนาที่ปรับแต่งได้ซึ่งกำหนดค่าไว้ล่วงหน้า เข้าถึงเวิร์กสเตชันระบบคลาวด์ผ่าน IDE บนเบราว์เซอร์ จากตัวแก้ไขโค้ดภายในเครื่องหลายรายการ (เช่น VSCode หรือ JetBrains IDE เช่น IntelliJ IDEA Ultimate และ PyCharm Professional) หรือผ่าน SSH
Cloud Workstations ใช้ทรัพยากรต่อไปนี้
- ผู้ดูแลระบบสร้างคลัสเตอร์เวิร์กสเตชัน
- ในคลัสเตอร์เวิร์กสเตชันแต่ละรายการ ผู้ดูแลระบบจะสร้างการกำหนดค่าเวิร์กสเตชันอย่างน้อย 1 รายการซึ่งทำหน้าที่เป็นเทมเพลตสำหรับเวิร์กสเตชัน
- นักพัฒนาซอฟต์แวร์สามารถสร้างเวิร์กสเตชันที่ระบุสภาพแวดล้อมในการพัฒนาซอฟต์แวร์ โดยมี Cloud IDE, เครื่องมือภาษา, ไลบรารี และอื่นๆ
Cloud Workstations ช่วยให้ผู้ดูแลระบบไอทีและการรักษาความปลอดภัยสามารถจัดสรร ปรับขนาด จัดการ และรักษาความปลอดภัยของสภาพแวดล้อมในการพัฒนาซอฟต์แวร์ได้อย่างง่ายดาย รวมถึงช่วยให้นักพัฒนาซอฟต์แวร์เข้าถึงสภาพแวดล้อมในการพัฒนาซอฟต์แวร์ได้ด้วยการกำหนดค่าที่สอดคล้องกันและเครื่องมือที่ปรับแต่งได้
เวิร์กสเตชันของระบบคลาวด์จะช่วยเปลี่ยนการรักษาความปลอดภัยที่เหลืออยู่โดยปรับปรุงระดับความปลอดภัยของสภาพแวดล้อมการพัฒนาแอปพลิเคชันของคุณ ซึ่งจะมีฟีเจอร์ความปลอดภัย เช่น การควบคุมบริการ VPC, ข้อมูลขาเข้าหรือขาออกส่วนตัว, การอัปเดตรูปภาพแบบบังคับ และนโยบายการเข้าถึงการจัดการข้อมูลประจำตัวและการเข้าถึง
Cloud Code คืออะไร
Cloud Code ให้การสนับสนุน IDE สำหรับรอบการพัฒนาแอปพลิเคชัน Kubernetes และแอปพลิเคชัน Cloud Run อย่างเต็มรูปแบบ ตั้งแต่การสร้างและปรับแต่งแอปพลิเคชันใหม่จากเทมเพลตตัวอย่างไปจนถึงการเรียกใช้แอปพลิเคชันที่เสร็จสิ้นแล้ว Cloud Code ช่วยเหลือคุณไปพร้อมกันด้วยตัวอย่างที่เรียกใช้ได้ทันที ข้อมูลโค้ดการกำหนดค่าที่พร้อมใช้งานทันที และประสบการณ์การแก้ไขข้อบกพร่องที่ปรับแต่งมาโดยเฉพาะ ทำให้การพัฒนาด้วย Kubernetes และ Cloud Run เป็นเรื่องง่ายขึ้นมาก
ฟีเจอร์บางส่วนของ Cloud Code มีดังนี้
- สร้างและเรียกใช้แอปพลิเคชันอย่างต่อเนื่อง
- การสนับสนุนการแก้ไขข้อบกพร่องสำหรับแอปพลิเคชัน Kubernetes ที่อยู่ระหว่างการพัฒนา
- บันทึกสตรีมมิงและการดู
ดูข้อมูลเพิ่มเติมเกี่ยวกับฟีเจอร์อื่นๆ ของ Cloud Code
สิ่งที่คุณจะได้เรียนรู้
ในห้องทดลองนี้ คุณจะได้เรียนรู้วิธีการพัฒนาด้วยคอนเทนเนอร์ใน GCP ดังต่อไปนี้
- ตรวจสอบเวิร์กสเตชันระบบคลาวด์
- เปิดเวิร์กสเตชัน
- ตรวจสอบโค้ดของ Cloud
- แก้ไขข้อบกพร่องใน Kubernetes
2. การตั้งค่าและข้อกำหนด
การตั้งค่าสภาพแวดล้อมตามเวลาที่สะดวก
- ลงชื่อเข้าใช้ Google Cloud Console และสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี
- ชื่อโครงการคือชื่อที่แสดงของผู้เข้าร่วมโปรเจ็กต์นี้ เป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ โดยคุณจะอัปเดตได้ทุกเมื่อ
- รหัสโปรเจ็กต์จะไม่ซ้ำกันในทุกโปรเจ็กต์ของ Google Cloud และจะเปลี่ยนแปลงไม่ได้ (เปลี่ยนแปลงไม่ได้หลังจากตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ปกติแล้วคุณไม่สนว่าอะไรเป็นอะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (โดยปกติจะระบุเป็น
PROJECT_ID
) หากคุณไม่ชอบรหัสที่สร้างขึ้น คุณสามารถสร้างรหัสแบบสุ่มอื่นได้ หรือคุณจะลองดำเนินการเองแล้วดูว่าพร้อมให้บริการหรือไม่ และไม่สามารถเปลี่ยนแปลงได้หลังจากขั้นตอนนี้และจะยังคงอยู่ตลอดระยะเวลาของโปรเจ็กต์ - สำหรับข้อมูลของคุณ ค่าที่ 3 คือหมายเลขโปรเจ็กต์ที่ API บางตัวใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 ค่าได้ในเอกสารประกอบ
- ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของระบบคลาวด์ การใช้งาน 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 Console ตรวจสอบว่าคลัสเตอร์อยู่ในสถานะ READY
ยืนยันสถานะของการกำหนดค่าที่มีอยู่
สร้างเวิร์กสเตชันใหม่
เปลี่ยนชื่อเป็น my-workstation
และเลือกการกำหนดค่าที่มีอยู่: codeoss-python
เปิดเวิร์กสเตชัน
- เริ่มและเปิดตัวเวิร์กสเตชัน การเริ่มเวิร์กสเตชันจะใช้เวลาสักครู่
- อนุญาตคุกกี้ของบุคคลที่สามได้โดยคลิกไอคอนในแถบที่อยู่
- คลิก "เว็บไซต์ไม่ทำงาน?"
- คลิก "อนุญาตคุกกี้"
- เมื่อเปิดตัวเวิร์กสเตชันแล้ว คุณจะเห็น Code OSS IDE ปรากฏขึ้น
คลิก "ทำเครื่องหมายว่าเสร็จสิ้น" ในหน้าเริ่มต้นใช้งาน 1 เวิร์กสเตชัน IDE
3. ภาพรวมโค้ดของระบบคลาวด์
ตรวจสอบส่วนต่างๆ ที่มีใน 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 ให้คุณโหลดการเปลี่ยนแปลงโค้ดซ้ำโดยอัตโนมัติในแอปขวดแก้ว 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 Shell Editor ให้เลือก Cloud Code
- เลือกเรียกใช้บน Kubernetes ในแผงที่ปรากฏขึ้นด้านบน
หากได้รับข้อความแจ้ง ให้เลือกใช่เพื่อใช้บริบท Kubernetes ปัจจุบัน
คำสั่งนี้จะเริ่มต้นบิลด์ของซอร์สโค้ดแล้วทำการทดสอบ บิลด์และการทดสอบจะใช้เวลา 2-3 นาที การทดสอบเหล่านี้ประกอบด้วยการทดสอบ 1 หน่วยและขั้นตอนการตรวจสอบซึ่งจะตรวจสอบกฎที่ตั้งไว้สำหรับสภาพแวดล้อมการติดตั้งใช้งาน มีการกำหนดค่าขั้นตอนการตรวจสอบความถูกต้องนี้แล้ว เพื่อให้แน่ใจว่าคุณจะได้รับคำเตือนเกี่ยวกับปัญหาการทำให้ใช้งานได้แม้ว่าคุณยังคงทำงานในสภาพแวดล้อมการพัฒนาของคุณ
- ครั้งแรกที่คุณเรียกใช้คำสั่ง ระบบจะแสดงข้อความแจ้งที่ด้านบนของหน้าจอเพื่อถามว่าคุณต้องการบริบท Kubernetes ปัจจุบันหรือไม่ ให้เลือก "ใช่" เพื่อยอมรับและใช้บริบทปัจจุบัน
- ต่อไปจะมีข้อความแจ้งถามว่าจะใช้รีจิสทรีคอนเทนเนอร์ใด กด Enter เพื่อยอมรับค่าเริ่มต้นที่ระบุ
- เลือก "เอาต์พุต" ในแผงด้านล่างเพื่อดูความคืบหน้าและการแจ้งเตือน ในการใช้เมนูแบบเลื่อนลง ให้เลือก "Kubernetes: เรียกใช้/แก้ไขข้อบกพร่อง"
- เลือก "Kubernetes: เรียกใช้/แก้ไขข้อบกพร่อง - แบบละเอียด" ในเมนูแบบเลื่อนลงของช่องทางด้านขวาเพื่อดูรายละเอียดเพิ่มเติม และบันทึกที่สตรีมแบบสดจากคอนเทนเนอร์
เมื่อบิลด์และทดสอบเสร็จสิ้นแล้ว บันทึกแท็บเอาต์พุตจะมี URL http://localhost:8080 แสดงอยู่ใน "Kubernetes: Run/Debug"
- ในเทอร์มินัล Cloud Code ให้วางเมาส์เหนือ URL แรกในเอาต์พุต (http://localhost:8080) แล้วเลือก "เปิดตัวอย่างเว็บ" ในเคล็ดลับเครื่องมือที่ปรากฏขึ้น
- แท็บเบราว์เซอร์ใหม่จะเปิดขึ้นและแสดงข้อความว่า:
Hello, World!
โหลดซ้ำแบบ Hot
- เปิดไฟล์
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 ได้
- คลิกลงในส่วน "ตัวแปร"
- คลิก "ในเครื่อง" แล้วคุณจะพบตัวแปร
"message"
- ดับเบิลคลิกชื่อตัวแปร "message" และเปลี่ยนค่าเป็นอย่างอื่น เช่น
"Greetings from Python"
ในป๊อปอัป - คลิกปุ่ม "ดำเนินการต่อ" ในแผงควบคุมการแก้ไขข้อบกพร่อง
- ตรวจสอบคำตอบในเบราว์เซอร์ ซึ่งตอนนี้จะแสดงค่าที่อัปเดตที่คุณเพิ่งป้อน
- หยุด "แก้ไขข้อบกพร่อง" โดยกดปุ่มหยุด
และนำเบรกพอยท์ออกโดยคลิกที่เบรกพอยท์อีกครั้ง
6. ล้างข้อมูล
ยินดีด้วย ในห้องทดลองนี้ คุณได้สร้างแอปพลิเคชัน Python ใหม่ตั้งแต่ต้นและกำหนดค่าให้ทำงานกับคอนเทนเนอร์ได้อย่างมีประสิทธิภาพ จากนั้นคุณได้ทำให้แอปพลิเคชันใช้งานได้และแก้ไขข้อบกพร่องของแอปพลิเคชันไปยังคลัสเตอร์ GKE ระยะไกลตามกระบวนการของนักพัฒนาซอฟต์แวร์เดียวกันที่พบในสแต็กแอปพลิเคชันแบบดั้งเดิมแล้ว
วิธีทำความสะอาดหลังจบห้องทดลอง
- ลบไฟล์ที่ใช้ในห้องทดลอง
cd ~ && rm -rf ~/music-service
- ลบโปรเจ็กต์เพื่อนำโครงสร้างพื้นฐานและทรัพยากรที่เกี่ยวข้องทั้งหมดออก
—
อัปเดตครั้งล่าสุด: 22/3/23