Ingress for an Application Load Balancer
Để cho tài nguyên Ingress (Ingress Yaml file) có thể hoạt động được, cluster phải có 1 VNGCloud Ingress Controller đang chạy. Không giống các loại Controller khác được chạy như là 1 phần của kube-controller-manager. VNGCloud Ingress Controller không được tự động khởi động cùng với cluster. Hãy làm theo hướng dẫn sau đây để cài đặt VNGCloud Ingress Controller cũng như làm việc với Ingress Yaml file.
Chuẩn bị
Tạo một Kubernetes cluster trên VNGCloud, hoặc sử dụng một cluster đã có. Lưu ý: đảm bảo bạn đã tải xuống cluster configuration file sau khi cluster được khởi tạo thành công và truy cập vào cluster của bạn.
Khởi tạo hoặc sử dụng một service account đã tạo trên IAM và gắn policy: vLBFullAccess, vServerFullAccess. Để tạo service account bạn truy cập tại đây và thực hiện theo các bước sau:
Chọn "Create a Service Account", điền tên cho Service Account và nhấn Next Step để gắn quyền cho Service Account
Tìm và chọn Policy: vLBFullAccess và Policy: vServerFullAccess, sau đó nhấn "Create a Service Account" để tạo Service Account, Policy: vLBFullAccess vàPolicy: vServerFullAccess do VNG Cloud tạo ra, bạn không thể xóa các policy này.
Sau khi tạo thành công bạn cần phải lưu lại Client_ID và Secret_Key của Service Account để thực hiện bước tiếp theo.
Thay đổi thông tin Security Group để cho phép các ALB có thể kết nối được tới các Node trong Node Group của bạn. Bạn cần thay đổi chúng trên vServer Portal khi:
Security Group được gắn vào Cluster/Node Group của bạn khác với thông số mặc định mà chúng tôi đã tạo.
Bạn cần thay đổi mức độ bảo mật cho Cluster của mình hoặc bạn cần mở thêm cổng cho các dịch vụ cụ thể hoạt động trên Cluster. Chi tiết tham khảo tại đây.
Khởi tạo Service Account và cài đặt VNGCloud Ingress Controller
Chú ý:
Khi bạn thực hiện khởi tạo Cluster theo hướng dẫn bên trên, nếu bạn chưa bật option Enable vLB Native Integration Driver, mặc định chúng tôi sẽ không cài sẵn plugin này vào Cluster của bạn. Bạn cần tự thực hiện Khởi tạo Service Account và cài đặt VNGCloud Ingress Controller theo hướng dẫn bên dưới. Nếu bạn đã bật option Enable vLB Native Integration Driver, thì chúng tôi đã cài sẵn plugin này vào Cluster của bạn, hãy bỏ qua bước Khởi tạo Service Account, cài đặt VNGCloud Ingress Controller và tiếp tục thực hiện theo hướng dẫn kể từ Deploy một Workload.
Deploy một Workload
Sau đây là hướng dẫn để bạn deploy service nginx trên Kubernetes.
Bước 1: Tạo Deployment cho Nginx app.
Tạo file nginx-service-lb7.yaml với nội dung sau:
Deploy Deployment này bằng lệch:
Bước 2: Kiểm tra thông tin Deployment, Service vừa deploy
Chạy câu lệnh sau đây để kiểm tra Deployment
Nếu kết quả trả về như bên dưới tức là bạn đã deploy Deployment thành công.
Tạo Ingress Resource
1.Nếu bạn chưa có sẵn một Application Load Balancer nào đã khởi tạo trước đó trên hệ thống vLB.
Lúc này, khi tạo một Ingress, bạn hãy để trống thông tin Load Balancer ID tại annotation vks.vngcloud.vn/load-balancer-id.
Ví dụ, giả sử bạn đã deployment một service có tên nginx-service. Lúc này, bạn có thể tạo file nginx-ingress.yaml như sau:
Chạy câu lệnh sau đây để triển khai Ingress
Sau khi bạn đã thực hiện triển khai Ingress , Chúng tôi sẽ tự động tạo 1 ALB trên cluster của bạn. ALB này sẽ hiển thị trên vLB Portal, chi tiết truy cập tại đây. ALB này sẽ có thông tin mặc định:
Thành phần | Số lượng | Thuộc tính |
ALB Package | 1 | VNG ALB_Small |
Listener | 2 |
|
Pool | 1 |
|
Health Check | 1 |
|
Ví dụ:
Chú ý:
Hiện tại Ingress chỉ hỗ trợ duy nhất TLS port 443 và là điểm kết thúc cho TLS (TLS termination). TLS Secret phải chứa các trường với tên key là tls.crt và tls.key, đây chính là certificate và private key để sử dụng cho TLS. Nếu bạn muốn sử dụng Certificate cho một host, hãy thực hiện tải lên Certificate theo hướng dẫn tại [Upload a certificate] và sử dụng chúng như một annotation. Ví dụ:
2.Nếu bạn đã có sẵn một Application Load Balancer đã khởi tạo trước đó trên hệ thống vLB và bạn muốn tái sử dụng ALB cho cluster của bạn.
Lúc này, khi tạo một Ingress, bạn hãy nhập thông tin Load Balancer ID vào annotation vks.vngcloud.vn/load-balancer-id. Ví dụ, trong trường hợp này tôi đã tái sử dụng ALB có ID = lb-2b9d8974-3760-4d60-8203-9671f229fb96:
Sau khi bạn đã thực hiện tạo ingress theo hướng dẫn tại Ingress for an Application Load Balancer. Nếu:
ALB của bạn đang có sẵn 2 listener trong đó:
1 listener có cấu hình protocol HTTP và port 80
1 listener có cấu hình protocol HTTPS và port 443 thì chúng tôi sẽ sử dụng 2 listener này.
ALB của bạn chưa có một trong hai hoặc cả 2 listener có cấu hình trên, chúng tôi sẽ tự động khởi tạo chúng.
Chú ý:
Nếu ALB của bạn có:
1 listener có cấu hình protocol HTTP và port 443
Hoặc 1 listener có cấu hình protocol HTTPS và portal 80
thì khi tạo Ingress sẽ xảy ra lỗi. Lúc này, bạn cần chỉnh sửa lại thông tin listener hợp lệ trên hệ thống vLB và thực hiện tạo lại ingress.
3. Sau khi tạo ingress thành công với một ALB, bạn có thể thực hiện
Chỉnh sửa cấu hình ingress của bạn theo hướng dẫn cụ thể tại Configure for an Application Load Balancer.
Hoặc bạn có thể thêm/ sửa/ xóa policy trong ALB của bạn bằng các chỉnh sửa các thông số sau trong tài nguyên ingress (Ingress Yaml file). Ví dụ như bên dưới, tôi đã thực hiện thiết lập 2 rule như sau:
Cũng giống như các tài nguyên Kubernetes khác, Ingress có cấu trúc gồm các trường thông tin như sau:
apiVersion: Phiên bản API cho Ingress.
kind: Loại tài nguyên, trong trường hợp này là "Ingress".
ingressClassName: bạn cần chỉ định giá trị field này là "vngcloud" để sử dụng vngcloud-ingress-controller.
metadata: Thông tin mô tả Ingress, bao gồm tên, annotations.
spec: Cấu hình Ingress, bao gồm các rule route traffic theo điều kiện của các incoming request. Tài nguyên Ingress chỉ hỗ trợ các rule để điều hướng HTTP traffic.
Để biết thông tin chung về cách làm việc với tài nguyên Ingress (Ingress Yaml file), hãy xem tại [Configure for an Application Load Balancer]).
Kiểm tra, chỉnh sửa Ingress resource đã tạo
Sau khi tạo ingress thành công, bạn có thể xem danh sách ingress qua lệnh
Ví dụ, bên dưới chúng tôi đã tạo thành công nginx-ingress:
Hoặc xem chi tiết một ingress bằng cách
Ví dụ, bên dưới là thông tin chi tiết của nginx-ingress mà tôi đã tạo:
Để cập nhật nginx-ingress hiện có, ta có thể thực hiện bằng cách cập nhật Ingress Yaml file như sau:
Để truy cập vào app nginx, bạn có thể sử dụng Endpoint của Load Balancer mà hệ thống đã tạo.
Bạn có thể lấy thông tin Public Endpoint của Load Balancer tại giao diện vLB. Cụ thể truy cập tại
Ví dụ, bên dưới tôi đã truy cập thành công vào app nginx với địa chỉ : http://180.93.181.129/
Last updated