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

การนำไปใช้บน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. การสร้างอิมเมจ Docker ด้วยแอ็กชัน
  2. การส่งอิมเมจไปยังรีจิสทรี
  3. การนำไปใช้บน Kubernetes ด้วยแอ็กชัน
  4. ชาร์ต Helm และแมนิเฟสต์ Kubernetes ใน CI/CD
← กลับไปที่ DevOps Bootcamp