是否可以使用k8s秘密对象来存储证书?
在文档(https://istio.io/docs/reference/config/istio.networking.v1alpha3/)中:
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: my-tls-ingress
spec:
selector:
app: my-tls-ingress-gateway
servers:
- port:
number: 443
name: https
protocol: HTTPS
hosts:
- "*"
tls:
mode: SIMPLE
serverCertificate: /etc/certs/server.pem
privateKey: /etc/certs/privatekey.pem
serverCertificate文档说:
如果模式为SIMPLE或MUTUAL,则需要。持有文件的路径 要使用的服务器端TLS证书。
所以似乎不可能使用k8s秘密来存储证书,但需要一个修复路径(在工作节点?)。这是对的吗?
谢谢
答案 0 :(得分:0)
不,这不对。
该路径是istio代理的内部路径。
例如,在安装Istio图表时,会创建一个默认的istio代理。如果列出部署,则会有一个名为istio-ingressgateway。
如果你编辑/描述它,你会得到:
template:
metadata:
....
labels:
istio: ingressgateway
....
volumeMounts:
- mountPath: /etc/certs
name: istio-certs
readOnly: true
- mountPath: /etc/istio/ingressgateway-certs
name: ingressgateway-certs
readOnly: true
....
volumes:
- name: istio-certs
secret:
defaultMode: 420
optional: true
secretName: istio.default
- name: ingressgateway-certs
secret:
defaultMode: 420
optional: true
secretName: istio-ingressgateway-certs
现在在Gateway Istio对象中,您将网关绑定到"代理":
spec:
selector:
istio: ingressgateway # use Istio default gateway implementation
在证书所在的代理中,并且这些证书来自秘密对象。正如您在示例中所看到的,我粘贴了"卷"部分使用"秘密" k8s对象。
答案 1 :(得分:0)
您可能需要阅读https://istio.io/docs/tasks/traffic-management/ingress/#add-a-secure-port-https-to-our-gateway
使用kubectl在名称空间istio-system中创建秘密istio-ingressgateway-certs。 Istio网关将自动加载秘密
秘密必须在istio-system命名空间中称为istio-ingressgateway-certs,否则它将不会被挂载并可用于Istio网关。
证书和私钥的位置必须是/ etc / istio / ingressgateway-certs,否则网关将无法加载它们。
编辑:https://istio.io/docs/tasks/traffic-management/secure-ingress/#configure-a-tls-ingress-gateway包含块引号中提到的短语。文档可能已更新&使上述链接不太相关。