วิธีใช้ HAProxy เป็น Ingress Controller ในสภาพแวดล้อม Kubernetes

Withi Chi Haproxy Pen Ingress Controller Ni Sphaph Waedlxm Kubernetes



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

ตัวควบคุม Ingress คืออะไร?

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

  1. ทรัพยากรทางเข้า – เป็นออบเจ็กต์ Kubernetes API ที่กำหนดกฎสำหรับการกำหนดเส้นทางการรับส่งข้อมูลของบริการในคลัสเตอร์ตามชื่อโฮสต์และเส้นทางที่ระบุ
  2. ตัวควบคุมทางเข้า – เป็นส่วนประกอบซอฟต์แวร์เช่น HAProxy, Traefik หรือ NGINX ที่ใช้กฎที่ระบุไว้ในทรัพยากรทางเข้า โดยจะกำหนดค่าโหลดบาลานเซอร์ให้จัดการการรับส่งข้อมูลตามการเปลี่ยนแปลงที่ทำกับออบเจ็กต์ทางเข้า

วิธีใช้ HAProxy เป็น Ingress Controller ในสภาพแวดล้อม Kubernetes

เมื่อเข้าใจว่า Ingress Controller คืออะไร และเหตุใดคุณจึงต้องการมัน ภารกิจต่อไปคือการครอบคลุมขั้นตอนการใช้งาน ในกรณีของเรา เราได้ตั้งค่า HAProxy เป็นตัวควบคุมทางเข้าโดยทำตามขั้นตอนที่ให้ไว้







ไม่มี: ตรวจสอบให้แน่ใจว่าคุณได้เปิดใช้งานคลัสเตอร์ Kubernetes แล้ว จากนั้นให้ดำเนินการดังนี้



ขั้นตอนที่ 1: เริ่มคลัสเตอร์ Kubernetes ของคุณ
การตั้งค่าและเริ่มต้นคลัสเตอร์ Kubernetes มีหลายวิธี สำหรับคำแนะนำนี้ เราใช้ Minikube เป็นเครื่องมือที่นำเสนอวิธีง่ายๆ ในการปรับใช้ Kubernetes ภายในเครื่องเสมือนหรือ Docker โดยเฉพาะอย่างยิ่งหากคุณมี Kubernetes อยู่ในเครื่องของคุณ



อ้างถึง เอกสารประกอบมินิคิวบ์ ในคำสั่งการติดตั้งเพื่อใช้สำหรับแพลตฟอร์มของคุณ ในกรณีนี้ เราใช้สถาปัตยกรรม Linux “x64” ที่เสถียร และรันคำสั่งต่อไปนี้:





$ ขด -มัน https: // storage.googleapis.com / มินิคิวเบะ / เผยแพร่ / ล่าสุด / มินิคิวบ์-linux-amd64
$ ซูโดะ ติดตั้ง มินิคิวบ์-linux-amd64 / เรา / ท้องถิ่น / ถังขยะ / มินิคิวเบะ

คำสั่งแรกจะดึงไบนารี Minikube ที่เสถียรล่าสุด ในขณะที่คำสั่งที่สองจะติดตั้งและย้ายไบนารีไปยังเส้นทางที่ระบุ

เมื่อคุณติดตั้ง Minikube แล้ว ให้เริ่มมันเพื่อเรียกคลัสเตอร์ขึ้นมา



$ มินิคิวบ์สตาร์ท

จากนั้นคุณจะต้องติดตั้ง kubectl เพื่อเข้าถึงคลัสเตอร์ อย่างไรก็ตาม คุณสามารถใช้เวอร์ชัน kubectl ที่มาพร้อมกับ Minikube ได้ ตัวอย่างเช่น หากต้องการตรวจสอบรายละเอียดของพ็อดที่ทำงานอยู่ ให้รันคำสั่ง “kubectl” ดังต่อไปนี้:

$ มินิคูเบะ คิวเบคเทิล -- รับฝัก -ก

ด้วยวิธีนี้ คุณไม่จำเป็นต้องติดตั้ง kubectl (–) ส่งสัญญาณว่าคำสั่งมีไว้สำหรับ kubectl ไม่ใช่ Minikube

ขั้นตอนที่ 2: สร้างเนมสเปซ
ขั้นตอนที่สองเกี่ยวข้องกับการสร้างเนมสเปซเฉพาะสำหรับตัวควบคุมทางเข้า เราตั้งชื่อเนมสเปซเป็น “haproxy-controller”

$ minikube kubectl สร้างเนมสเปซ haproxy-controller

