Ingress là một đối tượng API quản lý việc truy cập từ bên ngoài vào các dịch vụ trong một cụm, thường là giao thức HTTP. Ingress có thể cung cấp cân bằng tải, chấm dứt SSL và địa chỉ dựa trên tên.
Contents
Thuật ngữ
Để làm rõ, hướng dẫn này xác định các thuật ngữ sau:
Bạn đang xem: Ingress
- Node: Một máy làm việc trong Kubernetes, là một phần của cụm.
- Cụm: Một tập hợp các Node chạy các ứng dụng container được quản lý bởi Kubernetes. Ví dụ này, và trong hầu hết các triển khai Kubernetes phổ biến, các node trong cụm không phải là một phần của internet công cộng.
- Bộ định tuyến biên: Một bộ định tuyến thực thi chính sách tường lửa cho cụm của bạn. Điều này có thể là một cổng quản lý bởi nhà cung cấp đám mây hoặc một thiết bị vật lý.
- Mạng cụm: Một tập hợp các liên kết, logic hoặc vật lý, hỗ trợ truyền thông trong một cụm theo mô hình mạng của Kubernetes.
- Dịch vụ: Dịch vụ Kubernetes xác định một tập hợp các Pod bằng cách sử dụng bộ chọn nhãn. Trừ khi có đề cập khác, dịch vụ được cho là chỉ có IP ảo có thể định tuyến trong mạng cụm.
Ingress là gì?
Ingress tiết lộ các tuyến đường HTTP và HTTPS từ bên ngoài cụm vào các dịch vụ trong cụm. Định tuyến lưu lượng được điều khiển bởi các quy tắc được xác định trên nguồn Ingress.
Dưới đây là một ví dụ đơn giản, trong đó một Ingress gửi tất cả lưu lượng của nó đến một Dịch vụ:
Một Ingress có thể được cấu hình để cung cấp URL có thể truy cập từ bên ngoài cho Dịch vụ, cân bằng tải lưu lượng, chấm dứt SSL/TLS và cung cấp hosting ảo dựa trên tên. Người điều khiển Ingress có trách nhiệm thực hiện Ingress, thường là bằng cách sử dụng một cân bằng tải, mặc dù nó cũng có thể cấu hình bộ định tuyến biên hoặc các giao diện trước bổ sung để hỗ trợ xử lý lưu lượng.
Một Ingress không tiết lộ các cổng hoặc giao thức tùy ý. Tiết lộ các dịch vụ khác ngoài HTTP và HTTPS ra Internet thường sử dụng dịch vụ loại Service.Type=NodePort
hoặc Service.Type=LoadBalancer
.
Yêu cầu
Xem thêm : Hướng dẫn cách tạo Google Web Stories một cách chuyên nghiệp
Bạn phải có một bộ điều khiển Ingress để đáp ứng một Ingress. Chỉ tạo một nguồn Ingress không có tác dụng. Bạn có thể cần triển khai một bộ điều khiển Ingress như ingress-nginx. Bạn có thể lựa chọn từ nhiều bộ điều khiển Ingress.
Lý tưởng, tất cả các bộ điều khiển Ingress nên phù hợp với quy định tham chiếu. Tuy nhiên, thực tế, các bộ điều khiển Ingress khác nhau hoạt động một chút khác nhau.
Tài nguyên Ingress
Ví dụ tài nguyên Ingress tối thiểu:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: example.com
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: foo-service
port:
number: 8080
- path: /bar
pathType: Prefix
backend:
service:
name: bar-service
port:
number: 8080
Cấu hình Ingress cần apiVersion, kind, metadata và spec. Tên của một đối tượng Ingress phải là một tên miền con DNS hợp lệ. Đối với thông tin chung về làm việc với các tệp cấu hình, xem triển khai ứng dụng, cấu hình container, quản lý tài nguyên. Ingress thường sử dụng chú thích để cấu hình một số tùy chọn dựa trên bộ điều khiển Ingress, một ví dụ về đó là chú thích rewrite-target
. Các bộ điều khiển Ingress khác nhau hỗ trợ các chú thích khác nhau. Xem tài liệu cho bộ điều khiển Ingress bạn chọn để biết các chú thích được hỗ trợ.
Spec Ingress có tất cả thông tin cần thiết để cấu hình một cân bằng tải hoặc máy chủ proxy. Quan trọng nhất, nó chứa một danh sách các quy tắc khớp với tất cả các yêu cầu đến. Người điều khiển Ingress chỉ hỗ trợ quy tắc để điều hướng lưu lượng HTTP(S).
Nếu ingressClassName bị bỏ quên, một Ingress class mặc định nên được xác định.
Quy tắc Ingress
Mỗi quy tắc HTTP chứa các thông tin sau:
- Một host tùy chọn. Trong ví dụ này, không có host được chỉ định, vì vậy quy tắc áp dụng cho tất cả lưu lượng HTTP đến địa chỉ IP được chỉ định. Nếu cung cấp một host (ví dụ: foo.bar.com), quy tắc áp dụng cho host đó.
- Một danh sách các đường dẫn (ví dụ: /testpath), mỗi đường dẫn được ánh xạ với backend tương ứng được xác định bằng tên dịch vụ và tên cổng hoặc số cổng dịch vụ. Cả host và đường dẫn phải khớp với nội dung của yêu cầu đến trước khi bộ cân bằng tải chuyển hướng lưu lượng đến Dịch vụ được tham chiếu.
- Một backend là sự kết hợp của tên Dịch vụ và tên cổng như đã mô tả trong tài liệu về Dịch vụ hoặc một backend tài nguyên tùy chỉnh thông qua một CRD. Các yêu cầu HTTP (và HTTPS) đến Ingress khớp với host và đường dẫn của quy tắc sẽ được gửi đến backend được liệt kê.
Xem thêm : Top 5 Công Cụ Kiểm Tra Độ An Toàn Của Website
Một defaultBackend thường được cấu hình trong một bộ điều khiển Ingress để xử lý các yêu cầu không khớp với một đường dẫn nào đó trong spec.
DefaultBackend
Một Ingress không có quy tắc sẽ gửi lưu lượng đến một default backend đơn và .spec.defaultBackend là backend phải xử lý các yêu cầu trong trường hợp đó. DefaultBackend chủ yếu là một tùy chọn cấu hình của bộ điều khiển Ingress và không được chỉ định trong các nguồn Ingress của bạn. Nếu không .spec.rules được chỉ định, .spec.defaultBackend phải được chỉ định. Nếu không đặt defaultBackend, việc xử lý yêu cầu không khớp với bất kỳ quy tắc nào sẽ do bộ điều khiển Ingress quyết định (kiểm tra tài liệu của bộ điều khiển Ingress của bạn để biết cách xử lý trường hợp này).
Nếu không có cái nào trong số các host hoặc đường dẫn khớp với yêu cầu HTTP trong các đối tượng Ingress, lưu lượng được định tuyến đến default backend của bạn.
Backend tài nguyên
Backend tài nguyên là một ObjectRef đến một tài nguyên Kubernetes khác trong cùng namespace với đối tượng Ingress. Resource là một cài đặt độc quyền với Service và sẽ không thông qua kiểm tra nếu cả hai đều được chỉ định. Một cách thường dùng cho backend tài nguyên là định tuyến dữ liệu vào backend lưu trữ đối tượng với tài sản tĩnh.
Sau khi tạo Ingress trên, bạn có thể xem nó bằng lệnh sau:
kubectl get ingress
Loại đường dẫn
Mỗi đường dẫn trong một Ingress cần có một loại đường dẫn tương ứng. Các đường dẫn không bao gồm một loại đường dẫn rõ ràng sẽ không vượt qua kiểm tra. Có ba loại đường dẫn được hỗ trợ:
- ImplementationSpecific: Với loại đường dẫn này, việc khớp được dựa vào IngressClass. Các triển khai có thể xem xét đây là một loại đường dẫn riêng biệt hoặc xử lý nó giống như các loại đường dẫn Prefix hoặc Exact.
- Exact: Khớp chính xác đường dẫn URL với phân biệt chữ hoa chữ thường.
- Prefix: Khớp dựa trên tiền tố đường dẫn URL được chia thành các phần bởi /. Khớp phân biệt chữ hoa chữ thường và được thực hiện trên cơ sở từng phần tử của đường dẫn. Một phần tử đường dẫn đề cập đến danh sách các nhãn trong đường dẫn được chia thành các nhãn bằng dấu ngăn cách /. Một yêu cầu khớp với đường dẫn p nếu mọi p đều là tiền tố của p của yêu cầu.
Ví dụ
Loại đường dẫn | Đường dẫn | Yêu cầu đường dẫn | Khớp? |
---|---|---|---|
Prefix | /(tất cả đường dẫn) | Có | Yes |
Exact | /foo/foo | Có | Yes |
Exact | /foo/bar | Không | No |
Exact | /foo/foo/ | Không | No |
Prefix | /foo/foo, /foo/ | Có | Yes |
Prefix | /aaa/bb/aaa/bbb | Không | No |
Prefix | /aaa/bbb/aaa/bbb | Có | Yes |
Prefix | /aaa/bbb/aaa/bbb/ccc | Có | Yes |
Prefix | /aaa/bbb/aaa/bbb/ | Không | No |
Prefix | /aaa/bbb/aaa/bbb/xyz | Không | No |
Prefix | /(không có đường dẫn) | Có | Yes |
Prefix | /aaa/aaa/ccc | Không | No |
Prefix | /aaa, /aaa/bbb/aaa/bbb | Có | Yes |
Prefix | /aaa, /aaa/bbb/ccc | Có | Yes |
Prefix | / | Không | No |
Mixed | /foo (Prefix), /foo (Exact) | /foo | Yes |
Quy tắc khớp nhiều
Trong một số trường hợp, nhiều đường dẫn trong một Ingress sẽ khớp với một yêu cầu. Trong những trường hợp đó, ưu tiên được ưu tiên cho đường dẫn khớp dài nhất. Nếu hai đường dẫn vẫn được khớp một cách tương đương, ưu tiên sẽ được ưu tiên cho các đường dẫn có loại đường dẫn chính xác hơn loại đường dẫn tiền tố.
Ký hiệu dấu sao
Các Host có thể khớp rõ ràng (ví dụ: “foo.bar.com”) hoặc ký tự đại diện sao (ví dụ: “*.foo.com”). Khớp rõ ràng yêu cầu tiêu đề Host HTTP khớp với trường Host. Khớp ký tự đại diện yêu cầu tiêu đề Host HTTP bằng cấu trúc hậu tố của quy tắc ký tự đại diện.
Host | Tiêu đề Host | Khớp? |
---|---|---|
*.foo.com | bar.foo.com | Khớp |
*.foo.com | baz.bar.foo.com | Không khớp |
*.foo.com | foo.com | Không khớp |
Nguồn: https://diendanseotop.edu.vn
Danh mục: Website