istio 操作员:通过文件传递入口 mTLS 证书

istio operator: pass ingress mTLS certs via files

我正在尝试通过文件而不是通过机密将 mTLS 证书传递给 istio 入口网关。 Vault init-container 将证书存储在

/etc/istio/ingressgateway-certs/tls.key
/etc/istio/ingressgateway-certs/tls.cert
/etc/istio/ingressgateway-ca-certs/ca-chain.cert.pem

所以我正尝试通过这样的补丁删除秘密元素

      - path: spec.template.spec.volumes[name:ingressgateway-ca-certs].emptyDir
        value: {}
      - path: spec.template.spec.volumes[name:ingressgateway-certs].emptyDir
        value: {}
      - path: spec.template.spec.volumes[name:ingressgateway-certs].secret
      - path: spec.template.spec.volumes[name:ingressgateway-certs].secret.secretName
      - path: spec.template.spec.volumes[name:ingressgateway-ca-certs].secret.secretName
      - path: spec.template.spec.volumes[name:ingressgateway-ca-certs].secret

但它不起作用。 Doc 说,“对于删除,应该取消设置值。”

https://istio.io/latest/docs/reference/config/istio.operator.v1alpha1/#K8sObjectOverlay-PathValue

istioctl manifest generate 命令仍然包含秘密部分。 我还尝试将值设置为“unset”,但(如预期的那样)最终使用 unset 作为秘密名称的字面值。 感谢任何指点。

使用它来删除它,因为 Vault sidecar 将安装它。

- path: spec.template.spec.volumes[name:ingressgateway-ca-certs]         
- path: spec.template.spec.volumes[name:ingressgateway-certs]

但在最终解决方案中,在不同路径配置和呈现证书以避免与默认路径冲突。例如

/etc/istio/ingressgateway/certs/tls.key
/etc/istio/ingressgateway/certs/tls.cert
/etc/istio/ingressgateway/ca-certs/ca-chain.cert.pem