Ingress là gì

      90

Lời mở đầu

Kubernetes Ingress không phải là một service Kubernetes. Rất đơn giản dễ dàng, nó chỉ là 1 trong những Nginx Pod chuyển hướng trải nghiệm mang đến những service nội cỗ (ClusterIP) khác. Bản thân có thể truy vấn thông qua service Kubernetes, phổ biến tốt nhất là LoadBalancer.

Bạn đang xem: Ingress là gì

Hãy gọi trước phần 1 tại phía trên : Kubernetes Service là gì ? Tại sao phải áp dụng Kubernetes – phần 1

Tại sao thực hiện Ingress?

Tại sao ư ? Quý khách hàng áp dụng nó để làm mang đến service nội bộ có thể truy cập trường đoản cú bên ngoài cluster của người tiêu dùng. Nó tiết kiệm cho bạn những IPhường tĩnh quý hiếm, bởi vì các bạn không nên rất cần được khai báo các LoadBalancer. Trong khi, còn chất nhận được cấu hình nhiều hơn thế nữa cùng cấu hình thiết lập thuận lợi hơn.

Những điều họ đang tra cứu hiểu

Thứ nhất chúng ta tiến hành một chuyến tham quan ngắn vào sever http, đặc biệt là Nginx, xem chúng chuyển động và phần đông gì bọn chúng có tác dụng.Sau đó, chúng ta sẽ tùy chỉnh thiết lập bằng tay thủ công Ingress, cho nên vì vậy, không yêu cầu áp dụng tài ngulặng Ingress Kubernetes làm sao cả.Tiếp theo, đang thấy rằng Ingress Kubernetes ko gì khác hơn là 1 trong những máy chủ Nginx được thông số kỹ thuật sẵn.

Nghe thì cạnh tranh hiểu, hãy thuộc đi qua từng ví dụ để hiểu hơn nào

Tìm hiểu sâu về sever HTTP..

Ở phía trên, chúng ta lùi lại thời gian trước khi gồm container, Kubernetes với thế giới của dữ liệu đám mây (Cloud).

Máy công ty HTTPhường. (Nginx) có thể làm cho gì?

Nó có thể cảm nhận trải đời qua giao thức HTTP. cho 1 filepath cụ thể, bình chọn filepath đó trên hệ thống tệp đính kèm cùng trả lại trường hợp tệp kia tồn tại:

*

Trong Nginx, vấn đề này hoàn toàn có thể được thực hiện cùng với một chiếc gì đấy như:

location /folder root /var/www/; index index.html;

Máy nhà rất có thể làm thêm đông đảo gì ?

Nó hoàn toàn có thể nhận được yêu cầu cho filepath rõ ràng, chuyển hướng từng trải đó mang đến một sever khác (Có nghĩa là nó hoạt động như proxy) với kế tiếp chuyển sang làn đường khác phản hồi của dòng sản phẩm nhà kia nhằm quay trở về thứ khách. Đối cùng với sản phẩm công nghệ khách hàng không có gì biến hóa, tác dụng nhận ra vẫn chính là tệp được thử khám phá (giả dụ nó tồn tại).

*

Chúng ta không đi sâu vào việc này nhưng với Nginx, chuyển sang làn đường khác proxy rất có thể được định thông số kỹ thuật như sau:

location /folder proxy_pass http://second-nginx-server:8000;Như vậy có nghĩa là Nginx có thể Giao hàng những tệp trường đoản cú hệ thống tệp hoặc chuyển làn phản hồi cho những máy chủ không giống cùng trả lại bình luận của họ, bằng phương pháp vào vai trò là proxy.

lấy một ví dụ đơn giản và dễ dàng Kubernetes:

Sử dụng service ClusterIP

Một đợt tiếp nhữa, tự thời điểm này, chúng ta nên gọi service Kubernetes. Chúng ta có nhị node , họ bỏ lỡ những node master ở chỗ này. Và bao gồm nhị service là service-nginx cùng service-python thả trỏ đến những pod(nhóm) khác nhau.

Các Services không trên ngẫu nhiên Node cụ thể như thế nào, mang sử bọn chúng có sẵn sống đều chỗ trong cluster.

*

