如何引用名称中带有哈希后缀的证书管理器生成的秘密?

How to reference secrets generated by cert-manager with hash suffix in name?

场景:我在 Rancher Kubernetes 中部署了 Apache Pulsar v2.6.0,以及 jetstack/cert-manager:

helm install cert-manager jetstack/cert-manager --namespace cert-manager --set installCRDs=true
helm install --values ./values.yaml pulsar apache/pulsar

我还为所有 Pulsar 组件配置了 TLS,如下所示 (values.yaml):


tls:
  enabled: true
  # common settings for generating certs
  common:
    keySize: 2048
  # settings for generating certs for proxy
  proxy:
    enabled: true
  # settings for generating certs for broker
  broker:
    enabled: true
  # settings for generating certs for bookies
  bookie:
    enabled: true
  # settings for generating certs for zookeeper
  zookeeper:
    enabled: true

但是,cert-manager 会生成带有哈希后缀的机密名称,因此在创建例如一个 Zookeeper pod,Kubernetes 抱怨它找不到 tls secret 并因事件 'MountVolume.SetUp failed for volume "zookeeper-certs" : secret "pulsar-tls-zookeeper" not found'.

而失败

知道如何处理这种情况吗?

您可以禁用机密的哈希后缀,这样名称就更容易预测了:

generatorOptions:
  disableNameSuffixHash: true

我在这里找到了答案:https://github.com/jetstack/cert-manager/issues/3283

生成的秘密(包括哈希后缀)用作密钥轮换的下一个私钥。接下来将生成包含当前密钥和证书(其他密钥不包含)的正确秘密。但是,由于在为颁发者生成 CA 证书期间发生错误,这不会发生。