การสร้างแม่แบบทรัพยากร Kubernetes Secret
การเรนเดอร์ออบเจ็กต์ Secret โดยไม่เปิดเผยค่า
การสร้างแม่แบบทรัพยากร Kubernetes Secret เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
ชาร์ตสร้าง Secret ได้
บางครั้งชาร์ตของคุณต้องสร้างออบเจ็กต์ Kubernetes Secret เอง หากทำอย่างระมัดระวัง คุณสามารถสร้างเทมเพลตของออบเจ็กต์นี้โดยไม่ทำให้ค่ารั่วไหล
รูปแบบแมนนิเฟสต์ของ Secret
Kubernetes Secret เป็นเพียงแมนนิเฟสต์ที่มีส่วนข้อมูล ค่าทุกค่าภายใต้ data ต้องเป็นข้อความที่แปลงเป็น Base64 แล้ว
apiVersion: v1
kind: Secret
metadata:
name: db-credentialsแปลงข้อมูลด้วย b64enc
ภายใต้ data ให้แปลงค่าแต่ละค่า ตัวช่วยของ Sprig อย่าง b64enc จะแปลงสตริงข้อความธรรมดาเป็นรูปแบบ Base64 ที่ Kubernetes ต้องการ
data:
password: {{ .Values.password | b64enc }}ใช้ stringData เพื่อข้ามการแปลงรหัส
ควรใช้ stringData เมื่อคุณต้องการหลีกเลี่ยงการเรียกใช้ b64enc ด้วยตนเอง Kubernetes จะแปลงค่าเหล่านั้นให้คุณที่ฝั่งเซิร์ฟเวอร์
stringData:
password: {{ .Values.password | quote }}การแปลงรหัสยังไม่ใช่ข้อมูลลับ
โปรดจำไว้ว่าค่าที่สร้างออกมาในแมนนิเฟสต์เป็นเพียงค่าที่แปลงรหัสแล้ว ผู้ใดก็ตามที่อ่านค่ากลับมาได้ก็สามารถถอดรหัสได้ทันที
อย่าพิมพ์ค่าใน NOTES
การรั่วไหลที่พบได้บ่อยคือการแสดงค่าใน NOTES.txt ให้แสดงวิธีดึงค่าแทน เพื่อไม่ให้ข้อความธรรมดาปรากฏในผลลัพธ์ของคำสั่ง
นำ Secret ที่มีอยู่แล้วกลับมาใช้
ยิ่งไปกว่านั้น ให้ผู้ใช้ระบุ existingSecret ที่สร้างไว้นอกกระบวนการของชาร์ต เพื่อให้ชาร์ตของคุณไม่เคยได้รับค่าจริงเลย
{{- if not .Values.existingSecret }}
kind: Secret
{{- end }}require ค่าที่จำเป็น
เมื่อข้อมูลลับเป็นสิ่งที่จำเป็นจริง ๆ ฟังก์ชัน required จะหยุดการสร้างผลลัพธ์พร้อมแสดงข้อความที่ชัดเจนหากไม่มีค่า
password: {{ required "password is required" .Values.password | b64enc }}เมานต์ อย่าฝังค่าไว้โดยตรง
ให้พ็อดอ่าน Secret ผ่าน secretKeyRef หรือโวลุมที่เมานต์ไว้ แทนการฝังค่าโดยตรงลงในตัวแปรสภาพแวดล้อมของคอนเทนเนอร์
valueFrom:
secretKeyRef:
name: db-credentials
key: passwordเพิ่มแอตทริบิวต์เพื่อการหมุนเวียน
หากต้องการเริ่มพ็อดใหม่เมื่อ Secret เปลี่ยน ให้เพิ่มแอตทริบิวต์ checksum ลงในการดีพลอย เพื่อให้ค่าใหม่กระตุ้นการเริ่มต้นใหม่
checksum/secret: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }}ผสานแนวทางเข้าด้วยกัน
ชาร์ตที่แข็งแกร่งจะผสานแนวคิดต่าง ๆ เข้าด้วยกัน ได้แก่ เลือกใช้ Secret ที่มีอยู่แล้วหรือ Secret จากภายนอก แปลงรหัสเฉพาะเมื่อจำเป็น และไม่แสดงค่าซ้ำออกมา
ตรวจสอบอย่างรวดเร็ว
คุณจะให้ Kubernetes แปลงค่าเป็น Base64 ให้ได้อย่างไร
ทบทวน
คุณได้เรียนรู้วิธีสร้างเทมเพลต Secret อย่างปลอดภัย ได้แก่ แปลงค่าด้วย b64enc หรือ stringData เลือกใช้ Secret ที่มีอยู่แล้ว และไม่แสดงค่าออกมาเลย 🎉
คำถามที่พบบ่อย
บทเรียน “การสร้างแม่แบบทรัพยากร Kubernetes Secret” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การสร้างแม่แบบทรัพยากร Kubernetes Secret” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การสร้างแม่แบบทรัพยากร Kubernetes Secret”
การเรนเดอร์ออบเจ็กต์ Secret โดยไม่เปิดเผยค่า คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การสร้างแม่แบบทรัพยากร Kubernetes Secret” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม
ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เหตุใดจึงไม่ควรเก็บ Secrets ไว้ใน values.yaml
- การเข้ารหัสค่าด้วย helm-secrets และ SOPS
- การดึงข้อมูลจาก External Secrets Operators
- การสร้างแม่แบบทรัพยากร Kubernetes Secret