การแก้ไขไฟล์การกำหนดค่า YAML ด้วย yq
อ่านและแก้ไข YAML ของ Kubernetes และ CI โดยตรงด้วย yq พร้อมคงโครงสร้างและความคิดเห็นไว้
การแก้ไขไฟล์การกำหนดค่า YAML ด้วย yq เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
yq คืออะไร และเหตุใดจึงใช้กับ YAML
yq เป็นตัวประมวลผล YAML แบบบรรทัดคำสั่งที่พกพาได้ คล้ายกับที่ jq ใช้จัดการ JSON โดยช่วยให้คุณอ่าน กรอง และแก้ไขไฟล์ YAML ได้โดยไม่ต้องเขียนสคริปต์ด้วย Python หรือ Ruby
มีเครื่องมือยอดนิยมสองรายการที่ใช้ชื่อ yq:
- mikefarah/yq (Go) — มีการดูแลอย่างต่อเนื่อง รองรับ YAML, JSON, XML และ TOML บทเรียนนี้ใช้รุ่นนี้
- kislyuk/yq (Python) — ตัวหุ้ม jq สำหรับ YAML ซึ่งมีไวยากรณ์แตกต่างกัน
ติดตั้งรุ่น Go:
brew install yqบน macOSsnap install yqบน Linux- หรือดาวน์โหลดไบนารีด้วยคำสั่ง:
wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/local/bin/yq && chmod +x /usr/local/bin/yq
ตรวจสอบด้วยคำสั่ง yq --version ซึ่งควรแสดง v4.x.x รุ่น 4 ใช้ไวยากรณ์นิพจน์แตกต่างจาก v3 ดังนั้นรุ่นจึงมีความสำคัญ
# Install yq (Go version) on Linux
wget -q https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 \
-O /usr/local/bin/yq
chmod +x /usr/local/bin/yq
# Confirm version
yq --versionการอ่านค่าจาก YAML ของ Kubernetes Deployment
ก่อนแก้ไขสิ่งใด ให้เรียนรู้การ อ่าน ฟิลด์ YAML ก่อน เมื่อมี Kubernetes Deployment คุณสามารถดึงค่าที่ซ้อนกันอยู่ได้ด้วยเส้นทางแบบจุด
ตัวอย่าง deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
namespace: production
spec:
replicas: 3
template:
spec:
containers:
- name: app
image: my-app:1.0.0คำสั่งหลักสำหรับอ่านค่า:
yq '.metadata.name' deployment.yaml— แสดงผลmy-appyq '.spec.replicas' deployment.yaml— แสดงผล3yq '.spec.template.spec.containers[0].image' deployment.yaml— แสดงผลmy-app:1.0.0
โดยค่าเริ่มต้น ผลลัพธ์จะเป็นข้อความธรรมดา (ไม่มีเครื่องหมายอัญประกาศ) เพิ่มแฟล็ก -r หรือใช้ | yq -r หากต้องการสตริงดิบในสคริปต์
# Create a sample deployment YAML
cat > /tmp/deployment.yaml << 'EOF'
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
namespace: production
spec:
replicas: 3
template:
spec:
containers:
- name: app
image: my-app:1.0.0
EOF
# Read individual fields
echo "App name: $(yq '.metadata.name' /tmp/deployment.yaml)"
echo "Replicas: $(yq '.spec.replicas' /tmp/deployment.yaml)"
echo "Image: $(yq '.spec.template.spec.containers[0].image' /tmp/deployment.yaml)"การแก้ไขไฟล์โดยตรงด้วยแฟล็ก -i
แฟล็กที่สำคัญที่สุดสำหรับการใช้งานจริงคือ -i (แก้ไขโดยตรง) หากไม่ใช้แฟล็กนี้ yq จะแสดงผลลัพธ์ไปยังเอาต์พุตมาตรฐานและปล่อยไฟล์ไว้เหมือนเดิม
ไวยากรณ์:
- อ่านอย่างเดียว (เอาต์พุตมาตรฐาน):
yq '.spec.replicas' file.yaml - แก้ไขไฟล์โดยตรง:
yq -i '.spec.replicas = 5' file.yaml
ตัวดำเนินการกำหนดค่า = ใช้ตั้งค่า นิพจน์นี้เป็นตัวกรอง yq แบบเต็มรูปแบบ คุณจึงรวมการอ่านและการเขียนไว้ในการทำงานครั้งเดียวได้
สำคัญ: yq -i จะเขียนไฟล์ใหม่ทั้งหมด โดยทั่วไปความคิดเห็นที่อยู่ในบรรทัดเดียวกับฟิลด์จะยังคงอยู่ แต่กลุ่มความคิดเห็นที่อยู่เดี่ยว ๆ อาจถูกย้ายตำแหน่ง ควรบันทึก YAML เข้าสู่ระบบควบคุมเวอร์ชันก่อนแก้ไขไฟล์จำนวนมากโดยตรงเสมอ
ทดสอบโดยไม่ใช้ -i ก่อน แล้วค่อยเพิ่มแฟล็กนี้เมื่อพอใจกับผลลัพธ์
# Start with the deployment from the previous scene
echo 'Before:' && yq '.spec.replicas' /tmp/deployment.yaml
# Edit in place: scale to 5 replicas
yq -i '.spec.replicas = 5' /tmp/deployment.yaml
echo 'After:' && yq '.spec.replicas' /tmp/deployment.yamlการอัปเดตแท็กรูปภาพคอนเทนเนอร์
งาน CI ที่พบได้บ่อยมากคือ การเพิ่มแท็กของอิมเมจ Docker ในรายการกำหนดค่า Kubernetes หลังจากสร้างอิมเมจใหม่ ด้วย yq งานนี้ทำได้ด้วยคำสั่งบรรทัดเดียว
รูปแบบมีดังนี้:
- เลือกคอนเทนเนอร์ตามชื่อโดยใช้
select()เพื่อหลีกเลี่ยงการกำหนดดัชนีอาร์เรย์เป็นค่าตายตัวที่ 0 - ใช้
|=(ตัวดำเนินการอัปเดต) หรือ=เพื่อตั้งค่าใหม่
การใช้ดัชนีอาร์เรย์ (เปราะบางหากรายการคอนเทนเนอร์เปลี่ยนแปลง):
yq -i '.spec.template.spec.containers[0].image = "my-app:2.1.0"' deployment.yaml
การใช้ select() (ทนทานกว่า):
yq -i '(.spec.template.spec.containers[] | select(.name == "app")).image = "my-app:2.1.0"' deployment.yaml
ในไปป์ไลน์ CI คุณจะส่งแท็กเป็นตัวแปรของเชลล์:
NEW_TAG="my-app:2.1.0"
CONTAINER_NAME="app"
# Robust update: target by container name, not index
yq -i \
"(.spec.template.spec.containers[] | select(.name == \"${CONTAINER_NAME}\")).image = \"${NEW_TAG}\"" \
/tmp/deployment.yaml
# Verify
yq '.spec.template.spec.containers[0].image' /tmp/deployment.yamlการเพิ่มและลบฟิลด์
นอกจากการอัปเดตฟิลด์ที่มีอยู่แล้ว yq ยังสามารถ เพิ่ม คีย์ใหม่หรือ ลบ คีย์ที่มีอยู่ได้
การเพิ่มฟิลด์:
- กำหนดค่าให้เส้นทางที่ยังไม่มีอยู่ได้โดยตรง:
yq -i '.metadata.labels.version = "v2"' file.yaml - หากคีย์แม่ (
labels) ยังไม่มี yq จะสร้างให้โดยอัตโนมัติ
การลบฟิลด์:
- ใช้ฟังก์ชัน
del():yq -i 'del(.metadata.annotations)' file.yaml - ลบสมาชิกอาร์เรย์ตามดัชนี:
yq -i 'del(.spec.template.spec.containers[1])' file.yaml
การเพิ่มสมาชิกลงในอาร์เรย์:
yq -i '.spec.template.spec.containers += [{"name": "sidecar", "image": "envoy:latest"}]' file.yaml
# Add a label to the deployment
yq -i '.metadata.labels.version = "v2"' /tmp/deployment.yaml
yq -i '.metadata.labels.managed-by = "ci-pipeline"' /tmp/deployment.yaml
echo '--- Labels after adding ---'
yq '.metadata.labels' /tmp/deployment.yaml
# Delete one label
yq -i 'del(.metadata.labels.managed-by)' /tmp/deployment.yaml
echo '--- Labels after delete ---'
yq '.metadata.labels' /tmp/deployment.yamlการทำงานกับไฟล์ YAML หลายเอกสาร
รายการกำหนดค่า Kubernetes มักรวมทรัพยากรหลายรายการไว้ในไฟล์เดียว โดยคั่นด้วย --- ตามค่าเริ่มต้น yq จะประมวลผล เอกสารทั้งหมด ในไฟล์ดังกล่าว
เทคนิคสำคัญ:
- แสดงชนิดของเอกสารทั้งหมด:
yq '.[].kind' multi.yaml— สังเกต.[]ที่อยู่ด้านหน้าเพื่อวนดูเอกสาร - เลือกเอกสารตามชนิด:
yq 'select(.kind == "Service")' multi.yaml - แก้ไขเฉพาะเอกสารที่ตรงเงื่อนไขโดยตรง:
yq -i 'select(.kind == "Deployment").spec.replicas = 2' multi.yaml
เอกสารที่ไม่ตรงกับเงื่อนไขของ select() จะถูกส่งต่อโดยไม่เปลี่ยนแปลง ดังนั้น Service, ConfigMap และทรัพยากรอื่น ๆ ของคุณจะยังคงอยู่ครบถ้วน
หากต้องการแยกไฟล์หลายเอกสารเป็นไฟล์เดี่ยว คุณสามารถวนดูเอาต์พุตของ yq หรือใช้คำสั่งต่อไปนี้:
yq -s '.kind' multi.yaml— เขียนไฟล์หนึ่งไฟล์ต่อเอกสาร โดยตั้งชื่อตามค่าของ.kind
cat > /tmp/multi.yaml << 'EOF'
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
spec:
replicas: 1
---
apiVersion: v1
kind: Service
metadata:
name: web-svc
spec:
port: 80
EOF
# Scale ONLY the Deployment, leave Service untouched
yq -i 'select(.kind == "Deployment").spec.replicas = 4' /tmp/multi.yaml
echo '--- Deployment replicas ---'
yq 'select(.kind == "Deployment").spec.replicas' /tmp/multi.yaml
echo '--- Service port (unchanged) ---'
yq 'select(.kind == "Service").spec.port' /tmp/multi.yamlการแพตช์ YAML ของ GitHub Actions CI
ไฟล์การตั้งค่า CI (.github/workflows/*.yml, .gitlab-ci.yml) ก็เป็น YAML เช่นกัน คำสั่ง yq เดิมจึงใช้ได้ แต่เส้นทางอาจซ้อนกันหลายระดับ
งานแพตช์ CI ที่พบบ่อย:
- กำหนดรุ่นของตัวรัน: อัปเดต
runs-onในงานทั้งหมด - อัปเดตรุ่นของแอ็กชัน: ค้นหาขั้นตอนที่ใช้แอ็กชันหนึ่ง ๆ แล้วเพิ่มรุ่นในฟิลด์
uses - สลับแฟล็ก: เปิดหรือปิดการตั้งค่าในระดับเวิร์กโฟลว์
ตัวอย่าง: อัปเดตทุกขั้นตอนที่ใช้ actions/checkout เป็น v4:
yq -i '(.jobs[].steps[] | select(.uses == "actions/checkout@v3")).uses = "actions/checkout@v4"' .github/workflows/ci.ymlสำนวนนี้ — วนดูด้วย [] จำกัดผลด้วย select() และกำหนดค่าด้วย = — เป็นรูปแบบหลักสำหรับการแก้ไข YAML ที่มีโครงสร้างทุกชนิด
cat > /tmp/ci.yml << 'EOF'
name: CI
on: [push]
jobs:
build:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
- run: npm test
lint:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- run: npm run lint
EOF
# Bump all checkout steps from v3 → v4
yq -i '(.jobs[].steps[] | select(.uses == "actions/checkout@v3")).uses = "actions/checkout@v4"' \
/tmp/ci.yml
# Verify both jobs were updated
yq '.jobs[].steps[] | select(.uses | test("checkout")).uses' /tmp/ci.ymlการใช้ตัวแปรสภาพแวดล้อมในนิพจน์ yq
การเขียนค่าตายตัวในนิพจน์ yq ทำให้สคริปต์เปราะบาง yq รองรับการแทรกตัวแปรของเชลล์ด้วย ฟังก์ชัน env() หรือ รูปแบบย่อ strenv()
env(VAR_NAME)— อ่านตัวแปรสภาพแวดล้อมและแปลงเป็นชนิด YAML ที่เหมาะสม (ตัวเลขยังคงเป็นตัวเลข สตริงยังคงเป็นสตริง)strenv(VAR_NAME)— ส่งคืนสตริงเสมอ เหมาะสำหรับแท็กอิมเมจ
วิธีนี้ช่วยหลีกเลี่ยงปัญหาการใส่เครื่องหมายอัญประกาศเมื่อต้องแทรกตัวแปรภายในสตริงเชลล์ที่ใช้เครื่องหมายอัญประกาศคู่และมีเส้นทาง YAML อยู่ภายใน
รูปแบบ:
export IMAGE_TAG="my-app:3.0.0"
yq -i '.spec.template.spec.containers[0].image = strenv(IMAGE_TAG)' deployment.yamlใช้ env() เมื่อตั้งค่าฟิลด์ตัวเลข เช่น replicas เพื่อคงชนิดข้อมูล YAML ไว้ (เป็นจำนวนเต็ม ไม่ใช่สตริงที่มีเครื่องหมายอัญประกาศ)
export APP_IMAGE="my-app:3.0.0"
export REPLICA_COUNT=6
# Set image using strenv() — result is a YAML string
yq -i '.spec.template.spec.containers[0].image = strenv(APP_IMAGE)' \
/tmp/deployment.yaml
# Set replicas using env() — result is a YAML integer
yq -i '.spec.replicas = env(REPLICA_COUNT)' \
/tmp/deployment.yaml
# Confirm types are correct in the output
yq '.spec.replicas, .spec.template.spec.containers[0].image' /tmp/deployment.yamlการผสานไฟล์ YAML สองไฟล์
บางครั้งคุณจำเป็นต้องนำไฟล์แพตช์ (YAML สำหรับเขียนทับค่าขนาดเล็ก) ไปใช้กับการกำหนดค่าพื้นฐาน เช่น การเขียนทับค่าที่แตกต่างกันตามสภาพแวดล้อมในกระบวนการทำงานรูปแบบ Kustomize
yq สามารถผสานไฟล์สองไฟล์เข้าด้วยกันได้โดยใช้ตัวดำเนินการผสาน *:
yq '. *= load("patch.yaml")' base.yaml— ผสานแพตช์เข้ากับค่าพื้นฐานแบบลงลึก และเขียนผลลัพธ์ไปยังเอาต์พุตมาตรฐาน- เพิ่ม
-iเพื่ออัปเดตค่าพื้นฐานในไฟล์เดิม:yq -i '. *= load("patch.yaml")' base.yaml
ลักษณะการผสาน:
- ค่าชนิดสเกลาร์ในแพตช์จะเขียนทับค่าพื้นฐาน
- แมปปิงจะถูกผสานแบบลงลึก (คีย์ที่ไม่มีในแพตช์จะยังคงอยู่)
- ซีเควนซ์ (อาร์เรย์) จะถูกแทนที่ตามค่าเริ่มต้น ไม่ได้ต่อท้าย ให้ใช้
*+หากต้องการต่อท้ายแทน
รูปแบบนี้ช่วยแทนที่สคริปต์ sed ที่เปราะบางและทำงานผิดพลาดเมื่อการเว้นวรรคเปลี่ยนแปลง
cat > /tmp/base.yaml << 'EOF'
app:
name: my-service
port: 8080
debug: false
database:
host: localhost
port: 5432
EOF
cat > /tmp/patch.yaml << 'EOF'
app:
port: 9090
debug: true
database:
host: db.production.svc
EOF
# Deep-merge patch into base (stdout preview first)
yq '. *= load("/tmp/patch.yaml")' /tmp/base.yaml
# Apply in place
yq -i '. *= load("/tmp/patch.yaml")' /tmp/base.yamlการตรวจสอบ YAML และการแปลงเป็น JSON
ก่อนนำ YAML ที่ใช้แพตช์ไปใช้กับคลัสเตอร์ แนวทางปฏิบัติที่ดีคือควรตรวจสอบความถูกต้อง และเลือกแปลงเป็น JSON เพื่อใช้กับเครื่องมืออื่นได้
ตรวจสอบไวยากรณ์:
yq '.' file.yaml && echo "Valid"— yq จะจบการทำงานด้วยรหัส 1 เมื่อเกิดข้อผิดพลาดในการแยกวิเคราะห์ จึงใช้ในขั้นตอนตรวจสอบของ CI ได้
แปลง YAML เป็น JSON:
yq -o=json '.' file.yaml— แสดงผล JSON ที่จัดรูปแบบให้อ่านง่าย- ส่งต่อไปยัง
jqเพื่อประมวลผล JSON เพิ่มเติม:yq -o=json '.' file.yaml | jq '.metadata.name'
แปลง JSON เป็น YAML:
yq -P '.' file.json— แฟล็ก-Pบังคับให้เอาต์พุตเป็น YAML (จัดรูปแบบให้อ่านง่าย) เมื่ออินพุตเป็น JSON
การแปลงเหล่านี้ทำให้ yq เป็นสะพานเชื่อมระหว่างเครื่องมือที่ใช้ YAML เป็นหลัก (Helm, kubectl) กับเครื่องมือที่ใช้ JSON เป็นหลัก (Terraform, AWS CLI, jq)
# Validate YAML (exits 0 on success, 1 on parse error)
if yq '.' /tmp/deployment.yaml > /dev/null 2>&1; then
echo "YAML is valid"
else
echo "YAML parse error!" >&2
exit 1
fi
# Convert to JSON and query with jq
yq -o=json '.' /tmp/deployment.yaml \
| jq '{name: .metadata.name, image: .spec.template.spec.containers[0].image}'
# Round-trip: JSON snippet back to YAML
echo '{"replicas": 7, "strategy": "RollingUpdate"}' \
| yq -P '.'สคริปต์แพตช์การนำ CI ไปใช้งานฉบับสมบูรณ์
เมื่อนำเทคนิคทั้งหมดมารวมกัน จะได้สคริปต์ CI ที่ใช้งานได้จริงสำหรับแพตช์ไฟล์กำกับการทำงานของ Deployment ใน Kubernetes ซึ่งเป็นส่วนหนึ่งของไปป์ไลน์ GitOps
สคริปต์นี้จะ:
- ตรวจสอบ YAML อินพุตก่อนดำเนินการใด ๆ กับไฟล์
- ใช้
env()/strenv()สำหรับการแทนค่าตัวแปรทั้งหมด - อัปเดตแท็กอิมเมจของคอนเทนเนอร์โดยใช้
select()ที่อ้างอิงจากชื่อ - เพิ่มจำนวนเรพลิกา
- ประทับคำอธิบายประกอบ
deploy-timeด้วยเวลาประทับปัจจุบัน - ตรวจสอบเอาต์พุตอีกครั้งก่อนคอมมิต
รูปแบบนี้ช่วยให้มั่นใจได้ว่า แม้ไปป์ไลน์จะทำงานพร้อมกัน แต่แต่ละขั้นตอนก็เป็นการดำเนินการแบบอะตอมิกและตรวจสอบย้อนหลังได้
#!/usr/bin/env bash
set -euo pipefail
MANIFEST="/tmp/deployment.yaml"
export NEW_IMAGE="my-app:$(date +%Y%m%d)-abc1234"
export NEW_REPLICAS=3
export DEPLOY_TIME="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
export CONTAINER="app"
# 1. Validate before patching
yq '.' "$MANIFEST" > /dev/null
# 2. Update image (by container name)
yq -i \
'(.spec.template.spec.containers[] | select(.name == strenv(CONTAINER))).image = strenv(NEW_IMAGE)' \
"$MANIFEST"
# 3. Set replicas
yq -i '.spec.replicas = env(NEW_REPLICAS)' "$MANIFEST"
# 4. Stamp annotation
yq -i '.metadata.annotations."deploy-time" = strenv(DEPLOY_TIME)' "$MANIFEST"
# 5. Validate result
yq '.' "$MANIFEST" > /dev/null && echo "Patch applied successfully"
# 6. Show diff summary
yq '{image: .spec.template.spec.containers[0].image, replicas: .spec.replicas}' "$MANIFEST"ตรวจสอบความรู้: การแก้ไขหลายเอกสารอย่างปลอดภัย
ทดสอบความเข้าใจของคุณเกี่ยวกับการแก้ไขไฟล์ YAML ของ Kubernetes ที่มีหลายเอกสารด้วย yq
ทบทวนบทเรียน: การแก้ไข YAML ด้วย yq
คุณเรียนบทเรียนเรื่องการแก้ไขไฟล์การกำหนดค่า YAML ด้วย yqจบแล้ว ต่อไปนี้คือสรุปเนื้อหาทั้งหมดแบบกระชับ:
- การติดตั้ง: ใช้ไบนารี Go ของ mikefarah/yq (v4) และตรวจสอบด้วย
yq --version - การอ่าน: ใช้เส้นทางแบบจุด เช่น
.spec.replicasและเข้าถึงอาร์เรย์ด้วย[0]หรือวนซ้ำด้วย[] - การแก้ไขในไฟล์เดิม: แฟล็ก
-iจะเขียนไฟล์ใหม่ทับไฟล์เดิม ควรดูตัวอย่างผลลัพธ์โดยไม่ใช้-iก่อนเสมอ - การระบุเป้าหมายอย่างทนทาน: ควรใช้
select(.name == "app")แทนดัชนีอาร์เรย์ที่กำหนดตายตัว - การเพิ่ม / ลบ: กำหนดค่าให้เส้นทางใหม่เพื่อสร้างเส้นทางนั้น และใช้
del()เพื่อลบฟิลด์ - ไฟล์หลายเอกสาร: ใช้
select(.kind == "...")เพื่อเลือกทรัพยากรหนึ่งรายการ โดยไม่แก้ไขรายการอื่น - ตัวแปร CI: ใช้
strenv(VAR)สำหรับสตริง และenv(VAR)สำหรับค่าที่มีชนิดข้อมูล เพื่อหลีกเลี่ยงข้อผิดพลาดจากการใส่เครื่องหมายคำพูดในเชลล์ - การผสาน:
. *= load("patch.yaml")จะผสานไฟล์เขียนทับแบบลงลึกโดยไม่ทำให้คีย์ที่ไม่ได้แพตช์สูญหาย - การตรวจสอบและการแปลง: ใช้
yq '.'เป็นด่านตรวจไวยากรณ์ และใช้-o=jsonกับ-Pสำหรับแปลงรูปแบบ
รูปแบบหลักสำหรับแพตช์ YAML ใน CI คือ: ตรวจสอบ → เลือก → กำหนดค่า → ตรวจสอบ เมื่อนำไปใช้ร่วมกับ strenv() และ select() คุณก็ไม่จำเป็นต้องหันไปใช้คำสั่ง sed แบบบรรทัดเดียวที่เปราะบางอีก
คำถามที่พบบ่อย
บทเรียน “การแก้ไขไฟล์การกำหนดค่า YAML ด้วย yq” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การแก้ไขไฟล์การกำหนดค่า YAML ด้วย yq” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การแก้ไขไฟล์การกำหนดค่า YAML ด้วย yq”
อ่านและแก้ไข YAML ของ Kubernetes และ CI โดยตรงด้วย yq พร้อมคงโครงสร้างและความคิดเห็นไว้ คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การแก้ไขไฟล์การกำหนดค่า YAML ด้วย yq” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม
ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การกรองและเลือก JSON ด้วยไปป์ไลน์ jq
- การแปลงและสร้างออบเจกต์ JSON ด้วย jq
- การใช้ REST API ด้วย curl และ jq ร่วมกัน
- การแก้ไขไฟล์การกำหนดค่า YAML ด้วย yq