Quý Khách nên phát âm hầu hết gì đã xẩy ra ở chỗ này. Bên vào cluster(cụm), bạn cũng có thể tiếp cận các pod Nginx cùng những pod Pykhông lớn thông qua những service của mình. Tiếp theo, bọn họ có muốn cung cấp đa số trang bị kia từ bỏ phía bên ngoài nhiều. Vì vậy, thay đổi bọn chúng thành những service LoadBalancer.

Sử dụng service LoadBalancer

Quý khách hàng hoàn toàn có thể thấy rằng chúng ta sẽ biến đổi service ClusterIP.. thành service LoadBalancer. Bởi vị họ bao gồm cluster Kubernetes lưu trữ cùng với Nhà hỗ trợ đám mây có thể cách xử lý việc này (Gcloud, AWS, DigitalOcean khắc). Nó tạo thành hai LoadBalancer bên ngoài để chuyển sang làn đường khác trải đời đến các Node IP. phía bên ngoài của bọn chúng, tiếp nối đưa tìm hiểu các service ClusterIPhường bên phía trong.

*

Chúng ta thấy nhì LoadBalancer, từng một số loại gồm IP. riêng rẽ. Nếu chúng ta gửi đòi hỏi cho tới LoadBalancer 22.33.44.55, nó sẽ tiến hành đưa đào bới nội bộ của service-nginx. Nếu bọn họ gửi đòi hỏi tới 77.66.55.44, nó sẽ được gửi tìm hiểu nội cỗ của service – pydong dỏng.

Điều này cực kỳ giỏi vời! Nhưng can hệ IPhường rất ít và cực hiếm LoadBalancer dựa vào vào nhà cung cấp đám mây. Bây tiếng hãy tưởng tượng bọn họ không những có nhị mà lại những service nội bộ không giống mong sản xuất LoadBalancer,với ngân sách vẫn tạo thêm.

Có một giải pháp khác có thể chấp nhận được họ sử dụng một LoadBalancer (với cùng 1 IP) dẫu vậy vẫn tiếp cận thẳng cả nhị service nội bộ? Hãy nhằm tò mò điều này trước tiên bằng phương pháp thực hiện một cách tiếp cận thủ công.

Cấu hình bằng tay service Nginx như proxy

Theo diễn đạt trước đó, Nginx rất có thể hoạt động nhỏng một proxy. Trong hình hình họa sau đây, chúng ta thấy một service bắt đầu điện thoại tư vấn là service-nginx-proxy với này cũng là service LoadBalancer nhất của chúng ta. service-nginx-proxy vẫn sẽ trỏ mang đến một hoặc các điểm cuối Nginx-pod-endpoints. Hai service không giống tự trước được biến hóa quay trở về thành service ClusterIP 1-1 giản:

*

Có thể thấy rằng bọn họ chỉ đạt một LoadBalancer (11,22.33.44) nhưng với những url http khác nhau, những đề nghị được hiển thị color xoàn là và một mục tiêu còn chỉ đựng văn bản không giống nhau (các url yêu cầu).

service-nginx-proxy quyết định (bằng phương pháp sử dụng Nginx proxy và vị trí), tùy ở trong vào các url được đưa, service như thế nào chuyển làn dựa trên đề nghị.

Trong ngôi trường thích hợp này, bọn họ có nhị gạn lọc, đỏ với xanh. Chuyển phía màu đỏ mang đến service-nginx trong những số ấy chuyển sang làn đường khác màu xanh da trời cho service-python..

Xem thêm: Comic Con Là Gì - Ho Chi Minh Comic Con

# very simplified Nginx config examplelocation /thư mục proxy_pass http://service-nginx:3001;location /other proxy_pass http://service-python:3002;Lúc Này rất cần được định thông số kỹ thuật service-nginx-proxy theo cách bằng tay. Giống như sinh sản những tệp thông số kỹ thuật Nginx phù hợp trỏ mang lại các hình thức dịch vụ ClusterIPhường. Điều này là 1 giải pháp, vô cùng hiệu quả cùng phổ biến.

Và cũng chính vì đấy là một giải pháp thông dụng, Kubernetes Ingress được tạo ra để giúp thông số kỹ thuật thuận tiện cùng dễ quản lý rộng.

Từ thời điểm đó, bạn nên đọc điểm mạnh của ví dụ được hiển thị trong hình hình ảnh trên.

Sử dụng Ingress Kubernetes

