0Pricing
DevOps Bootcamp · บทเรียน

ส่ง Scope เข้า Named Template

ส่งออบเจ็กต์บริบทที่ถูกต้องให้กับ Partial

ส่ง Scope เข้า Named Template เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

เทมเพลตย่อยต้องมีบริบท

เทมเพลตที่ตั้งชื่อไว้จะอ่านได้เฉพาะสิ่งที่คุณส่งให้เท่านั้น อาร์กิวเมนต์ตัวที่สองของ include คือขอบเขต หรือจุดที่เทมเพลตย่อยจะมองเห็นจากภายใน

{{ include "mychart.labels" . }}

จุดคือขอบเขต

จุดที่อยู่ท้ายสุดนั้นคือ บริบท ปัจจุบัน การส่งจุดรากทำให้เทมเพลตย่อยเข้าถึง .Values, .Release และ .Chart ได้

การลืมขอบเขตทำให้การทำงานเสียหาย

หากคุณเรียกใช้เทมเพลตย่อยโดยไม่ส่งขอบเขต จุดของเทมเพลตจะกลายเป็น nil การอ้างอิง .Values ภายในจึงแสดงผลเป็นค่าว่างหรือเกิดข้อผิดพลาด

{{ include "mychart.name" }}

การส่งบริบทระดับราก

ตัวช่วยส่วนใหญ่ต้องการบริบทของ chart ทั้งหมด ดังนั้นคุณจึงส่งจุดแบบธรรมดา นี่คือค่าเริ่มต้นที่ปลอดภัยและทำให้ตัวช่วยมาตรฐานทำงานได้

{{ include "mychart.fullname" . }}

การส่งออบเจ็กต์ย่อย

บางครั้งเทมเพลตย่อยต้องการค่าเพียงส่วนเดียว คุณสามารถส่ง โครงสร้างย่อย ให้เทมเพลตได้ เพื่อให้จุดชี้ไปยังส่วนนั้นโดยตรง

{{ include "mychart.ports" .Values.service }}

ภายในนั้น จุดจะเปลี่ยนไป

เมื่อคุณส่ง .Values.service จุดของเทมเพลตย่อยจะกลายเป็นออบเจ็กต์นั้นทันที จึงอ่าน .port ได้โดยตรง ไม่ต้องใช้ .Values.service.port อีกต่อไป

{{- define "mychart.ports" -}}
port: {{ .port }}
{{- end -}}

ตั้งใจละทิ้งราก

การจำกัดขอบเขตมีประโยชน์ แต่จะตัดการเข้าถึง .Release และค่าระดับสากล เทมเพลตย่อยจะมองเห็นเฉพาะออบเจ็กต์ที่คุณส่งให้เท่านั้น

ส่งทั้งสองอย่างด้วย dict

ต้องการทั้งโครงสร้างย่อยและรากใช่ไหม ให้สร้าง dict ขนาดเล็กแล้วส่งเข้าไป จากนั้นจึงเข้าถึงแต่ละส่วนด้วยคีย์ของส่วนนั้นภายในเทมเพลตย่อย

{{ include "mychart.tpl" (dict "top" . "svc" .Values.service) }}

อ่านขอบเขตที่รวมไว้

ภายในเทมเพลตย่อย ให้แยกข้อมูลจาก dict ตามคีย์ ตอนนี้คุณจะมีรากผ่าน .top และมีโครงสร้างย่อยผ่าน .svc ซึ่งใช้งานพร้อมกันได้

{{- define "mychart.tpl" -}}
name: {{ .top.Release.Name }}
port: {{ .svc.port }}
{{- end -}}

ข้อผิดพลาดเกี่ยวกับขอบเขตเกิดขึ้นบ่อย

ข้อผิดพลาดคลาสสิกคือเทมเพลตย่อยอ่าน .Release.Name แต่ถูกเรียกใช้ด้วยขอบเขตที่ถูกจำกัดไว้ ควรตรวจสอบเสมอว่าคุณส่งบริบทใดไปจริง ๆ

แสดงผลเพื่อตรวจสอบขอบเขต

เรียกใช้ helm template . และยืนยันว่าผลลัพธ์ของเทมเพลตย่อยมีข้อมูลครบถ้วน ฟิลด์ว่างมักหมายความว่าส่งขอบเขตที่ไม่ถูกต้องไปยังเทมเพลตย่อย

helm template my-release .

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

เทมเพลตย่อยต้องการทั้งโครงสร้างย่อยและ .Release.Name คุณจะส่งทั้งสองอย่างให้เทมเพลตได้อย่างไร

สรุป: การส่งขอบเขต

อาร์กิวเมนต์หลังชื่อเทมเพลตย่อยจะกำหนดจุดของเทมเพลตนั้น คุณสามารถส่งจุดราก โครงสร้างย่อย หรือใช้ dict เพื่อรวมทั้งสองอย่างเข้าด้วยกัน หากขอบเขตไม่ถูกต้อง ผลลัพธ์ก็จะว่างเปล่า 🎯

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

บทเรียน “ส่ง Scope เข้า Named Template” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ส่ง Scope เข้า Named Template”

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

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

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

บทเรียน “ส่ง Scope เข้า Named Template” ใช้เวลานานแค่ไหน

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

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

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

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

  1. กำหนด Partial ด้วย define
  2. แทรก Partial ด้วย template และ include
  3. ตัวช่วย Fullname และ Labels มาตรฐาน
  4. ส่ง Scope เข้า Named Template
← กลับไปที่ DevOps Bootcamp