簡體   English   中英

支持 TLS 的通配符域:Kubernetes GKE 上的入口

[英]Supporting wildcard domains for TLS: Kubernetes Ingress on GKE

我正在開發一個動態部署 kubernetes 資源的應用程序,我希望能夠為所有這些資源提供共享的 SSL 證書。 在任何給定時間,所有服務都具有路徑*.*.*.example.com

我聽說 cert-manager 會自動配置/重新配置證書,但如果開銷太大,我不一定需要自動配置。 該解決方案還需要能夠處理這些嵌套的 url 子域。

對最簡單的方法有什么想法嗎?

Have a look at nginx-ingress , which is a Kubernetes Ingress Controller that essentially makes it possible to run Nginx reverse proxy/web server/load balancer on Kubernetes.

nginx-ingress 是圍繞Ingress資源構建的。 它將監視 Ingress 對象並管理配置映射中的 nginx 配置。 您可以通過 Kubernetes 入口資源規則和nginx 特定注釋來定義強大的流量路由規則、緩存、url 重寫等等。

這是一個帶有一些路由的 Ingress 示例。 你可以用它做更多的事情, 它確實支持通配符域路由

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$1
    cert-manager.io/cluster-issuer: letsencrypt-prod
  name: my-ingress
spec:
  rules:
  - host: app1.domain.com
    http:
      paths:
      - backend:
          serviceName: app1-service
          servicePort: http
        path: /(.*)

  - host: app2.sub.domain.com
    http:
      paths:
      - backend:
          serviceName: app2-service
          servicePort: http
        path: /(.*)
  tls:
  - hosts:
    - app1.domain.com
    secretName: app1.domain.com-tls-secret
  - hosts:
    - app2.sub.domain.com
    secretName: app2.sub.domain.com-tls-secret

注釋部分非常重要。 上面表明 nginx-ingress 應該管理這個 Ingress 定義。 此注釋部分允許指定額外的 nginx 配置,在上面的示例中,它指定了一個 url 重寫目標,可用於重寫規則部分中的 url。

有關在 GKE 上安裝 nginx-ingress 的信息,請參閱 此社區帖子

您會注意到注釋還有一個證書管理器特定的注釋,如果安裝了該注釋,它將指示證書管理器根據tls部分下定義的主機和機密頒發證書。

cert-manager與 nginx-ingress 結合使用,這並不復雜,您可以設置自動證書創建/更新。

很難知道部署動態應用程序的設置的確切性質。 但實現配置的一些可能方法是:

  • 讓每個應用程序使用自己的路由規則和 TLS 配置定義自己的 Ingress,每次部署應用程序時都會安裝/更新
  • 每個域/子域都有一個入口。 然后,您可以使用該子域的路由規則指定通配符子域和 tls 部分
  • 或者,您可能擁有一個處理所有域和路由的 uber Ingress。

粒度越細,控制越多,但活動部件也越多。 我不認為這是一個問題。 對於最后兩個選項,它實際上取決於您的動態應用程序部署的性質。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM