0Pricing
Kubernetes Basics · บทเรียน

นโยบายเครือข่ายสำหรับการแยกส่วน

ควบคุมการไหลของทราฟฟิกเครือข่ายระหว่าง Pod และเนมสเปซโดยใช้นโยบายเครือข่ายของ Kubernetes

นโยบายเครือข่ายสำหรับการแยกส่วน เป็นบทเรียน Kubernetes Basics ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kubernetes Basics และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kubernetes Basics มีบทเรียนทั้งหมด 4 บทเรียน

นโยบายเครือข่าย: ตำรวจจราจร

ในคูเบอร์เนทีส โดยค่าเริ่มต้นพ็อดสามารถสื่อสารระหว่างกันได้อย่างอิสระ ซึ่งช่วยให้มีความยืดหยุ่น แต่ไม่เหมาะกับความปลอดภัยเสมอไป

นโยบายเครือข่ายทำหน้าที่เสมือนไฟร์วอลล์สำหรับพ็อด โดยควบคุมว่าทราฟฟิกเครือข่ายใดได้รับอนุญาตให้เข้ามา (ขาเข้า) และออกไป (ขาออก)

ค่าเริ่มต้น: พ็อดทั้งหมดสื่อสารกันได้

โดยค่าเริ่มต้น เมื่อปรับใช้พ็อดแล้ว พ็อดนั้นจะสื่อสารกับพ็อดอื่นใดก็ได้ในคลัสเตอร์โดยไม่คำนึงถึงเนมสเปซ โมเดล “เครือข่ายแบบแบน” นี้ช่วยให้ตั้งค่าได้ง่าย แต่ไม่มีการแยกส่วน

สำหรับสภาพแวดล้อมจริง คุณมักจำเป็นต้องจำกัดการสื่อสารเพื่อเพิ่มความปลอดภัยและป้องกันการเข้าถึงโดยไม่ได้รับอนุญาตระหว่างองค์ประกอบของแอปพลิเคชัน

กฎขาเข้าและขาออก

นโยบายเครือข่ายจะกำหนดกฎสำหรับวิธีที่พ็อดได้รับอนุญาตให้สื่อสาร โดยมุ่งเน้นทราฟฟิกสองประเภทหลัก:

  • ขาเข้า: ทราฟฟิกที่เข้ามายังพ็อด
  • ขาออก: ทราฟฟิกที่ออกจากพ็อด

กฎเหล่านี้ใช้กับพ็อดที่ระบุโดยใช้ป้ายกำกับ และสามารถกำหนดเป้าหมายเป็นพ็อดอื่น เนมสเปซ หรือบล็อก IP ได้

ข้อกำหนดของปลั๊กอิน CNI

นโยบายเครือข่ายไม่ใช่เวทมนตร์! หากต้องการให้ทำงาน คลัสเตอร์คูเบอร์เนทีสของคุณต้องมีปลั๊กอิน Container Network Interface (CNI)ที่รองรับนโยบายเหล่านี้

ปลั๊กอิน CNI ที่ได้รับความนิยม เช่น Calico, Cilium และ Weave Net มีฟังก์ชันนี้ หากไม่มี CNI ที่รองรับ นโยบายเครือข่ายจะไม่มีผลใด ๆ

โครงสร้างของนโยบาย

นโยบายเครือข่ายกำหนดโดยใช้ YAML ฟิลด์สำคัญมีดังนี้:

  • metadata.name: ชื่อเฉพาะสำหรับนโยบายของคุณ
  • spec.podSelector: เลือกพ็อดที่นโยบายนี้มีผลบังคับใช้
  • spec.policyTypes: ระบุว่านโยบายใช้กับ Ingress Egress หรือทั้งสองอย่าง
  • spec.ingress/spec.egress: แสดงรายการกฎสำหรับทราฟฟิกที่อนุญาต

บล็อกทราฟฟิกขาเข้าทั้งหมด

มาสร้างนโยบายเพื่อปฏิเสธทราฟฟิกขาเข้าทั้งหมดที่มายังพ็อดซึ่งมีป้ายกำกับ app: backend ในเนมสเปซปัจจุบันกัน นี่เป็นจุดเริ่มต้นทั่วไปสำหรับแนวทางความปลอดภัยแบบ “ปฏิเสธเป็นค่าเริ่มต้น”

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-all-backend-ingress
spec:
  podSelector:
    matchLabels:
      app: backend
  policyTypes:
  - Ingress
  ingress: [] # An empty ingress list denies all incoming traffic

