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

Ingress สำหรับการเข้าถึงจากภายนอก

กำหนดค่า Ingress เพื่อจัดการการเข้าถึง Service จากภายนอก พร้อมการกำหนดเส้นทาง HTTP/S และการกระจายโหลด

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

นอกเหนือจาก NodePort และ LoadBalancer

เราได้สำรวจบริการ Kubernetes ประเภทต่าง ๆ เช่น NodePort และ LoadBalancer สำหรับเปิดให้เข้าถึงแอปพลิเคชันจากภายนอกแล้ว

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

นี่คือจุดที่ Ingress เข้ามาช่วย โดยนำเสนอโซลูชันที่ทรงพลังและยืดหยุ่นมากขึ้น

ทำความรู้จัก Kubernetes Ingress

Ingress คือออบเจ็กต์ API ของ Kubernetes ที่จัดการการเข้าถึงบริการในคลัสเตอร์จากภายนอก โดยเน้นการรับส่งข้อมูลแบบ HTTP และ HTTPS

  • ทำหน้าที่เป็นจุดทางเข้าเดียวสำหรับคำขอจากภายนอก
  • รองรับการกำหนดเส้นทาง HTTP/S ตามชื่อโฮสต์หรือเส้นทาง URL
  • รองรับความสามารถต่าง ๆ เช่น การสิ้นสุดการเชื่อมต่อ SSL/TLS และการกระจายโหลด

ให้คิดว่า Ingress เป็นตัวควบคุมการรับส่งข้อมูลอัจฉริยะที่ส่งข้อมูลเว็บไปยังบริการภายในที่ถูกต้อง

ตัวควบคุม Ingress

ทรัพยากร Ingress เองเป็นเพียงชุดกฎและไม่ได้จัดการการรับส่งข้อมูลโดยตรง หากต้องการให้ Ingress ทำงานได้ คุณต้องมี ตัวควบคุม Ingress ทำงานอยู่ในคลัสเตอร์

ตัวควบคุม Ingress จะเฝ้าดูทรัพยากร Ingress และกำหนดค่าตัวกระจายโหลดภายนอก (หรือพร็อกซีย้อนกลับ) ตามกฎที่กำหนดไว้

ตัวควบคุม Ingress ที่ได้รับความนิยม ได้แก่ Nginx, Traefik และตัวควบคุมเฉพาะสำหรับคลาวด์ เช่น GCE Ingress สำหรับ Google Cloud หรือ AWS Load Balancer Controller

กฎของ Ingress ทำงานอย่างไร

Ingress กำหนดกฎที่จับคู่คำขอภายนอกขาเข้ากับบริการส่วนหลังที่ระบุภายในคลัสเตอร์ของคุณ โดยทั่วไปกฎเหล่านี้จะระบุสิ่งต่อไปนี้

  • โฮสต์: ชื่อโดเมน (เช่น www.my-app.com)
  • เส้นทาง: เส้นทาง URL (เช่น /api, /blog)
  • บริการส่วนหลัง: บริการ Kubernetes และพอร์ตที่จะส่งต่อการรับส่งข้อมูลไป

ตัวควบคุม Ingress จะประเมินกฎเหล่านี้สำหรับทุกคำขอขาเข้า เพื่อระบุปลายทางที่ถูกต้อง

การสร้าง YAML ของ Ingress

เช่นเดียวกับทรัพยากร Kubernetes อื่น ๆ Ingress จะกำหนดโดยใช้ไฟล์กำกับ YAML ต่อไปนี้คือโครงสร้างพื้นฐานที่แสดงฟิลด์สำคัญ

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-app-ingress
spec:
  rules:
  - host: myapp.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-web-service
            port:
              number: 80

Ingress แบบง่ายที่อิงตามเส้นทาง

มาสร้างทรัพยากร Ingress ที่ส่งต่อการรับส่งข้อมูลทั้งหมดสำหรับเส้นทางราก (/) ของ myapp.example.com ไปยังบริการชื่อ my-web-service ที่พอร์ต 80

ตรวจสอบให้แน่ใจว่ามี Deployment และบริการชื่อ my-web-service ทำงานอยู่ในคลัสเตอร์ของคุณก่อนใช้ Ingress นี้

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: basic-app-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: myapp.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-web-service
            port:
              number: 80

การติดตั้ง Ingress

หากต้องการติดตั้งทรัพยากร Ingress ให้บันทึก YAML ลงในไฟล์ (เช่น basic-ingress.yaml) แล้วใช้ kubectl apply:

