代理服务和部署之间的 Kubernetes 自定义 CA 和证书
Kubernetes custom CA and certificate between proxy service and deployment
我的 Kubernetes 集群有 2 个应用程序。
- 通过
https://
连接到外部 API 的部署 - 让我们称之为 Fetcher
- 终止
HTTPs
请求以检查 headers 速率限制的代理服务 - 称为 Proxy
部署使用提到的代理,图片如下架构
Fetcher deployment <-- private network / Kubernetes --> Proxy <-- Internet --> external API
在我迁移到 Kubernetes 之前,通过创建 self-signed 证书和证书颁发机构 CA 来信任并将它们放在 Fetcher 和代理上来解决这个问题。证书仅包含 docker 作为 SAN 的 IP 地址。
X509v3 Subject Alternative Name:
DNS:example.com, DNS:www.example.com, DNS:mail.example.com, DNS:ftp.example.com, IP Address:192.168.99.100, IP Address:192.168.56.1, IP Address:192.168.2.75
但是我不能在 Kubernetes 中执行此操作,可以吗?由于无法保证部署和服务的 IP 地址,因此 IP 可能会更改。我正在使用 Kubernetes CoreDNS
解决方案,我可以在证书中添加 dns 地址吗?我对 ssl/certificates
了解不够,无法理解。
如何在 Kubernetes 中创建证书和 CA 以在代理发送的证书与获取器上的自定义证书颁发机构之间建立信任?
如果您通过服务公开代理部署,那么默认情况下它会被分配一个 ClusterIP
,即使 pods 运行 代理的 IP 也是稳定的可能会随着时间而改变。您将希望使用与服务的 ClusterIP
对应的 IPSAN 生成证书,而不是 pods 的任何 IP。查看 official docs regarding the "service" concept.
我的 Kubernetes 集群有 2 个应用程序。
- 通过
https://
连接到外部 API 的部署 - 让我们称之为Fetcher
- 终止
HTTPs
请求以检查 headers 速率限制的代理服务 - 称为Proxy
部署使用提到的代理,图片如下架构
Fetcher deployment <-- private network / Kubernetes --> Proxy <-- Internet --> external API
在我迁移到 Kubernetes 之前,通过创建 self-signed 证书和证书颁发机构 CA 来信任并将它们放在 Fetcher 和代理上来解决这个问题。证书仅包含 docker 作为 SAN 的 IP 地址。
X509v3 Subject Alternative Name:
DNS:example.com, DNS:www.example.com, DNS:mail.example.com, DNS:ftp.example.com, IP Address:192.168.99.100, IP Address:192.168.56.1, IP Address:192.168.2.75
但是我不能在 Kubernetes 中执行此操作,可以吗?由于无法保证部署和服务的 IP 地址,因此 IP 可能会更改。我正在使用 Kubernetes CoreDNS
解决方案,我可以在证书中添加 dns 地址吗?我对 ssl/certificates
了解不够,无法理解。
如何在 Kubernetes 中创建证书和 CA 以在代理发送的证书与获取器上的自定义证书颁发机构之间建立信任?
如果您通过服务公开代理部署,那么默认情况下它会被分配一个 ClusterIP
,即使 pods 运行 代理的 IP 也是稳定的可能会随着时间而改变。您将希望使用与服务的 ClusterIP
对应的 IPSAN 生成证书,而不是 pods 的任何 IP。查看 official docs regarding the "service" concept.