อนุญาตขาเข้าจากส่วนหน้า

ตอนนี้มาปรับนโยบายของเราเพื่ออนุญาตทราฟฟิกขาเข้าเฉพาะจากพ็อดที่มีป้ายกำกับ app: frontend ในเนมสเปซเดียวกันมายังพ็อด app: backend ของเรากัน

สังเกตส่วน from ที่ระบุพ็อดต้นทาง

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-frontend-to-backend
spec:
  podSelector:
    matchLabels:
      app: backend
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: frontend

ควบคุมทราฟฟิกขาออก

เช่นเดียวกับขาเข้า คุณสามารถควบคุมทราฟฟิกขาออกได้ ในที่นี้ เราจะสร้างนโยบายที่อนุญาตให้พ็อด app: backend ส่งคำขอขาออกได้เฉพาะไปยังพ็อดที่มีป้ายกำกับ app: database

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: backend-egress-to-db
spec:
  podSelector:
    matchLabels:
      app: backend
  policyTypes:
  - Egress
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: database

กำหนดเป้าหมายเนมสเปซอื่น

ถ้าส่วนหน้าของคุณอยู่ในเนมสเปซอื่น เช่น web-apps จะทำอย่างไร คุณสามารถใช้ namespaceSelector เพื่อกำหนดเป้าหมายพ็อดข้ามเนมสเปซได้

นโยบายนี้อนุญาตขาเข้าสู่พ็อด app: backend จากพ็อดใด ๆ ในเนมสเปซ web-apps

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-web-apps-ingress
spec:
  podSelector:
    matchLabels:
      app: backend
  policyTypes:
  - Ingress
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          name: web-apps
      podSelector: {} # All pods in the selected namespace

โจทย์ท้าทายนโยบาย

ลองพิจารณาพ็อดที่มีป้ายกำกับ app: web และ env: prod นโยบายเครือข่ายใดที่จะอนุญาตเฉพาะทราฟฟิกขาเข้าจากพ็อดในเนมสเปซ monitoring เท่านั้น

ทบทวน: รักษาความปลอดภัยเครือข่ายของคุณ

ทำได้ดีมาก! คุณได้เรียนรู้แล้วว่านโยบายเครือข่ายของคูเบอร์เนทีสช่วยแยกเครือข่ายที่สำคัญสำหรับแอปพลิเคชันของคุณได้อย่างไร

  • นโยบายเหล่านี้ทำหน้าที่เป็นไฟร์วอลล์สำหรับพ็อด
  • ควบคุมทราฟฟิกทั้งขาเข้าและขาออก
  • ต้องใช้ปลั๊กอิน CNI ที่รองรับ
  • กำหนดโดยใช้ YAML พร้อม podSelector policyTypes และนิยามกฎ
  • สามารถกำหนดเป้าหมายพ็อดตามป้ายกำกับ รวมถึงกำหนดเป้าหมายทั้งเนมสเปซได้

ใช้สิ่งเหล่านี้เพื่อบังคับใช้โมเดลเครือข่ายที่ให้สิทธิ์เท่าที่จำเป็น

คำถามที่พบบ่อย

บทเรียน “นโยบายเครือข่ายสำหรับการแยกส่วน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “นโยบายเครือข่ายสำหรับการแยกส่วน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kubernetes Basics ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kubernetes Basics มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “นโยบายเครือข่ายสำหรับการแยกส่วน”

ควบคุมการไหลของทราฟฟิกเครือข่ายระหว่าง Pod และเนมสเปซโดยใช้นโยบายเครือข่ายของ Kubernetes คุณปฏิบัติ Kubernetes Basics ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kubernetes Basics หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kubernetes Basics บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “นโยบายเครือข่ายสำหรับการแยกส่วน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Kubernetes Basics นี้ได้ไหม

ได้ บทเรียน Kubernetes Basics ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. การควบคุมการเข้าถึงตามบทบาท (RBAC)
  2. นโยบายเครือข่ายสำหรับการแยกส่วน
  3. มาตรฐานความปลอดภัยของ Pod
  4. บัญชีบริการและอัตลักษณ์ของเวิร์กโหลด
← กลับไปที่ Kubernetes Basics