เรามีความยินดีที่จะนำเสนอเวอร์ชันตัวอย่าง
กสทช. ฟรี
การนำวิธีการไมโครเซอร์วิสไปใช้นั้นเต็มไปด้วยความยากลำบาก เนื่องจากขนาดของการส่งมอบเติบโตขึ้น รวมถึงความซับซ้อนด้วย การสื่อสารระหว่างบริการมีความซับซ้อนมากขึ้น ปัญหาการดีบักจะยากขึ้น และบริการมากขึ้นเรื่อยๆ ต้องการทรัพยากรในการจัดการมากขึ้น
NSM แก้ไขปัญหาเหล่านี้โดยมอบ:
- ความปลอดภัยซึ่งตอนนี้มีความสำคัญมากกว่าที่เคย การละเมิดข้อมูลอาจทำให้บริษัทสูญเสียรายได้และชื่อเสียงหลายล้านดอลลาร์ต่อปี NSM ตรวจสอบให้แน่ใจว่าการเชื่อมต่อทั้งหมดได้รับการเข้ารหัสโดยใช้ mTLS ดังนั้นจึงไม่มีข้อมูลที่ละเอียดอ่อนที่แฮกเกอร์สามารถขโมยผ่านเครือข่ายได้ การควบคุมการเข้าถึงช่วยให้คุณกำหนดนโยบายสำหรับวิธีที่บริการสื่อสารกับบริการอื่นๆ
- การจัดการจราจร. เมื่อจัดส่งแอปพลิเคชันเวอร์ชันใหม่ คุณอาจต้องการเริ่มต้นด้วยการจำกัดการรับส่งข้อมูลขาเข้าในกรณีที่เกิดข้อผิดพลาด ด้วยการจัดการการรับส่งข้อมูลคอนเทนเนอร์อัจฉริยะของ NSM คุณสามารถกำหนดนโยบายการจำกัดการรับส่งข้อมูลสำหรับบริการใหม่ๆ ที่จะเพิ่มการรับส่งข้อมูลเมื่อเวลาผ่านไป คุณสมบัติอื่นๆ เช่น การจำกัดความเร็วและเซอร์กิตเบรกเกอร์ ช่วยให้คุณควบคุมการรับส่งข้อมูลของบริการทั้งหมดของคุณได้อย่างเต็มที่
- การแสดง. การจัดการบริการหลายพันรายการอาจเป็นฝันร้ายในการแก้ไขจุดบกพร่องและการแสดงภาพข้อมูล NSM ช่วยจัดการกับสถานการณ์นี้ด้วยแดชบอร์ด Grafana ในตัวที่แสดงคุณสมบัติทั้งหมดที่มีอยู่ใน NGINX Plus และยังมี Open Tracing ที่นำมาใช้ทำให้คุณสามารถตรวจสอบธุรกรรมได้อย่างละเอียด
- การส่งมอบแบบไฮบริดหากบริษัทของคุณไม่ได้ใช้โครงสร้างพื้นฐานที่ทำงานบน Kubernetes ทั้งหมด เช่นเดียวกับบริษัทอื่นๆ ส่วนใหญ่ NSM ช่วยให้มั่นใจได้ว่าแอปพลิเคชันรุ่นเก่าจะไม่ถูกทิ้งไว้โดยไม่มีใครดูแล ด้วยความช่วยเหลือของ NGINX Kubernetes Ingress Controller ที่นำมาใช้ บริการแบบเดิมจะสามารถสื่อสารกับบริการแบบ mesh และในทางกลับกัน
NSM ยังรับประกันความปลอดภัยของแอปพลิเคชันในสภาพแวดล้อมที่น่าเชื่อถือเป็นศูนย์โดยการใช้การเข้ารหัสและการรับรองความถูกต้องอย่างโปร่งใสกับการรับส่งข้อมูลคอนเทนเนอร์ นอกจากนี้ยังให้การมองเห็นและการวิเคราะห์ธุรกรรม ช่วยให้คุณเปิดใช้งานการปรับใช้และแก้ไขปัญหาได้อย่างรวดเร็วและแม่นยำ นอกจากนี้ยังให้การควบคุมการรับส่งข้อมูลแบบละเอียด ช่วยให้ทีม DevOps สามารถปรับใช้และเพิ่มประสิทธิภาพบางส่วนของแอปพลิเคชัน ในขณะเดียวกันก็ช่วยให้นักพัฒนาสามารถสร้างและเชื่อมต่อแอปพลิเคชันแบบกระจายได้อย่างง่ายดาย
NGINX Service Mesh ทำงานอย่างไร
NSM ประกอบด้วย Data Plane แบบรวมสำหรับการรับส่งข้อมูลแนวนอน (บริการต่อบริการ) และ NGINX Plus Ingress Controller แบบฝังสำหรับการรับส่งข้อมูลแนวตั้ง ซึ่งจัดการโดย Control Plane เดียว
ส่วนควบคุมได้รับการออกแบบมาโดยเฉพาะและปรับให้เหมาะสมสำหรับส่วนข้อมูล NGINX Plus และกำหนดกฎการควบคุมการรับส่งข้อมูลที่กระจายไปทั่วรถเทียมข้างรถจักรยานยนต์ NGINX Plus
ใน NSM จะมีการติดตั้งพร็อกซีไซด์คาร์สำหรับแต่ละบริการในเมช พวกเขาเชื่อมต่อกับโซลูชั่นโอเพ่นซอร์สต่อไปนี้:
- Grafana การแสดงภาพพารามิเตอร์ Prometheus แผง NSM ในตัวช่วยคุณในการทำงานของคุณ
- ตัวควบคุม Ingress ของ Kubernetes สำหรับจัดการการรับส่งข้อมูลขาเข้าและขาออกในตาข่าย
- SPIRE, CA สำหรับการจัดการ แจกจ่าย และอัปเดตใบรับรองในตาข่าย
- NATS ซึ่งเป็นระบบที่ปรับขนาดได้สำหรับการส่งข้อความ เช่น การอัพเดตเส้นทาง จากระนาบควบคุมไปจนถึงไซด์คาร์
- Open Tracing การดีบักแบบกระจาย (รองรับ Zipkin และ Jaeger)
- Prometheus รวบรวมและจัดเก็บคุณลักษณะจาก Sidecar ของ NGINX Plus เช่น จำนวนคำขอ การเชื่อมต่อ และการจับมือ SSL
ฟังก์ชั่นและส่วนประกอบ
NGINX Plus เป็นระนาบข้อมูลครอบคลุมพร็อกซีไซด์คาร์ (การรับส่งข้อมูลแนวนอน) และตัวควบคุม Ingress (แนวตั้ง) การสกัดกั้นและการจัดการการรับส่งข้อมูลคอนเทนเนอร์ระหว่างบริการ
คุณสมบัติได้แก่:
- การรับรองความถูกต้องร่วมกัน TLS (mTLS);
- โหลดบาลานซ์;
- ความทนทานต่อความผิดพลาด
- จำกัด ความเร็ว;
- วงจรแตก;
- การปรับใช้สีน้ำเงินเขียวและนกขมิ้น
- การควบคุมการเข้าถึง.
เปิดตัวบริการ NGINX Service Mesh
หากต้องการเรียกใช้ NSM คุณต้องมี:
- เข้าถึงสภาพแวดล้อม Kubernetes NGINX Service Mesh ได้รับการสนับสนุนบนแพลตฟอร์ม Kubernetes จำนวนมาก รวมถึง Amazon Elastic Container Service สำหรับ Kubernetes (EKS), Azure Kubernetes Service (AKS), Google Kubernetes Engine (GKE), VMware vSphere และคลัสเตอร์ Kubernetes ปกติที่ใช้งานบนเซิร์ฟเวอร์ฮาร์ดแวร์
- เครื่องมือ
kubectl
ติดตั้งบนเครื่องที่จะติดตั้ง NSM - เข้าถึงแพ็คเกจการเปิดตัว NGINX Service Mesh แพ็กเกจประกอบด้วยอิมเมจ NSM ที่จำเป็นสำหรับการอัปโหลดไปยังรีจิสทรีส่วนตัวสำหรับคอนเทนเนอร์ที่มีอยู่ในคลัสเตอร์ Kubernetes ในแพ็คเกจก็ประกอบด้วย
nginx-meshctl
จำเป็นต้องปรับใช้ NSM
หากต้องการปรับใช้ NSM ด้วยการตั้งค่าเริ่มต้น ให้รันคำสั่งต่อไปนี้ ในระหว่างการปรับใช้ ข้อความจะแสดงขึ้นเพื่อระบุการติดตั้งส่วนประกอบสำเร็จ และสุดท้ายคือข้อความที่ระบุว่า NSM กำลังทำงานในเนมสเปซแยกต่างหาก (คุณต้องดำเนินการก่อน
$ DOCKER_REGISTRY=your-Docker-registry ; MESH_VER=0.6.0 ;
./nginx-meshctl deploy
--nginx-mesh-api-image "${DOCKER_REGISTRY}/nginx-mesh-api:${MESH_VER}"
--nginx-mesh-sidecar-image "${DOCKER_REGISTRY}/nginx-mesh-sidecar:${MESH_VER}"
--nginx-mesh-init-image "${DOCKER_REGISTRY}/nginx-mesh-init:${MESH_VER}"
--nginx-mesh-metrics-image "${DOCKER_REGISTRY}/nginx-mesh-metrics:${MESH_VER}"
Created namespace "nginx-mesh".
Created SpiffeID CRD.
Waiting for Spire pods to be running...done.
Deployed Spire.
Deployed NATS server.
Created traffic policy CRDs.
Deployed Mesh API.
Deployed Metrics API Server.
Deployed Prometheus Server nginx-mesh/prometheus-server.
Deployed Grafana nginx-mesh/grafana.
Deployed tracing server nginx-mesh/zipkin.
All resources created. Testing the connection to the Service Mesh API Server...
Connected to the NGINX Service Mesh API successfully.
NGINX Service Mesh is running.
สำหรับตัวเลือกเพิ่มเติม รวมถึงการตั้งค่าขั้นสูง ให้รันคำสั่งนี้:
$ nginx-meshctl deploy –h
ตรวจสอบว่าระนาบควบคุมทำงานอย่างถูกต้องในเนมสเปซ nginx-meshคุณสามารถทำได้:
$ kubectl get pods –n nginx-mesh
NAME READY STATUS RESTARTS AGE
grafana-6cc6958cd9-dccj6 1/1 Running 0 2d19h
mesh-api-6b95576c46-8npkb 1/1 Running 0 2d19h
nats-server-6d5c57f894-225qn 1/1 Running 0 2d19h
prometheus-server-65c95b788b-zkt95 1/1 Running 0 2d19h
smi-metrics-5986dfb8d5-q6gfj 1/1 Running 0 2d19h
spire-agent-5cf87 1/1 Running 0 2d19h
spire-agent-rr2tt 1/1 Running 0 2d19h
spire-agent-vwjbv 1/1 Running 0 2d19h
spire-server-0 2/2 Running 0 2d19h
zipkin-6f7cbf5467-ns6wc 1/1 Running 0 2d19h
ขึ้นอยู่กับการตั้งค่าการใช้งานที่กำหนดนโยบายการแทรกด้วยตนเองหรืออัตโนมัติ พร็อกซี NGINX sidecars จะถูกเพิ่มลงในแอปพลิเคชันตามค่าเริ่มต้น หากต้องการปิดใช้งานการเพิ่มอัตโนมัติ โปรดอ่าน
เช่น ถ้าเราปรับใช้แอปพลิเคชัน นอนหลับ ในเนมสเปซ ผิดนัดจากนั้นตรวจสอบ Pod - เราจะเห็นคอนเทนเนอร์ที่ทำงานอยู่สองตัว ซึ่งเป็นแอปพลิเคชัน นอนหลับ และรถเทียมข้างรถจักรยานยนต์ที่เกี่ยวข้อง:
$ kubectl apply –f sleep.yaml
$ kubectl get pods –n default
NAME READY STATUS RESTARTS AGE
sleep-674f75ff4d-gxjf2 2/2 Running 0 5h23m
เรายังสามารถตรวจสอบแอปพลิเคชันได้อีกด้วย นอนหลับ ในแผง NGINX Plus ให้รันคำสั่งนี้เพื่อเข้าถึงรถเทียมข้างรถจักรยานยนต์จากเครื่องของคุณ:
$ kubectl port-forward sleep-674f75ff4d-gxjf2 8080:8886
จากนั้นเราก็เข้าไป
คุณสามารถใช้ทรัพยากร Kubernetes แต่ละรายการเพื่อกำหนดค่านโยบายการรับส่งข้อมูล เช่น การควบคุมการเข้าถึง การจำกัดอัตรา และการตัดวงจร โปรดดูสิ่งนี้
ข้อสรุป
NGINX Service Mesh สามารถดาวน์โหลดได้ฟรีที่
หากต้องการลองใช้ NGINX Plus Ingress Controller ให้เปิดใช้งาน
แปลโดย Pavel Demkovich วิศวกรบริษัท
ที่มา: will.com