ขั้นตอนที่ 3: สร้างและปรับใช้ตัวควบคุม HAProxy Ingress
วิธีที่คุณสร้างตัวควบคุมทางเข้านั้นขึ้นอยู่กับสิ่งที่คุณต้องการบรรลุ ตัวอย่างเช่น คุณสามารถสร้างตัวควบคุมทางเข้า HAProxy เพื่อกำหนดเส้นทางการรับส่งข้อมูล HTTP โดยขึ้นอยู่กับชื่อโฮสต์ที่ร้องขอ ในกรณีดังกล่าว ให้เริ่มต้นด้วยการเข้าถึงเซิร์ฟเวอร์ DNS ของคุณและสร้างบันทึก “A” เพื่อแมปชื่อโฮสต์เป้าหมายกับคลัสเตอร์ของคุณ

เมื่อคุณมีบันทึก 'A' ที่ถูกต้องแล้ว ให้สร้างไฟล์ YAML ตัวควบคุมทางเข้าของคุณดังที่แสดงในภาพต่อไปนี้ ในส่วนแรก เราได้สร้างทรัพยากรการปรับใช้ที่ใช้อิมเมจคอนเทนเนอร์ Docker “jmalloc/echo-server” เป็นตัวอย่างของเรา

ในส่วนที่สองของไฟล์ YAML เราได้สร้างทรัพยากรบริการซึ่งได้รับการแมปตามชื่อโฮสต์ที่ได้รับการร้องขอในตัวควบคุมทางเข้าซึ่งสร้างขึ้นในขั้นตอนที่ 4

บันทึกไฟล์และปรับใช้กับคลัสเตอร์ของคุณโดยใช้ kubectl เราอ้างอิง Minikube kubectl โดยการรันคำสั่งต่อไปนี้สำหรับกรณีของเรา ตัวควบคุมทางเข้า HAProxy ของเราคือ “linuxhint-jmaildeployment.yaml”

$ มินิคูเบะ คิวเบคเทิล -- นำมาใช้ -ฉ < ชื่อไฟล์ >

เมื่อคุณได้รับผลลัพธ์ที่แสดงว่าบริการได้ถูกสร้างขึ้นแล้ว คุณสามารถตรวจสอบเพิ่มเติมได้ว่าบริการนั้นถูกปรับใช้โดยใช้คำสั่งต่อไปนี้:

$ มินิคูเบะ คิวเบคเทิล -- รับฝัก --เนมสเปซ haproxy-คอนโทรลเลอร์

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

ขั้นตอนที่ 4: สร้างและปรับใช้ทรัพยากร Ingress
สร้างไฟล์ YAML อีกไฟล์ซึ่งทำหน้าที่เป็นทรัพยากรขาเข้าที่มีกฎว่า HAProxy ควรกำหนดเส้นทางการรับส่งข้อมูลของคุณอย่างไร ตรวจสอบให้แน่ใจว่าคุณใช้ชื่อโดเมน (โฮสต์) ที่ถูกต้องที่คุณกำหนดเป้าหมายและปรับการตั้งชื่อและพอร์ตที่ต้องการเพื่อยอมรับการรับส่งข้อมูลที่เข้ามา

บันทึกไฟล์ทรัพยากรขาเข้า HAProxy และปรับใช้เหมือนกับที่เราทำกับคอนโทรลเลอร์

$ มินิคูเบะ คิวเบคเทิล -- นำมาใช้ -ฉ < ชื่อไฟล์ >

เราตั้งชื่อทรัพยากรขาเข้าของเราว่า “linuxhint-ingresscontroller.yaml”

แค่นั้นแหละ! ด้วยคำสั่งต่อไปนี้ คุณสามารถตรวจสอบว่าตัวควบคุมทางเข้า HAProxy ของคุณทำงานโดยการตรวจสอบพอร์ตที่กำหนดให้กับ NodePort

$ มินิคูเบะ คิวเบคเทิล -- รับบริการ haproxy-kubernetes-ingress --เนมสเปซ haproxy-คอนโทรลเลอร์

ในกรณีนี้ ได้รับการกำหนดให้กับพอร์ต 32448 คุณสามารถเข้าถึงบริการที่สร้างขึ้นโดยใช้พอร์ตและตรวจสอบสถานะได้

ด้วยเหตุนี้ คุณจึงสามารถใช้ HAProxy เป็นตัวควบคุมทางเข้าในสภาพแวดล้อม Kubernetes ได้

บทสรุป

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