Istio RouteRules v1alpha3。存放证书的位置。 k8s的秘密?

时间:2018-06-02 19:41:50

标签: istio

是否可以使用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秘密来存储证书,但需要一个修复路径(在工作节点?)。这是对的吗?

谢谢

2 个答案:

答案 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包含块引号中提到的短语。文档可能已更新&使上述链接不太相关。