【问题标题】:Kubernetes Nginx Ingress to pod communication over httpsKubernetes Nginx Ingress 通过 https 进行 pod 通信
【发布时间】:2020-12-22 17:50:15
【问题描述】:

我正在研究如何在 Nginx Ingress -> 后端服务之间实现 https 安全连接。到目前为止,我在 Nginx Ingress 控制器中设置了 SSL,该控制器使用 Lets Encrypt 证书管理器使用 http-01 质询来轮换证书。

这是我的场景:

  1. 来自互联网的客户端 -> 2. 负载均衡器 -> 3. 入口控制器(终止 TLS 流量) -> 4. 服务(端口 80) -> 5. Pod(端口 80)。

所以我的问题是如何确保入口控制器和 pod 之间的通信安全,以便对流量进行端到端加密?我需要自己的证书颁发机构来执行此操作吗?如果是这样,有没有像Cert manager一样可以处理证书管理的开源解决方案?

【问题讨论】:

  • Ingress 控制器应该只是您集群的一部分,并且集群应该驻留在 VPN 本身中,您是否在谈论诸如“在集群内进行基于 SSL 的通信”之类的东西,它有什么好处甚至?

标签: nginx ssl kubernetes cert-manager


【解决方案1】:

1. Nginx 入口控制器 + DAPR

我不确定我是否可以在此处发布 youtube 网址(至少我从未见过有人这样做)但是.. 我认为这 100% 正是您想要的。您的场景在第一个主题中讨论,您只需要观看它。另外还有一个好处 - 您将在那里看到逐步安装。我个人觉得这个视频很有帮助

Secure Ingress pods communication

2. 您可以使用 Istio 本身实现这一目标。 Istio By Example!:Secure Ingress

3. Istio 的 Istio + Calico 网络策略

Enforce network policy for Istio

Calico 对 Istio 服务网格的支持具有以下好处:

-Pod 流量控制

允许您限制 Pod 内部和外部的入口流量,并减轻对支持 Istio 的应用程序的常见威胁。

-支持安全目标

支持采用零信任网络模型来确保安全,包括流量加密、多个执行点和多个身份验证标准。

【讨论】:

    【解决方案2】:

    将 let`s encrypt 替换为 aws 证书,因为它们是免费的。 验证您在集群中使用的域,然后编辑入口控制器的主服务。如果您使用 aws,请使用此注释。

    注释: service.beta.kubernetes.io/aws-load-balancer-ssl-cert:“arn:aws:acm:XXXXXXXX” service.beta.kubernetes.io/aws-load-balancer-backend-protocol:“http” service.beta.kubernetes.io/aws-load-balancer-ssl-ports:“https” service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout:“60” service.beta.kubernetes.io/aws-load-balancer-ssl-negotiation-policy:"ELBSecurityPolicy-TLS-1-2-2017-01"

    【讨论】:

      猜你喜欢
      • 2020-05-14
      • 2022-01-08
      • 2019-06-20
      • 2021-03-04
      • 1970-01-01
      • 2019-03-08
      • 1970-01-01
      • 2020-04-20
      • 1970-01-01
      相关资源
      最近更新 更多