Cấu hình cho một Application Load Balancer
Tại trang [Ingress for an Application Load Balancer], chúng tôi đã hướng dẫn bạn cách thực hiện cài đặt Ingress Controller và tạo ingress thông qua Ingress Yaml file. Sau đây là chi tiết các ý nghĩa các thông tin bạn có thể thiết lập cho một Ingress
Annotation
Sử dụng các annotation dưới đây khi thực thiện tạo ingress để tuỳ chỉnh Load Balancer phù hợp với nhu cầu của bạn:
Annotation | Bắt buộc/ Không bắt buộc | Ý nghĩa |
---|---|---|
vks.vngcloud.vn/load-balancer-id | Không bắt buộc |
Chú ý: Nếu ALB của bạn có:
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. |
vks.vngcloud.vn/load-balancer-name | Không bắt buộc |
|
vks.vngcloud.vn/package-id | Không bắt buộc |
|
vks.vngcloud.vn/tags | Không bắt buộc |
|
vks.vngcloud.vn/scheme | Không bắt buộc |
|
vks.vngcloud.vn/security-groups | Không bắt buộc |
|
vks.vngcloud.vn/inbound-cidrs | Không bắt buộc |
|
vks.vngcloud.vn/healthy-threshold-count | Không bắt buộc |
|
vks.vngcloud.vn/unhealthy-threshold-count | Không bắt buộc |
|
vks.vngcloud.vn/healthcheck-interval-seconds | Không bắt buộc |
|
vks.vngcloud.vn/healthcheck-timeout-seconds | Không bắt buộc |
|
vks.vngcloud.vn/healthcheck-protocol | Không bắt buộc |
|
vks.vngcloud.vn/healthcheck-http-method | Không bắt buộc |
|
vks.vngcloud.vn/healthcheck-path | Không bắt buộc |
|
vks.vngcloud.vn/healthcheck-http-version | Không bắt buộc |
|
vks.vngcloud.vn/healthcheck-http-domain-name | Không bắt buộc |
|
vks.vngcloud.vn/healthcheck-port | Không bắt buộc |
|
vks.vngcloud.vn/success-codes | Không bắt buộc |
|
vks.vngcloud.vn/idle-timeout-client | Không bắt buộc |
|
vks.vngcloud.vn/idle-timeout-member | Không bắt buộc |
|
vks.vngcloud.vn/idle-timeout-connection | Không bắt buộc |
|
vks.vngcloud.vn/pool-algorithm | Không bắt buộc |
|
vks.vngcloud.vn/enable-sticky-session | Không bắt buộc |
|
vks.vngcloud.vn/enable-tls-encryption | Không bắt buộc |
|
vks.vngcloud.vn/target-node-labels | Không bắt buộc |
|
vks.vngcloud.vn/certificate-ids | Không bắt buộc |
|
IngressClassName
Các Ingress được cài đặt bởi các VNGCloud Ingress Controller sẽ có thông tin IngressClassName = "vngcloud". Bạn không được thay đổi thông tin này.
DefaultBackend
Một Ingress không có rule nào sẽ gửi tất cả traffic đến 1 service default backend mặc định duy nhất hoặc nếu không có host và path nào khớp với HTTP request trong Ingress Yaml file thì traffic sẽ được route đến service default backend. Ví dụ như bên dưới, chúng tôi đang cấu hình mặc định nếu request không thỏa mãn rule nào trong Ingress yaml file thì sẽ đi vào service name: example-svc-1 với port number 8080
TLS
Bạn có thể bảo mật Ingress bằng cách chỉ định 1 Secret có chứa TLS key và certificate. 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. Cụ thể, bạn cần chỉ định:
Host: các host được chỉ định sẽ dùng cert.
SecretName: tên secret chứa cert.
Path types
Mỗi path (đường dẫn) trong Ingress có một pathType (loại đường dẫn) tương ứng. Có ba pathType được hỗ trợ:
Exact: Khớp với đường dẫn URL một cách chính xác tuyệt đối và phân biệt chữ hoa chữ thường.
Prefix: Khớp dựa trên tiền tố của đường dẫn URL được phân tách bởi dấu /. Việc so khớp (match) là có phân biệt chữ hoa thường và được thực hiện trên từng thành phần của đường dẫn URL. Một thành phần của đường dẫn URL chính là 1 label được phân tách bằng dấu phân cách / trong đường dẫn URL (Nghĩa là đường dẫn URL có thể bao gồm nhiều cấp phân tách nhau bởi dẫu /, mỗi chuỗi đứng giữa 2 dấu / chính là 1 label, mỗi label chính là 1 thành phần của đường dẫn URL). Một request URL được xem như là khớp với 1 trường path (được cấu hình trong đặc tả Ingress) khi toàn bộ giá trị của path (có thể gồm nhiều thành phần phân tách bằng dấu /) khớp với các label đầu tiên (tính từ bên trái của đường dẫn URL). Ví dụ /example1/path1 khớp với /example1/path1/path2, nhưng không khớp với /example1/path1path2
Ví dụ cụ thể:
Path type | Path(s) | Request path(s) | Có match hay không? |
---|---|---|---|
Exact |
|
| Có |
Exact |
|
| Không |
Exact |
|
| Không |
Exact |
|
| Không |
Prefix |
| (all paths) | Có |
Prefix |
|
| Có |
Prefix |
|
| Có |
Prefix |
|
| Không |
Prefix |
|
| Có |
Prefix |
|
| Có |
Prefix |
|
| Có |
Prefix |
|
| Có |
Prefix |
|
| Không |
Prefix |
|
| Có |
Prefix |
|
| Có |
Prefix |
|
| Có |
Prefix |
|
| Không |
Trong một số trường hợp, nhiều path bên trong Ingress sẽ khớp với đường dẫn của request URL. Trong những trường hợp đó, quyền ưu tiên sẽ được trao cho path khớp dài nhất đầu tiên. Nếu hai path vẫn có độ dài khớp bằng nhau thì quyền ưu tiên sẽ theo thứ tự rule được tạo trên Ingress Yaml file.
Ingress rule
Mỗi HTTP rule chứa các thông tin sau:
1 host tùy chọn. Nếu không có host (ta có thể hiểu là 1 tên miền) nào được chỉ định nên rule sẽ được áp dụng cho tất cả HTTP traffic đi vào (inbound) địa chỉ IP đã được chỉ định. Nếu có chỉ định host (ví dụ example1.com) thì rule chỉ áp dụng cho host đó thôi.
1 danh sách các đường dẫn (path) (ví dụ
/example1/host1
), mỗi path có 1 service backend gắn liền với nó được định nghĩa bởi Service Name và Port Number. Cả host và path phải khớp với nội dung của incoming request trước khi bộ cân bằng tải điều hướng traffic đến Services mong muốn.1 backend là tổ hợp của tên Services và Port Number. HTTP và HTTPS request đi đến Ingress và có URL khớp với host và path của rule sẽ được gửi đến danh sách các backend.
Ví dụ: Host có khớp với Host header theo bảng:
Host | Host header | Có match hay không? |
---|---|---|
Có | ||
Không | ||
Không |
Last updated