0Pricing
Helm Academy · บทเรียน

งานย้ายฐานข้อมูลแบบ pre-upgrade

ใส่คำอธิบายกำกับให้ Job ทำงานก่อนการนำระบบออกใช้

งานย้ายฐานข้อมูลแบบ pre-upgrade เป็นบทเรียน Helm Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Helm Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Helm Academy มีบทเรียนทั้งหมด 4 บทเรียน

กรณีใช้งานจริง

ก่อนนำโค้ดแอปใหม่ออกใช้งาน สคีมาฐานข้อมูลของคุณมักต้องได้รับการย้ายก่อน ฮุก pre-upgrade เป็นจุดที่เหมาะอย่างยิ่งสำหรับการเรียกใช้การย้ายสคีมาอย่างปลอดภัย

เหตุผลที่ต้องทำก่อนนำออกใช้งาน

การทำงานเป็น pre-upgrade หมายความว่าสคีมาจะพร้อมก่อนพ็อดใหม่เริ่มทำงาน โค้ดใหม่จึงไม่ต้องติดต่อกับฐานข้อมูลเก่าที่มีโครงสร้างไม่ตรงกัน

"helm.sh/hook": pre-upgrade

เริ่มด้วย Job

การย้ายสคีมาจะทำงานหนึ่งครั้งแล้วจบลง ดังนั้นให้สร้างแบบจำลองเป็น Kubernetes Job Helm จะรอให้ Job ทำงานเสร็จก่อนดำเนินการอัปเกรดต่อ

apiVersion: batch/v1
kind: Job
metadata:
  name: db-migrate

เพิ่มคำอธิบายกำกับฮุก

กำหนดให้ Job เป็นฮุกในเมทาดาทา คำอธิบายกำกับ helm.sh/hook ที่ตั้งค่าเป็น pre-upgrade จะเปลี่ยน Job ปกตินี้ให้เป็นฮุก

metadata:
  annotations:
    "helm.sh/hook": pre-upgrade

เรียกใช้คำสั่งย้ายสคีมา

คอนเทนเนอร์ของ Job จะเรียกใช้เครื่องมือย้ายสคีมาของคุณ ให้ชี้ไปยังฐานข้อมูลเดียวกับที่แอปใช้ เพื่อให้การเปลี่ยนแปลงสคีมาเกิดขึ้นในที่ที่ถูกต้อง

spec:
  containers:
    - name: migrate
      image: myapp:1.4
      command: ["./migrate", "up"]

อย่ารีสตาร์ตเมื่อเกิดข้อผิดพลาด

ตั้งค่า restartPolicy ของ Job เป็น Never หรือ OnFailure การย้ายสคีมาที่วนซ้ำไม่สิ้นสุดจะขัดขวางการอัปเกรดและไม่ยอมให้ Helm ดำเนินการต่อ

spec:
  template:
    spec:
      restartPolicy: Never

สร้างแท็กอิมเมจด้วยเทมเพลต

ทำให้เครื่องมือย้ายสคีมาใช้เวอร์ชันเดียวกับแอปด้วยการสร้างแท็กผ่านเทมเพลต ใช้ .Values.image.tag เดียวกับที่การนำไปใช้งานอ่าน เพื่อให้เวอร์ชันตรงกัน

image: "myapp:{{ .Values.image.tag }}"

Helm หยุดรอจนกว่าจะเสร็จ

เนื่องจากเป็นฮุก pre-upgrade Helm จะหยุดการอัปเกรดไว้จนกว่า Job จะรายงานความสำเร็จ หากการย้ายสคีมาล้มเหลว การนำออกใช้งานจะไม่เกิดขึ้น 🛑

ล้างข้อมูลหลังสำเร็จ

มิฉะนั้น Job สำหรับการย้ายสคีมาเก่าจะสะสมเพิ่มขึ้น ให้จับคู่ฮุกกับ hook-delete-policy เพื่อให้ลบ Job ที่ทำงานสำเร็จแล้ว แทนที่จะปล่อยให้เนมสเปซรก

"helm.sh/hook-delete-policy": hook-succeeded

ชื่อที่ไม่ซ้ำช่วยได้

Job ของฮุกจะเปลี่ยนแปลงไม่ได้หลังสร้างแล้ว ดังนั้นชื่อคงที่อาจชนกันในการอัปเกรดครั้งถัดไป การใส่ .Release.Revision ไว้ในชื่อจะทำให้การทำงานแต่ละครั้งแยกจากกัน

name: db-migrate-{{ .Release.Revision }}

ทดสอบด้วยการจำลองการทำงาน

ก่อนอัปเกรดจริง ให้เรนเดอร์ชาร์ตเพื่อยืนยันว่าฮุกมีลักษณะถูกต้อง dry-run จะแสดงแม니เฟสต์ Job ที่ Helm จะสร้างโดยไม่แตะต้องคลัสเตอร์

helm upgrade myapp ./mychart --dry-run

ตรวจสอบอย่างรวดเร็ว

คุณต้องการให้การย้ายสคีมาทำงานก่อนพ็อดแอปใหม่จะเริ่มทำงานระหว่างการอัปเกรด

ทบทวน

คุณสร้างแบบจำลองการย้ายสคีมาเป็น Job แบบ pre-upgrade ตั้งค่า restartPolicy เป็น Never และให้ Helm หยุดรอจนกว่าจะสำเร็จก่อนนำโค้ดใหม่ออกใช้งาน 🗄️

คำถามที่พบบ่อย

บทเรียน “งานย้ายฐานข้อมูลแบบ pre-upgrade” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “งานย้ายฐานข้อมูลแบบ pre-upgrade” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Helm Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Helm Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “งานย้ายฐานข้อมูลแบบ pre-upgrade”

ใส่คำอธิบายกำกับให้ Job ทำงานก่อนการนำระบบออกใช้ คุณปฏิบัติ Helm Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Helm Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Helm Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “งานย้ายฐานข้อมูลแบบ pre-upgrade” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Helm Academy นี้ได้ไหม

ได้ บทเรียน Helm Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. Hook คืออะไรและทำงานเมื่อใด
  2. งานย้ายฐานข้อมูลแบบ pre-upgrade
  3. น้ำหนักและลำดับของ Hook
  4. นโยบายการลบ Hook
← กลับไปที่ Helm Academy