簡體   English   中英

Kubernetes 內部 nginx 入口 controller 帶 ZEA52C36203C5F99C22CE2442Dssl-ZB1 端接

[英]Kubernetes internal nginx ingress controller with SSL termination & ssl-passthrough

我對使用 helm 圖表部署容器非常陌生,而且我也從未使用過 nginx 控制器或入口控制器。 但是,我被要求考慮改進我們的內部 nginx 入口控制器以允許 SSL 直通。

現在我們有外部(面向公眾)和內部控制器。 公共的允許 SSL 直通,而內部的則有 SSL 終止。 我還被告知 nginx 是一個反向代理,它基於 URL 中的標頭工作。

我希望有人能幫我解決這個用於內部入口控制器的掌舵圖。 目前我的印象是不可能在同一個入口控制器上擁有 SSL 終止以及 SSL 直通。 我自己回答了這個問題: https://serversforhackers.com/c/tcp-load-balancing-with-nginx-ssl-pass-thru

我們當前的(內部)入口代碼:

---

rbac:
  create: true

controller:
  ingressClass: nginx-internal
  service:
    annotations:
      service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
      service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:eu:110:certificate/62-b3
      service.beta.kubernetes.io/aws-load-balancer-ssl-ports: !!str 443
      service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
      service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: !!str 3600

    targetPorts:
      https: 80

  replicaCount: 3

defaultBackend:
  replicaCount: 3

我可以簡單地添加以下內容嗎?

controller:
    extraArgs:
        enable-ssl-passthrough: ""

注意:上面的代碼是我們在外部入口 controller 上使用的。

另外,我發現了這個: Ingress and SSL Passthrough

我可以只使用 go 並混合注釋嗎? 還是注釋只關心注釋來自的“頂級域級別”? 例如:

service.beta.kubernetes.io
nginx.ingress.kubernetes.io

兩者都來自域 kubernetes.io,還是子域有所不同? 我的意思是: https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md該頁面上沒有顯示任何 service.beta 注釋。 .

注釋中的 extraArg ssl-passthrough 配置和 ssl-passthrough 配置有什么區別?

我主要在尋找有關如何在不破壞內部入口控制器上的 SSL 終止的情況下使 SSL 直通工作的答案。 但是,就我的其他問題 go 而言,獲得更多洞察力和知識的任何額外信息也將不勝感激:)

所以我找到了自己問題的答案:注釋似乎是“配置項”。 我使用引號是因為我找不到更好的術語。 extraArgs 參數是您可以將任何參數傳遞給 controller 的地方,就好像它是命令行參數一樣。 而且我認為可以肯定地說注釋可以是同一頂級域中的任何一個。 我還沒有找到任何不是來自另一個域然后 kubernetes.io

為了讓我的入口 controller 與 SSL 終止 controller 並排工作,舵圖如下所示:

---
rbac:
  create: true

controller:
  ingressClass: nginx-internal-ssl-passthrough
  service:
    annotations:
      nginx.ingress.kubernetes.io/ssl-passthrough: "true"
      service.beta.kubernetes.io/aws-load-balancer-type: nlb
      service.beta.kubernetes.io/aws-load-balancer-internal: "true"
      service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: "true"
      service.beta.kubernetes.io/aws-load-balancer-additional-resource-tags: "tag3=value3, tag3=value3, tag3=value3, tag3=value3"
    targetPorts:
      https: 443
  replicaCount: 2
  extraArgs:
    enable-ssl-passthrough: ""

defaultBackend:
  replicaCount: 2

花了我大約 2 天的時間研究/搜索 web 和 6 個部署,以使整個設置與 AWS nlb、啟用 ssl-passthrough、跨區域負載平衡等一起工作。但是在找到以下頁面后,它變得非常快: https: //kubernetes.github.io/ingress-nginx/deploy/ https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/ https://kubernetes.io/docs/concepts/服務-網絡/服務/

最后一頁對我幫助很大。 如果其他人開始為公共或私有連接部署 SSL 終止和 SSL-passthrough,我希望這也有幫助。

從這里您可以了解如何將 HTTPS 流量重定向到沒有 SSL 終止的 pod https://stackoverflow.com/a/66767691/1938507

暫無
暫無

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

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