ConfigMaps สำหรับการกำหนดค่า
แยกการกำหนดค่าแอปพลิเคชันออกจากอิมเมจคอนเทนเนอร์โดยใช้ ConfigMaps
ConfigMaps สำหรับการกำหนดค่า เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
บทนำสู่ ConfigMaps
แอปพลิเคชันมักต้องใช้ข้อมูลการกำหนดค่า เช่น สตริงการเชื่อมต่อฐานข้อมูลหรือแฟล็กคุณลักษณะ
การฝังข้อมูลเหล่านี้ไว้โดยตรงในอิมเมจคอนเทนเนอร์อาจทำให้อิมเมจปรับเปลี่ยนได้ยากและอัปเดตลำบาก
ConfigMaps ช่วยให้คุณแยกการกำหนดค่าที่ไม่ใช่ข้อมูลละเอียดอ่อนของแอปพลิเคชันออกมาไว้ภายนอกและรวมศูนย์ ทำให้อิมเมจมีความยืดหยุ่น
ConfigMap คืออะไร
ConfigMap คือออบเจ็กต์ Kubernetes ที่ใช้จัดเก็บ ข้อมูลที่ไม่ใช่ข้อมูลละเอียดอ่อน ในรูปแบบคู่คีย์-ค่า
ให้คิดว่าเป็นศูนย์กลางสำหรับการตั้งค่าแอปพลิเคชัน ซึ่งพ็อดของคุณสามารถเข้าถึงได้
- แยกการกำหนดค่า: แยกการกำหนดค่าออกจากโค้ดแอปพลิเคชัน
- ความยืดหยุ่น: เปลี่ยนการตั้งค่าได้ง่ายโดยไม่ต้องสร้างอิมเมจใหม่
- การเคลื่อนย้าย: ย้ายแอปไปมาระหว่างสภาพแวดล้อมที่มีการกำหนดค่าต่างกันได้
การสร้าง ConfigMaps: แบบ命令
คุณสามารถสร้าง ConfigMap ได้อย่างรวดเร็วโดยตรงจากบรรทัดคำสั่งด้วย kubectl create configmap
วิธีนี้เหมาะสำหรับการกำหนดค่าแบบง่าย ๆ ที่ใช้เพียงครั้งเดียว หรือการทดสอบอย่างรวดเร็ว
มาสร้าง ConfigMap ชื่อ my-app-config พร้อมการตั้งค่าระดับบันทึกกัน
kubectl create configmap my-app-config \
--from-literal=log_level=INFOการตรวจสอบ ConfigMap
หลังจากสร้าง ConfigMap แล้ว คุณสามารถดูรายละเอียดและตรวจสอบเนื้อหาได้
ใช้ kubectl get ร่วมกับแฟล็ก -o yaml เพื่อดูคำจำกัดความ YAML ทั้งหมด รวมถึงข้อมูลที่จัดเก็บไว้ภายใน
kubectl get configmap my-app-config -o yamlConfigMap แบบประกาศ (YAML)
สำหรับการใช้งานจริงและการควบคุมเวอร์ชัน แนวทางมาตรฐานคือการกำหนด ConfigMaps โดยใช้ไฟล์กำกับ YAML
แนวทางนี้ทำให้การกำหนดค่าของคุณสร้างซ้ำได้เหมือนเดิมและจัดการได้ง่ายควบคู่ไปกับโค้ดแอปพลิเคชัน
ต่อไปนี้คือตัวอย่าง YAML สำหรับการกำหนดค่าของเกม
apiVersion: v1
kind: ConfigMap
metadata:
name: game-config
data:
game.properties: |
level=easy
player_limit=10
ui.properties: |
theme=dark
language=enการใช้ ConfigMap จาก YAML
หากต้องการสร้าง ConfigMap game-config ให้บันทึกเนื้อหา YAML จากฉากก่อนหน้าลงในไฟล์ (เช่น game-config.yaml)
จากนั้นใช้ kubectl apply -f เพื่อติดตั้งลงในคลัสเตอร์ของคุณ
# Save the YAML to game-config.yaml
kubectl apply -f game-config.yaml
kubectl get configmap game-config -o yamlConfigMaps ในรูปแบบตัวแปรสภาพแวดล้อม
วิธีทั่วไปที่พ็อดจะนำข้อมูลจาก ConfigMap ไปใช้ คือการฉีดข้อมูลเป็นตัวแปรสภาพแวดล้อม
คุณสามารถระบุคีย์แต่ละรายการที่จะเปิดเผย หรือใช้ envFrom เพื่อเปิดเผยคู่คีย์-ค่าทั้งหมดจาก ConfigMap
วิธีนี้เหมาะสำหรับการตั้งค่าแอปพลิเคชันแบบง่าย
apiVersion: v1
kind: Pod
metadata:
name: my-env-pod
spec:
containers:
- name: my-container
image: busybox
command: ["sh", "-c", "echo Log Level: $LOG_LEVEL && sleep 3600"]
env:
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: my-app-config
key: log_levelสาธิต: พ็อดพร้อมการกำหนดค่าสภาพแวดล้อม
มารันคำจำกัดความของพ็อดเพื่อดูตัวแปรสภาพแวดล้อม LOG_LEVEL ทำงานกัน
บันทึก YAML ของพ็อดลงใน env-pod.yaml ใช้งาน แล้วตรวจสอบบันทึกของพ็อด
# Save Pod YAML to env-pod.yaml
kubectl apply -f env-pod.yaml
kubectl logs my-env-pod
# Clean up
kubeclt delete pod my-env-podConfigMaps ในรูปแบบโวลุมที่เมานต์
สำหรับแอปพลิเคชันที่ต้องใช้ไฟล์การกำหนดค่า (เช่น nginx.conf, application.properties) คุณสามารถเมานต์ ConfigMap เป็นโวลุมได้
คู่คีย์-ค่าแต่ละคู่ใน ConfigMap จะกลายเป็นไฟล์ภายในเส้นทางเมานต์ที่ระบุในคอนเทนเนอร์
apiVersion: v1
kind: Pod
metadata:
name: my-volume-pod
spec:
containers:
- name: my-container
image: busybox
command: ["sh", "-c", "echo 'Contents of game.properties:' && cat /etc/config/game.properties && sleep 3600"]
volumeMounts:
- name: config-volume
mountPath: /etc/config
volumes:
- name: config-volume
configMap:
name: game-configสาธิต: พ็อดพร้อมการกำหนดค่าที่เมานต์
ตอนนี้มาปรับใช้พ็อดที่เมานต์ ConfigMap game-config ของเราเป็นโวลุมกัน
บันทึก YAML ของพ็อดลงใน volume-pod.yaml ใช้งาน แล้วตรวจสอบบันทึกเพื่อดูเนื้อหาของไฟล์ที่เมานต์
# Save Pod YAML to volume-pod.yaml
kubectl apply -f volume-pod.yaml
kubectl logs my-volume-pod
# Clean up
kubeclt delete pod my-volume-podตรวจสอบความเข้าใจอย่างรวดเร็ว: ConfigMaps
ข้อความใดต่อไปนี้เกี่ยวกับ Kubernetes ConfigMaps ที่ถูกต้อง
สรุป: ConfigMaps
ทำได้ดีมาก คุณได้เรียนรู้แล้วว่า ConfigMaps ช่วยจัดการการกำหนดค่าใน Kubernetes ได้อย่างไร
- จุดประสงค์: จัดเก็บข้อมูลการกำหนดค่าที่ไม่ใช่ข้อมูลละเอียดอ่อนในรูปแบบคู่คีย์-ค่า
- การสร้าง: สร้างแบบ命令ด้วย
kubectl createหรือสร้างแบบประกาศด้วย YAML - การนำไปใช้: ใช้เป็นตัวแปรสภาพแวดล้อมหรือไฟล์ที่เมานต์ภายในพ็อด
- ประโยชน์: แยกการกำหนดค่าออกจากโค้ดแอปพลิเคชัน ทำให้มีความยืดหยุ่นมากขึ้น
ต่อไป เราจะสำรวจวิธีจัดการข้อมูลละเอียดอ่อนอย่างปลอดภัยด้วย Secrets ของ Kubernetes
คำถามที่พบบ่อย
บทเรียน “ConfigMaps สำหรับการกำหนดค่า” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ConfigMaps สำหรับการกำหนดค่า” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ConfigMaps สำหรับการกำหนดค่า”
แยกการกำหนดค่าแอปพลิเคชันออกจากอิมเมจคอนเทนเนอร์โดยใช้ ConfigMaps คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “ConfigMaps สำหรับการกำหนดค่า” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม
ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ConfigMaps สำหรับการกำหนดค่า
- Secrets สำหรับข้อมูลละเอียดอ่อน
- โวลุมถาวรและคำขอใช้โวลุม
- StorageClasses และการจัดสรรแบบพลวัต