CKA [Networking] – Gateway的TLS设置

Gateway TLS的设置模式

Gateway TLS的模式有Terminate和Passthrough模式

1. Terminate

Gateway 负责终止 TLS,加密连接只在客户端到 Gateway 之间,之后使用明文 HTTP。好处就是如果你使用EKS的话,那么可以直接在gateway controller 设置你ACM部署的SSL证书。

如果是使用除了AWS EKS 其他Kubernetes的话,那么就需要在gateway设置tls secret证书。相对Passthrough模式,这个模式也是比较方便的。

2. Passthrough(透传 TLS)

Gateway 不terminate TLS,只是将 TLS 数据流透传到后端服务(如 Ingress 或 Service),由backend terminate TLS。所以会比较麻烦一点,需要后端的app自行管理TLS,并且进行TLS的解析。

  • 由于在gateway阶段不terminate TLS 所以也无法知道http的信息,也导致了无法更改http header,比如http rewrite
  • 可以使用cert manager 自动刷新SSL证书,然后存入secret当中,最后再把secret mount volume到deployment,那么你的backend app就能使用SSL cert进行解密了。
  • 由于Passthrough在处理和设置的时候都是比较多工,但是也比较安全,为了符合compliance,如果PCI等等。

3. Mutual(双向 TLS/mTLS)

目前(截至 Kubernetes Gateway API v1.0),官方 Gateway API 还不原生支持 mTLS 模式的详细配置,但像 Istio Gateway、Contour、NGINX Gateway Controller 等可以通过扩展的 Annotation 或 CRD 支持 mTLS。

Istio Ambient mTLS的流程讲解: https://www.pangzai.win/istio-ambient-mtls%e7%9a%84%e6%b5%81%e7%a8%8b%e8%ae%b2%e8%a7%a3/

Passthrough 和 Terminate 的横向对比

TLS Mode所支持的Route Type

取决于你想要使用的TLS Mode是哪个。不同的TLS Mode有局限性,比如你想使用Passthrough Mode那么只能选择TLSRoute type 和使用TLS的protocol

Loading

Facebook评论