gpt4 book ai didi

kubernetes - 通过 Istio VirtualService/Gateway 服务的应用程序的 Letsencrypt/Cert Manager 工作流程

转载 作者:行者123 更新时间:2023-12-02 12:01:15 27 4
gpt4 key购买 nike

是否有通用(或任何)工作流程来为在 Istio VirtualService 和网关中配置的应用程序颁发和更新 LE 证书? Istio 文档仅涵盖 Ingress 用例,我认为它不涵盖处理续订。

My real world use case is about making this work with a wildcard cert and custom applications, but for the sake of simplicity, I want to figure this out using the Prometheus service installed with the Istio demo. The VirtualService and Gateway are necessary for my real world use case.



这是我目前使用自签名证书通过 https 为 Prometheus 服务的方式。我正在运行 Istio 版本 1.5.2在 GKE K8s 版本上 1.15.11 .证书管理器也已安装。

那么我将如何调整它以使用 Cert Manager 为 prom.example.com 颁发和更新 LE 证书?
---
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: prometheus-gateway
#namespace: istio-system
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 443
name: http-prom
protocol: HTTPS
hosts:
- "prom.example.com"
tls:
mode: SIMPLE # enables HTTPS on this port
serverCertificate: /etc/istio/ingressgateway-certs/tls.crt
privateKey: /etc/istio/ingressgateway-certs/tls.key
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: prometheus-vs
spec:
hosts:
- "prom.example.com"
gateways:
- prometheus-gateway
http:
- match:
- port: 443
route:
- destination:
host: prometheus
port:
number: 9090

最佳答案

TL;DR

配置cert-manager通过 DNS 域验证颁发证书,自动处理续订。

关于 Istio 文档中示例的一些注释有望阐明工作流程:

  • 证书经理 对 Istio 一无所知,它的关键作用是颁发和更新证书,然后将它们保存到 kubernetes 中的 secret 对象中。
  • LE ACME 验证通常使用 DNS,例如AWS Route53
  • 颁发的证书 secret 将位于特定的 k8s 命名空间中,并且在该命名空间之外不可见。
  • Istio 对证书管理器一无所知,它所需要的只是在网关中使用 SDS 配置的已颁发证书 secret 。这意味着两件事:
  • SDS key 的名称必须与 cert-manager 生成的一个匹配(这是它们之间的唯一链接)
  • key 必须与 Istio 网关所在的命名空间相同。
  • 最后,您的 VirtualServices 只需要一个如上所述正确配置的网关。好消息是,如果您使用完整的限定名称,VirtualService 可以链接到任何命名空间中的网关。

  • 因此,您可以将网关放在颁发证书对象的同一命名空间中以避免复制 secret ,然后您的 VirtualServices 可以位于任何命名空间中,只需使用完整的网关名称即可。

    关于kubernetes - 通过 Istio VirtualService/Gateway 服务的应用程序的 Letsencrypt/Cert Manager 工作流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61707014/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com