กำหนด Scope ของบล็อกด้วย with
จำกัดจุดให้เหลือเพียงทรีย่อยและทำความเข้าใจข้อควรระวัง
กำหนด Scope ของบล็อกด้วย with เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
หยุดการเขียนเส้นทางยาวซ้ำ ๆ
การพิมพ์ .Values.image.repository ซ้ำแล้วซ้ำเล่าทำให้โค้ดดูยุ่งยาก คำสั่ง with จะจำกัดจุดให้ชี้ไปยังโครงสร้างย่อย ทำให้คุณเขียนเส้นทางที่สั้นลงได้
คำสั่ง with
บล็อก with เริ่มต้นด้วย {{ with SOMETHING }} และปิดท้ายด้วย {{ end }} ภายในบล็อกนี้ จุดจะถูกตั้งใหม่ให้เป็นค่าที่คุณส่งเข้าไป
{{ with .Values.image }}
repository: {{ .repository }}
tag: {{ .tag }}
{{ end }}จุดเคลื่อนเข้าไปด้านใน
เมื่ออยู่ภายใน .repository จะหมายถึง .Values.image.repository คีย์เวิร์ด with จะผูกจุดใหม่ให้ชี้ไปยังโครงสร้างย่อย จึงตัดเส้นทางทุกส่วนที่อยู่ต่ำกว่านั้นออก
image:
repository: nginx
tag: "1.27"ทำหน้าที่เป็นตัวป้องกันได้ด้วย
หากค่าเป็น ค่าว่าง หรือไม่มีอยู่ with จะข้ามทั้งบล็อก ดังนั้นคำสั่งนี้จึงทั้งกำหนดขอบเขตของจุดและทำหน้าที่เหมือน if ไปพร้อมกัน 🛡️
การเพิ่ม else
เช่นเดียวกับ if, with รองรับสาขา else โดยจะแสดงผลเมื่อค่าว่าง ทำให้มีทางเลือกสำรองที่เป็นระเบียบสำหรับการกำหนดค่าเสริม
{{ with .Values.resources }}
resources:
{{ toYaml . | indent 2 }}
{{ else }}
# no resources set
{{ end }}จุดพลาดเรื่องขอบเขต
นี่คือจุดที่มักพลาด: ภายใน with จุดจะไม่ใช่บริบทหลักอีกต่อไป ดังนั้น .Release.Name จึงใช้ไม่ได้ เพราะ Release ไม่ได้อยู่ภายใต้ทรีย่อยนั้น
ย้อนกลับไปยังบริบทหลักด้วย $
หากต้องการใช้ค่าจากบริบทหลักภายใน with ให้เติม $ ไว้ข้างหน้า เครื่องหมายดอลลาร์จะชี้ไปยังบริบทหลักเดิมเสมอ ไม่ว่าคุณจะอยู่ลึกลงไปแค่ไหน
{{ with .Values.image }}
name: {{ $.Release.Name }}
image: {{ .repository }}
{{ end }}ทำให้บล็อกมีขนาดเล็ก
เนื่องจาก with เปลี่ยนความหมายของจุด บล็อกขนาดใหญ่จึงทำให้สับสนได้อย่างรวดเร็ว ควรทำให้ส่วน with สั้น เพื่อให้เห็นได้ชัดว่าจุดชี้ไปที่ใด
with กับ if
ใช้ if เมื่อคุณต้องการทดสอบเพียงแฟล็ก และใช้ with เมื่อคุณต้องการเจาะเข้าไปในค่านั้นด้วย with จะเปลี่ยนจุด ส่วน if จะไม่เปลี่ยน
ดูตัวอย่างขอบเขต
ไม่แน่ใจว่าจุดเก็บอะไรไว้หรือไม่ ให้แสดงผลด้วย helm template แล้วอ่านผลลัพธ์ หรือพิมพ์ขอบเขตขณะกำลังแก้ไขบล็อก with ที่ซับซ้อน
helm template ./mychartการซ้อนบล็อก with
คุณสามารถซ้อน with ไว้ภายในอีก with หนึ่งเพื่อเจาะลึกลงไปได้ แต่ละระดับจะเลื่อน จุด ลงไปอีกหนึ่งขั้น จึงควรติดตามให้ดีว่าขณะนั้นอยู่ที่ใด
{{ with .Values.image }}
{{ with .pullSecrets }}
# . is now pullSecrets
{{ end }}
{{ end }}ตรวจสอบอย่างรวดเร็ว
ภายในบล็อก {{ with .Values.image }} คุณพยายามอ่าน .Release.Name แต่ผลลัพธ์กลับเป็นค่าว่าง
สรุป
ตอนนี้คุณสามารถกำหนดขอบเขตของจุดด้วย with ได้ตัวตรวจสอบค่าว่างโดยอัตโนมัติ เพิ่มทางเลือกสำรองด้วย else และย้อนกลับไปยังบริบทหลักด้วย $ ได้แล้ว เทมเพลตสะอาดขึ้นมาก! 🎯
เรียนรู้ DevOps Bootcamp ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 142
- บทเรียน
- 568
คำถามที่พบบ่อย
บทเรียน “กำหนด Scope ของบล็อกด้วย with” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “กำหนด Scope ของบล็อกด้วย with” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “กำหนด Scope ของบล็อกด้วย with”
จำกัดจุดให้เหลือเพียงทรีย่อยและทำความเข้าใจข้อควรระวัง คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “กำหนด Scope ของบล็อกด้วย with” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม
ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- บล็อกเงื่อนไขด้วย if และ else
- ค่าความจริงและตัวดำเนินการในเงื่อนไข
- วนซ้ำรายการและแผนที่ด้วย range
- กำหนด Scope ของบล็อกด้วย with