So sánh hình ảnh sau với hình ảnh trước. Thực sự ko có khá nhiều đổi khác. Chúng ta chỉ thực hiện một Nginx được thông số kỹ thuật sẵn (Ingress Kubernetes ) sẽ tiến hành tất cả các chuyển hướng proxy, giúp tiết kiệm ngân sách tương đối nhiều các bước thông số kỹ thuật thủ công:

*

Đó là tất cả số đông gì có nhằm phát âm về Ingress Kubernetes. Bây giờ hãy lướt qua một vài cấu hình.

Cài đặt Controller Ingress Kubernetes

Ingress Kubernetes là 1 trong Tài nguim Kubernetes bổ sung cập nhật được cài đặt thêm nlỗi sau :

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.24.1/deploy/mandatory.yamlkubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.24.1/deploy/provider/cloud-generic.yamlSử dụng lệnh sau, bạn sẽ thấy những tài nguim k8s được thiết đặt với namespace: ingress-nginx:

kubectl get svc,pod --namespace=ingress-nginx

*
quý khách hàng thấy service LoadBalancer siêu thông thường cùng với IP.. phía bên ngoài và pod. quý khách thậm chí còn có thể chạy câu lệnh kubectl exec vào pod đó để xem nó chứa sever Nginx được cấu hình sẵn:

*

Trong nginx.conf bạn sẽ thấy các thiết lập chuyển làn proxy khác biệt cùng thông số kỹ thuật tương quan không giống.

lấy ví dụ như Config Ingress Kubernetes

Một ví dụ về Ingress Kubernetes và yaml áp dụng trông như vậy này:

# just example, not testedapiVersion: networking.k8s.io/v1beta1kind: Ingressmetadata: annotations: kubernetes.io/ingress.class: nginx namespace: default name: test-ingressspec: rules: - http: paths: - path: /thư mục backend: serviceName: service-nginx servicePort: 3001 - http: paths: - path: /other backend: serviceName: service-pynhỏ servicePort: 3002Chúng ta đã đề nghị chế tạo ra yaml thông qua câu lệnh kubectl create -f ingress.yaml. Yaml này tiếp nối sẽ tiến hành biến đổi do Controller Ingress được thiết lập trước kia thành cấu hình Nginx.

lấy một ví dụ Ingress Kubernetes về khác Namespaces

Bây tiếng ví như một trong số service nội cỗ của người tiêu dùng, mà Ingress đề xuất gửi đào bới, mà lại nghỉ ngơi namespace khác thì sao? Trong thông số kỹ thuật Ingress, chúng ta chỉ hoàn toàn có thể chuyển đào bới những service trong và một namespace.

Nếu bạn xác định các cấu hình yaml Ingress, thì các cấu hình này được thích hợp độc nhất vô nhị với nhau thành một thông số kỹ thuật Nginx bởi vì một Controller Ingress duy nhất. Có nghĩa: toàn bộ gần như sẽ áp dụng và một IPhường LoadBalancer.

Vì vậy, hãy coi service-nginx cùng với namespace: default. yaml đang nhỏng này

# just example, not testedapiVersion: networking.k8s.io/v1beta1kind: Ingressmetadata: annotations: kubernetes.io/ingress.class: nginx namespace: default name: ingress1spec: rules: - http: paths: - path: /folder backend: serviceName: service-nginx servicePort: 3001Và service-python với namespace: namespace2:

# just example, not testedapiVersion: networking.k8s.io/v1beta1kind: Ingressmetadata: annotations: kubernetes.io/ingress.class: nginx namespace: namespace2 name: ingress2spec: rules: - http: paths: - path: /other backend: serviceName: service-pyhẹp servicePort: 3002

Làm giải pháp làm sao nhằm điều khiển và tinh chỉnh cấu hình Ingress Nginx?

quý khách hoàn toàn có thể làm cho điều đó bằng phương pháp ghi chú trên Ingress Kubernetes. Ví dụ: chúng ta cũng có thể định cấu hình những tùy chọn không giống nhau mà chúng ta thường hoàn toàn có thể định cấu hình thẳng vào Nginx:

