Kubernetes Ingress 打通雲原生微服務路由

Kubernetes,作爲目前最受歡迎的容器編排平臺,爲微服務架構帶來了諸多好處。今天,我們深入探討 Kubernetes 中的 Ingress 組件,這是一個強大的路由系統,負責處理外部訪問集羣服務的請求。

Kubernetes Ingress 概述

Ingress 是 Kubernetes 中的一個 API 對象,它管理外部用戶對服務的訪問,類似於傳統的 HTTP 反向代理和負載均衡器。Ingress 允許您將 HTTP 和 HTTPS 路由規則應用到 Kubernetes 集羣中的服務上,這些規則定義了 URL 的路徑部分如何映射到特定的服務。

Ingress 資源配置詳解

Ingress 資源的配置由以下部分組成:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  annotations:
    # 註解可用來定義控制器特定的配置
spec:
  rules:
    - host: www.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: example-service
                port:
                  number: 8080

上述配置定義了一個 Ingress 規則,當外部請求www.example.com時,會被路由到名爲example-service的 Service 上,且 Service 的監聽端口爲 8080。

配置示例與實戰

接下來,我們將通過例子深入理解如何配置 Ingress。

基本路徑路由

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: simple-ingress
spec:
  rules:
  - http:
      paths:
      - path: /testpath
        pathType: Prefix
        backend:
          service:
            name: test
            port:
              number: 80

此配置表示,所有訪問/testpath路徑的請求都會被轉發到名爲test的 Service 上的 80 端口。

利用 TLS 加密的 Ingress

要爲 Ingress 啓用 HTTPS,可以在 Ingress 資源中指定 TLS 證書。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: tls-example-ingress
spec:
  tls:
  - hosts:
    - ssl.example.com
    secretName: example-tls
  rules:
  - host: ssl.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: ssl-service
            port:
              number: 443

配置告訴 Ingress 控制器,在處理ssl.example.com的請求時使用名爲example-tls的 Kubernetes Secret 來加載 TLS 證書。

Ingress 控制器

Ingress 資源定義了路由規則,但實際上是 Ingress 控制器來執行這些規則。Ingress 控制器有多種實現,例如:

使用 Ingress 控制器時,您需要確保它已在集羣中部署:

kubectl apply -f https://some.url/for/ingress/controller/deployment.yaml

Ingress 與其他服務發現機制的比較

Ingress 與 Kubernetes 中的 NodePort 和 LoadBalancer 服務相比,提供更高級的路由功能,可以處理更復雜的請求分發策略。

當然,選擇哪個取決於您的應用需求。NodePort 和 LoadBalancer 在某些簡單場景下仍有其用歌。

擴展話題:Ingress 與服務網格

Ingress 可以與服務網格如 Istio 一起使用,以實現更爲複雜的路由和服務控制。服務網格提供了諸如服務間的重試、熔斷、流量拆分等高級網絡特性,可以與 Ingress 共同協作。

結論

Kubernetes 的 Ingress 組件是微服務架構中不可或缺的一部分,它使得集羣內的服務能夠以一種可靠和可控的方式對外部請求進行響應和處理。透過本篇文章的深入探討,您現在應該對 Ingress 的概念、配置以及實踐有了清晰的理解。記住,正確配置 Ingress 規則對維護集羣安全和高效運行至關重要。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/6xC3xwX3NFhmpWRd-TSPmA