kubectl apply -f basic-ingress.yaml

คุณสามารถตรวจสอบสถานะของ Ingress ได้ด้วย kubectl get ingress จากนั้นตัวควบคุม Ingress จะกำหนดค่าตัวกระจายโหลดภายนอกตามกฎเหล่านี้

หากต้องการทดสอบ โดยทั่วไปคุณจะต้องอัปเดตไฟล์ /etc/hosts ภายในเครื่อง (หรือ DNS) ให้ชี้ myapp.example.com ไปยังที่อยู่ IP ภายนอกของตัวควบคุม Ingress

ตัวอย่างการกำหนดเส้นทางตามโฮสต์

Ingress เหมาะอย่างยิ่งสำหรับโฮสต์แอปพลิเคชันหลายรายการบนที่อยู่ IP ภายนอกเดียว โดยใช้ชื่อโฮสต์ที่แตกต่างกัน ในตัวอย่างนี้ app1.example.com จะกำหนดเส้นทางไปยัง service-app1 และ app2.example.com จะกำหนดเส้นทางไปยัง service-app2

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: host-routing-ingress
spec:
  rules:
  - host: app1.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: service-app1
            port:
              number: 80
  - host: app2.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: service-app2
            port:
              number: 80

หลายเส้นทางบนโฮสต์เดียว

คุณยังสามารถกำหนดเส้นทาง URL ที่แตกต่างกันบนชื่อโฮสต์เดียวกันไปยังบริการส่วนหลังที่แตกต่างกันได้ วิธีนี้เหมาะสำหรับสถาปัตยกรรมไมโครเซอร์วิสหรือส่วนต่าง ๆ ของแอปพลิเคชันเดียวกัน

ตัวอย่างเช่น คำขอไปยัง api.example.com/users จะไปที่ users-service ส่วนคำขอไปยัง api.example.com/products จะไปที่ products-service

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: path-routing-ingress
spec:
  rules:
  - host: api.example.com
    http:
      paths:
      - path: /users
        pathType: Prefix
        backend:
          service:
            name: users-service
            port:
              number: 80
      - path: /products
        pathType: Prefix
        backend:
          service:
            name: products-service
            port:
              number: 80

ตรวจสอบความเข้าใจเกี่ยวกับ Ingress

ข้อใดต่อไปนี้คือประโยชน์หลักของการใช้ Kubernetes Ingress

สรุป: Ingress สำหรับการกำหนดเส้นทางอัจฉริยะ

ทำได้ดีมาก คุณได้เรียนรู้เกี่ยวกับ Kubernetes Ingress ซึ่งเป็นองค์ประกอบสำคัญสำหรับจัดการวิธีที่ผู้ใช้ภายนอกโต้ตอบกับแอปพลิเคชันของคุณ

  • Ingress ช่วยให้กำหนดเส้นทาง HTTP/S ได้อย่างยืดหยุ่นตามชื่อโฮสต์และเส้นทาง URL
  • ต้องใช้ ตัวควบคุม Ingress (เช่น Nginx) เพื่อเฝ้าดูกฎของ Ingress และกำหนดค่าการกำหนดเส้นทาง
  • ช่วยให้เปิดบริการหลายรายการผ่านที่อยู่ IP ภายนอกเดียวได้ง่ายขึ้น ทำให้คลัสเตอร์มีประสิทธิภาพและจัดการได้ง่ายยิ่งขึ้น

การเชี่ยวชาญ Ingress เป็นกุญแจสำคัญในการสร้างแอปพลิเคชันแบบคลาวด์เนทีฟที่แข็งแกร่งและเข้าถึงได้

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

บทเรียน “Ingress สำหรับการเข้าถึงจากภายนอก” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “Ingress สำหรับการเข้าถึงจากภายนอก”

กำหนดค่า Ingress เพื่อจัดการการเข้าถึง Service จากภายนอก พร้อมการกำหนดเส้นทาง HTTP/S และการกระจายโหลด คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

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

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

บทเรียน “Ingress สำหรับการเข้าถึงจากภายนอก” ใช้เวลานานแค่ไหน

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

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

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

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

  1. การเปิดเผยแอปด้วย Service
  2. ประเภท Service: ClusterIP, NodePort, LoadBalancer
  3. Ingress สำหรับการเข้าถึงจากภายนอก
  4. DNS และการค้นหาบริการ
← กลับไปที่ DevOps Bootcamp