kind: Ingressmetadata: name: ingress annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/proxy-connect-timeout: "30" nginx.ingress.kubernetes.io/proxy-send-timeout: "500" nginx.ingress.kubernetes.io/proxy-read-timeout: "500" nginx.ingress.kubernetes.io/send-timeout: "500" nginx.ingress.kubernetes.io/enable-cors: "true" nginx.ingress.kubernetes.io/cors-allow-methods: "*" nginx.ingress.kubernetes.io/cors-allow-origin: "*"...quý khách thậm chí còn rất có thể làm những quy tắc siêu rõ ràng như:

nginx.ingress.kubernetes.io/configuration-snippet: | if ($host = "www.wuestkamp.com" ) rewrite ^ https://wuestkamp.com$request_uri permanent; Những ghi chú này sau đó sẽ được dịch sang thông số kỹ thuật Nginx. Quý khách hàng luôn luôn hoàn toàn có thể đánh giá bọn chúng bằng phương pháp liên kết thủ công kubectl exec vào pod ingress Nginx với coi thông số kỹ thuật.

https://github.com/kubernetes/ingress-nginx/tree/master/docs/user-guide/nginx-configuration

https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md#lua-resty-waf

Kiểm tra Ingress / Nginx Logs

Tìm ra những vấn đề hoặc lỗi bằng cách xem nhật ký Ingress:

kubectl logs -n ingress-nginx ingress-nginx-controller-6cfd5b6544-k2r4n

*

Sử dụng CURD để test

Nếu bạn muốn bình chọn các quy tắc chuyển qua làn đường khác Ingress / Nginx của bản thân, có thể thực hiện curl -v yourhost.com nỗ lực bởi vì trình chuẩn y của người tiêu dùng để tránh thực hiện cỗ đệm, v.v.

Cách chuyển làn đường / nguyên tắc Ingress

Trong các ví dụ trong nội dung bài viết này, chúng ta áp dụng các đường truyền như /folder hoặc /other/folder nhằm gửi hướng đến các hình thức dịch vụ khác biệt. Đây được Hotline là một list các băng thông.

Nó cũng rất có thể rành mạch các thử khám phá theo tên sever của mình nhằm chuyển hướng làn phân cách api.myurl.com cùng website.myurl.com lịch sự các service ClusterIP nội cỗ không giống nhau. Điều này có thể trông như thế này:

apiVersion: networking.k8s.io/v1beta1kind: Ingressmetadata: name: simple-fanout-examplespec: rules: - host: api.myurl.com http: paths: - path: /foo backend: serviceName: service1 servicePort: 4200 - path: /bar backend: serviceName: service2 servicePort: 8080 - host: trang web.myurl.com http: paths: - path: / backend: serviceName: service3 servicePort: 3333

SSL / HTTPS

SSL. quý khách hàng đang nghe nói về nó? quý khách rất có thể mong mỏi làm cho website của công ty truy vấn trải qua https an toàn. Ingress Kubernetes hỗ trợ thuận lợi TLS Termination, điều ấy Tức là nó giải pháp xử lý toàn bộ các tiếp xúc SSL, giải mã / ngừng những hiểu biết SSL với sau đó gửi chúng được lời giải đến các service nội bộ của bạn.

Điều này thật xuất xắc nếu nhiều service nội cỗ của công ty đã thực hiện cùng một chứng chỉ SSL (thậm chí còn rất có thể là ký tự đại diện), bởi vì sau buộc phải cấu hình một đợt trên Ingress của chính mình chđọng không phải bên trên toàn bộ những service nội bộ không giống.

apiVersion: networking.k8s.io/v1beta1kind: Ingressmetadata: name: tls-example-ingressspec: tls: - hosts: - sslexample.foo.com secretName: testsecret-tls rules: - host: sslexample.foo.com http: paths: - path: / backend: serviceName: service1 servicePort: 80Quý Khách chỉ việc bảo đảm rằng giả dụ có khá nhiều tài nguim Ingress trong những namespaces khác biệt, kín đáo TLS cũng rất cần phải có sẵn trong toàn bộ những namespaces, chỗ khẳng định tài nguim Ingress bằng phương pháp áp dụng nó.

Kết luận

Qua bài viết bọn họ đã gọi rộng về Kubernetes cùng phương pháp áp dụng chúng vào từng ngôi trường thích hợp như thế nào mang lại hiệu quả.

AE388 - AE3888 | Trang Chủ Venus Casino ✔️
tăng like fanpage