การนำไปใช้บน Kubernetes ด้วยแอ็กชัน
ตั้งค่าการนำส่งอย่างต่อเนื่องไปยังคลัสเตอร์ Kubernetes พร้อมจัดการการนำไปใช้และบริการโดยตรงจาก GitHub Actions
การนำไปใช้บน Kubernetes ด้วยแอ็กชัน เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
บทนำสู่การปรับใช้อย่างต่อเนื่องบน Kubernetes ด้วย GitHub Actions
ยินดีต้อนรับ! ในบทเรียนนี้ คุณจะได้เรียนรู้วิธีตั้งค่า การปรับใช้อย่างต่อเนื่อง (CD) กับคลัสเตอร์ Kubernetes โดยใช้ GitHub Actions
การทำให้การปรับใช้เป็นแบบอัตโนมัติหมายความว่า การเปลี่ยนแปลงแอปพลิเคชันของคุณจะพร้อมใช้งานจริงได้อย่างรวดเร็วและเชื่อถือได้ โดยไม่ต้องดำเนินการด้วยตนเอง
เราจะครอบคลุมการยืนยันตัวตน การนำแมนนิเฟสต์ Kubernetes ไปใช้ และการจัดการการอัปเดต
พื้นฐานสำคัญของการปรับใช้บน Kubernetes
ก่อนที่เราจะปรับใช้ มาทบทวนทรัพยากรหลักสองประเภทของ Kubernetes กันอย่างรวดเร็ว
- การปรับใช้: ทรัพยากรเหล่านี้จัดการพ็อดของแอปพลิเคชัน เพื่อให้มีเรพลิกาตามจำนวนที่ต้องการทำงานอยู่เสมอ และยังจัดการการอัปเดตกับการย้อนกลับได้ด้วย
- บริการ: ทรัพยากรเหล่านี้กำหนดวิธีเข้าถึงแอปพลิเคชันของคุณ เช่น เข้าถึงภายในคลัสเตอร์หรือเข้าถึงจากภายนอกผ่าน LoadBalancer
เป้าหมายของเราคือการนำไฟล์ YAML ที่กำหนดทรัพยากรเหล่านี้ไปใช้กับคลัสเตอร์จาก GitHub Actions
การยืนยันตัวตนของ GitHub Actions กับ Kubernetes
ในการปรับใช้ เวิร์กโฟลว์ GitHub Actions ของคุณต้องสื่อสารกับเซิร์ฟเวอร์ API ของคลัสเตอร์ Kubernetes
การดำเนินการนี้จำเป็นต้องมีการยืนยันตัวตน วิธีมาตรฐานในการยืนยันตัวตนกับ Kubernetes คือการใช้ไฟล์ kubeconfig
เราจำเป็นต้องส่งเนื้อหาของไฟล์นี้ให้รันเนอร์ของเวิร์กโฟลว์อย่างปลอดภัย
การรักษาความปลอดภัยของไฟล์ kubeconfig
ไฟล์ kubeconfig มีข้อมูลสำคัญที่ละเอียดอ่อน เช่น ปลายทางของคลัสเตอร์และข้อมูลรับรองของผู้ใช้ จึงต้องเก็บเป็นความลับ!
GitHub Actions มีฟีเจอร์ ข้อมูลลับสำหรับวัตถุประสงค์นี้ คุณจะจัดเก็บเนื้อหาของไฟล์ kubeconfig เป็นข้อมูลลับของที่เก็บโค้ด
จะรับ kubeconfig ได้อย่างไร? ขึ้นอยู่กับผู้ให้บริการ Kubernetes ของคุณ เช่น aws eks update-kubeconfig หรือ gcloud container clusters get-credentials
ตั้งค่าบริบทของ Kubernetes
เมื่อจัดเก็บ kubeconfig เป็นข้อมูลลับแล้ว (สมมติว่าเรียกว่า KUBE_CONFIG_DATA) เวิร์กโฟลว์ของคุณก็สามารถนำไปใช้ได้
แนวทางที่ใช้กันทั่วไปคือเขียนเนื้อหาของข้อมูลลับลงในไฟล์ชั่วคราวบนรันเนอร์ แล้วตั้งค่าตัวแปรสภาพแวดล้อม KUBECONFIG ให้ชี้ไปยังไฟล์นั้น
การดำเนินการนี้จะบอก kubectl ว่าจะค้นหารายละเอียดการเชื่อมต่อคลัสเตอร์ได้จากที่ใด
การใช้ `kubectl` ในเวิร์กโฟลว์
kubectl เป็นเครื่องมือบรรทัดคำสั่งอย่างเป็นทางการสำหรับโต้ตอบกับคลัสเตอร์ Kubernetes โดยรันเนอร์ของ GitHub Actions จะติดตั้ง kubectl ไว้ล่วงหน้า
หลังจากตั้งค่า kubeconfig แล้ว คุณก็สามารถเรียกใช้คำสั่ง kubectl ใด ๆ ในขั้นตอนของเวิร์กโฟลว์ได้
มาดูตัวอย่างพื้นฐานกัน
name: K8s Setup Test
on: [workflow_dispatch]
jobs:
test-kubeconfig:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Kubeconfig
env:
KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }}
run: |
mkdir -p ~/.kube
echo "$KUBE_CONFIG_DATA" > ~/.kube/config
chmod 600 ~/.kube/config
echo "KUBECONFIG=$HOME/.kube/config" >> $GITHUB_ENV
- name: Verify kubectl access
run: kubectl version --clientแมนนิเฟสต์การปรับใช้ Kubernetes แบบง่าย
นี่คือตัวอย่างแมนนิเฟสต์ Kubernetes พื้นฐานสำหรับ Deployment และ Service ของแอปพลิเคชัน "hello-world" ซึ่งเป็นสิ่งที่เราจะขอให้ Kubernetes เรียกใช้
ตัวอย่างนี้ใช้อิมเมจ Nginx แบบง่ายและเปิดให้เข้าถึงผ่านพอร์ต 80
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-app-deployment
spec:
replicas: 1
selector:
matchLabels:
app: hello-app
template:
metadata:
labels:
app: hello-app
spec:
containers:
- name: hello-app
image: nginx:latest
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: hello-app-service
spec:
selector:
app: hello-app
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancerเวิร์กโฟลว์การปรับใช้ฉบับเต็ม
ตอนนี้มาผสานขั้นตอนการปรับใช้เข้ากับเวิร์กโฟลว์กัน หลังจากสร้างและส่งอิมเมจคอนเทนเนอร์ของคุณแล้ว (จากบทเรียนก่อนหน้า) คุณก็สามารถปรับใช้อิมเมจนั้นได้
เวิร์กโฟลว์นี้สมมติว่าคุณตั้งค่าข้อมูลลับ kubeconfig ไว้แล้ว และมีไฟล์แมนนิเฟสต์ (เช่น k8s/deployment.yaml) อยู่ในที่เก็บโค้ดของคุณ
name: Deploy to Kubernetes
on:
push:
branches:
- main
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Kubeconfig
env:
KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }}
run: |
mkdir -p ~/.kube
echo "$KUBE_CONFIG_DATA" > ~/.kube/config
chmod 600 ~/.kube/config
echo "KUBECONFIG=$HOME/.kube/config" >> $GITHUB_ENV
- name: Deploy application to K8s
run: kubectl apply -f k8s/deployment.yamlการอัปเดตแอปพลิเคชันของคุณ
หนึ่งในฟีเจอร์ที่ยอดเยี่ยมของ kubectl apply คือความสามารถในการทำงานซ้ำโดยไม่เปลี่ยนแปลงผลลัพธ์ หากทรัพยากรที่กำหนดไว้ใน YAML มีอยู่แล้ว kubectl apply จะอัปเดตทรัพยากรเหล่านั้นแทนการสร้างรายการใหม่
หากต้องการปรับใช้แอปเวอร์ชันใหม่ เพียงอัปเดตแท็กอิมเมจใน deployment.yaml แล้วส่งการเปลี่ยนแปลง GitHub Actions จะเริ่มทำงาน จากนั้น Kubernetes จะดำเนินการอัปเดตแบบทยอยเปลี่ยน โดยค่อย ๆ แทนที่พ็อดเก่าด้วยพ็อดใหม่ เพื่อให้ช่วงเวลาที่ระบบหยุดให้บริการมีน้อยที่สุด
ตรวจสอบอย่างรวดเร็ว
คุณได้เรียนรู้ขั้นตอนสำคัญในการปรับใช้แอปพลิเคชันกับ Kubernetes โดยใช้ GitHub Actions แล้ว
ลำดับขั้นตอนใดต่อไปนี้ถูกต้องสำหรับเวิร์กโฟลว์ GitHub Actions ที่ใช้ปรับใช้แมนนิเฟสต์ Kubernetes
สรุปและขั้นตอนถัดไป
ยอดเยี่ยมมาก! คุณได้เรียนรู้วิธีตั้งค่าการปรับใช้อย่างต่อเนื่องกับ Kubernetes โดยใช้ GitHub Actions แล้ว
- เราเก็บข้อมูล
kubeconfigที่ละเอียดอ่อนไว้ในข้อมูลลับของ GitHub - เวิร์กโฟลว์ใช้ข้อมูลลับนี้เพื่อกำหนดค่า
kubectl - เราใช้
kubectl apply -fเพื่อปรับใช้หรืออัปเดตแมนนิเฟสต์ Kubernetes - Kubernetes จัดการการอัปเดตแบบทยอยเปลี่ยนเมื่อมีการนำการเปลี่ยนแปลงไปใช้
การผสานการทำงานที่ทรงพลังนี้ช่วยทำให้การปรับใช้เป็นแบบอัตโนมัติ ทำให้กระบวนการพัฒนาของคุณราบรื่นและรวดเร็วยิ่งขึ้น ขอให้สำรวจฟีเจอร์ Kubernetes ขั้นสูงเพิ่มเติมต่อไป!
คำถามที่พบบ่อย
บทเรียน “การนำไปใช้บน Kubernetes ด้วยแอ็กชัน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การนำไปใช้บน Kubernetes ด้วยแอ็กชัน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การนำไปใช้บน Kubernetes ด้วยแอ็กชัน”
ตั้งค่าการนำส่งอย่างต่อเนื่องไปยังคลัสเตอร์ Kubernetes พร้อมจัดการการนำไปใช้และบริการโดยตรงจาก GitHub Actions คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การนำไปใช้บน Kubernetes ด้วยแอ็กชัน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม
ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสร้างอิมเมจ Docker ด้วยแอ็กชัน
- การส่งอิมเมจไปยังรีจิสทรี
- การนำไปใช้บน Kubernetes ด้วยแอ็กชัน
- ชาร์ต Helm และแมนิเฟสต์ Kubernetes ใน CI/CD