Kubernetes 内部 nginx 入口控制器,带 SSL 终止 & ssl-passthrough
Kubernetes internal nginx ingress controller with SSL termination & ssl-passthrough
我对使用 helm 图表部署容器还很陌生,而且我也从未使用过 nginx 控制器或入口控制器。
但是,我被要求研究改进我们的内部 nginx 入口控制器以允许 SSL-passthrough.
现在我们有外部(public 面向)和内部控制器。其中 public 的允许 SSL-passthrough,而内部的允许 SSL-termination。
我还被告知 nginx 是一个反向代理,它基于 URL.
中的 headers 工作。
我希望有人能帮我解决我为内部入口控制器准备的这张掌舵图。
目前我的印象是不可能在同一个入口控制器上同时使用 SSL 终止和 SSL-passthrough。
我自己回答了这个问题: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: ""
注意:上面的代码是我们在外部入口控制器上使用的。
另外,我发现了这个:
Ingress and SSL Passthrough
我可以去混合注释吗?还是注解只关心注解的来源'top domain level'?
例如:
service.beta.kubernetes.io
nginx.ingress.kubernetes.io
两者都来自域 kubernetes.io,还是 sub-domain 有区别?
我的意思是:https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md
该页面未显示任何 service.beta 注释 ..
extraArgssl-passthrough配置和注释中的ssl-passthrough配置有什么区别?
我主要是在寻找有关如何在不破坏内部入口控制器上的 SSL-termination 的情况下使 SSL-passthrough 正常工作的答案。
但是,就我的其他问题而言,任何额外信息以获取更多见解和知识也将不胜感激:)
所以我找到了我自己问题的答案:
注释似乎是 'configuration items'。我使用引号是因为我找不到更好的术语。
extraArgs 参数是您可以将任何参数传递给控制器的地方,就好像它是命令行参数一样。
我认为也可以安全地说注释可以是同一顶级域中的任何一个。我还没有找到任何不是来自另一个域的 kubernetes.io
为了让我的入口控制器与 SSL 终止控制器并排工作,掌舵图如下所示:
---
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 天的 researching/searching 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/services-networking/service/
最后一页对我帮助很大。如果其他人开始为 public 或私有连接部署 SSL 终止和 SSL 直通,我希望这也能有所帮助。
从这里您可以了解如何在没有 SSL 终止的情况下将 HTTPS 流量重定向到 pod
我对使用 helm 图表部署容器还很陌生,而且我也从未使用过 nginx 控制器或入口控制器。 但是,我被要求研究改进我们的内部 nginx 入口控制器以允许 SSL-passthrough.
现在我们有外部(public 面向)和内部控制器。其中 public 的允许 SSL-passthrough,而内部的允许 SSL-termination。 我还被告知 nginx 是一个反向代理,它基于 URL.
中的 headers 工作。我希望有人能帮我解决我为内部入口控制器准备的这张掌舵图。 目前我的印象是不可能在同一个入口控制器上同时使用 SSL 终止和 SSL-passthrough。 我自己回答了这个问题: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: ""
注意:上面的代码是我们在外部入口控制器上使用的。
另外,我发现了这个: Ingress and SSL Passthrough
我可以去混合注释吗?还是注解只关心注解的来源'top domain level'? 例如:
service.beta.kubernetes.io
nginx.ingress.kubernetes.io
两者都来自域 kubernetes.io,还是 sub-domain 有区别? 我的意思是:https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md 该页面未显示任何 service.beta 注释 ..
extraArgssl-passthrough配置和注释中的ssl-passthrough配置有什么区别?
我主要是在寻找有关如何在不破坏内部入口控制器上的 SSL-termination 的情况下使 SSL-passthrough 正常工作的答案。 但是,就我的其他问题而言,任何额外信息以获取更多见解和知识也将不胜感激:)
所以我找到了我自己问题的答案: 注释似乎是 'configuration items'。我使用引号是因为我找不到更好的术语。 extraArgs 参数是您可以将任何参数传递给控制器的地方,就好像它是命令行参数一样。 我认为也可以安全地说注释可以是同一顶级域中的任何一个。我还没有找到任何不是来自另一个域的 kubernetes.io
为了让我的入口控制器与 SSL 终止控制器并排工作,掌舵图如下所示:
---
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 天的 researching/searching 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/services-networking/service/
最后一页对我帮助很大。如果其他人开始为 public 或私有连接部署 SSL 终止和 SSL 直通,我希望这也能有所帮助。
从这里您可以了解如何在没有 SSL 终止的情况下将 HTTPS 流量重定向到 pod