Nguon: Microsoft Learn · .NET 8.0

Bộ điều khiển YARP Kubernetes Ingress (Kubernetes Ingress Controller)

Nguồn: YARP Kubernetes Ingress Controller

Giới thiệu: Xem trước trong tương lai

YARP có thể được tích hợp với Kubernetes (hệ thống điều phối container) như một reverse proxy (proxy ngược) quản lý lưu lượng HTTP/HTTPS đến một cụm Kubernetes. Hiện tại, module này được đóng gói thành một gói riêng biệt và đang ở giai đoạn preview (xem trước).

Điều kiện tiên quyết

Trước khi tiếp tục với hướng dẫn này, hãy đảm bảo bạn đã chuẩn bị sẵn những điều sau:

  1. Cài đặt Docker phù hợp với hệ điều hành của bạn.
  2. Một container registry (kho chứa container). Docker mặc định sẽ tạo một container registry trên DockerHub. Bạn cũng có thể dùng Azure Container Registry hoặc container registry khác tùy chọn, chẳng hạn như local registry để thử nghiệm.
  3. Một cụm Kubernetes (Kubernetes Cluster). Có nhiều lựa chọn khác nhau, bao gồm:

Nếu bạn chọn một container registry được cung cấp bởi nhà cung cấp đám mây khác ngoài Dockerhub, có thể bạn phải thực hiện các bước để cấu hình cụm Kubernetes của mình cho phép truy cập. Hãy làm theo hướng dẫn do nhà cung cấp đám mây của bạn cung cấp.

Bắt đầu

Hiện tại, chưa có Docker image chính thức nào cho YARP ingress controller.

Trong thời gian chờ đợi, YARP ingress controller (bộ điều khiển ingress YARP) phải được build cục bộ và triển khai. Trong thư mục gốc của repository (kho lưu trữ mã nguồn), chạy:

bash
docker build . -t {REGISTRY_NAME}/yarp-controller:{TAG} -f .\src\Kubernetes.Controller\Dockerfile
docker push {REGISTRY_NAME}/yarp-controller:{TAG}

Trong các lệnh trên, placeholder (ký tự giữ chỗ) {REGISTRY_NAME} là tên của Docker registry, và placeholder {TAG} là tag (nhãn) cho image (ví dụ: 1.0.0).

Bước đầu tiên là triển khai YARP ingress controller vào cụm Kubernetes. Bạn có thể thực hiện bằng cách điều hướng đến Kubernetes Ingress sample tại đường dẫn \samples\KubernetesIngress.Sample\Ingress và chạy (sau khi chỉnh sửa ingress-controller.yaml với cùng REGISTRY_NAMETAG):

bash
kubectl apply -f ingress-controller.yaml

Để xác minh ingress controller đã được triển khai, chạy:

bash
kubectl get pods -n yarp

Bạn có thể kiểm tra log (nhật ký) từ ingress controller bằng cách chạy:

bash
kubectl logs {POD NAME} -n yarp

Tất cả services (dịch vụ), deployments (triển khai), và pods (đơn vị chạy container) của YARP đều nằm trong namespace (không gian tên) yarp. Hãy nhớ thêm -n yarp nếu bạn muốn kiểm tra trạng thái của yarp.

Tiếp theo, build và triển khai ingress. Trong thư mục gốc của repository, chạy:

bash
docker build . -t {REGISTRY_NAME}/yarp:<TAG> -f .\samples\KuberenetesIngress.Sample\Ingress\Dockerfile
docker push {REGISTRY_NAME}/yarp:{TAG}

Trong các lệnh trên, placeholder {REGISTRY_NAME} là tên của Docker registry, và placeholder {TAG} là tag cho image (ví dụ: 1.0.0).

Cuối cùng, chúng ta cần triển khai chính ingress đó vào Kubernetes. Điều hướng đến thư mục Ingress và chỉnh sửa file ingress.yaml với registry và tag đã chỉ định trước đó, sau đó chạy:

bash
kubectl apply -f .\ingress.yaml

Tại thời điểm này, ingress và controller của bạn sẽ đang chạy.

Triển khai ứng dụng

Để sử dụng ingress, chúng ta cần triển khai một ứng dụng lên Kubernetes. Điều hướng đến samples\KuberenetesIngress.Sample\backend và chạy:

bash
docker build . -t {REGISTRY_NAME}/backend:{TAG}
docker push {REGISTRY_NAME}/backend:{TAG}

Và triển khai nó lên Kubernetes bằng cách chạy, sau khi chỉnh sửa backend.yaml với cùng tên registry ({REGISTRY_NAME}) và tag ({TAG}):

bash
kubectl apply -f .\backend.yaml

Tạo định nghĩa ingress

Cuối cùng, khi đã triển khai ứng dụng backend, chúng ta cần định tuyến lưu lượng đến backend. Để thực hiện, chạy trong thư mục backend:

bash
kubectl apply -f .\ingress-sample.yaml

Sau đó thực hiện lệnh sau để lấy địa chỉ IP bên ngoài của ingress, với tên service liên quan là yarp-proxy:

bash
kubectl get service -n yarp

Nếu bạn đang sử dụng cụm K8s cục bộ và không nhận được địa chỉ IP bên ngoài, bạn có thể cần tránh sử dụng cổng mặc định port: 80 cho service yarp-proxy. Nếu vậy, hãy thử cập nhật file ingress.yaml để sử dụng cổng khác (ví dụ: port: 8085) và triển khai lại ingress lên Kubernetes.

Điều hướng đến địa chỉ IP bên ngoài, và bạn sẽ thấy thông tin backend.