使用网关+ VirtualService + http01 + SDS

时间:2019-06-04 14:23:44

标签: kubernetes istio

document中,有一个有关使用Cert-Manager保护Kubernetes入口安全的示例,该示例未使用Gateway + VirtualService。

我已尝试使其与acme http01一起使用,但由于在日志质询中出现404错误,因此无法颁发证书。似乎无法访问域检查挑战。我提到的规格是否有最佳实践?

[更新1]

我想将SDS的{​​{1}}选项与istio gateway一起使用,并使用cert-manager with http-01保护它。

根据文档,我发现了一些示例,例如Securing Kubernetes Ingress with Cert-ManagerDeploy a Custom Ingress Gateway Using Cert-Manager。但是,这些示例使用的是Kuberenetes Ingress资源本身(不是istio网关),或者第二个示例使用的是TLS

我需要一条包含istio gatewaydns-01的{​​{1}}选项的指令,并通过使用cert-manager with http-01保护它。 Istio网关使我能够使用SDS

谢谢!

1 个答案:

答案 0 :(得分:2)

我找到了答案,但不确定为什么要这样做。我对documentation进行了一些更改。

首先,我使用istio-autogenerated-k8s-ingress命令编辑了kubectl -n istio-system edit gateway。 我删除了整个HTTPS部分,然后将HTTP部分留在那里。

然后我创建了另一个Gateway,例如:

cat <<EOF | kubectl apply -f -
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: bookinfo-gateway
spec:
  selector:
    istio: ingressgateway
  servers:
  - hosts:
    - 'example.com'
    port:
      name: http
      number: 80
      protocol: HTTP2
    tls:
      httpsRedirect: true
  - hosts:
    - 'example.com'
    port:
      name: https-default
      number: 443
      protocol: HTTPS
    tls:
      credentialName: ingress-cert-staging
      mode: SIMPLE
      privateKey: sds
      serverCertificate: sds
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: bookinfo
spec:
  hosts:
  - "example.com"
  gateways:
  - bookinfo-gateway
  http:
  - match:
    - uri:
        exact: /productpage
    - uri:
        exact: /login
    - uri:
        exact: /logout
    - uri:
        prefix: /api/v1/products
    route:
    - destination:
        host: productpage
        port:
          number: 9080

EOF


有了这个证书管理器签发了我的证书(我猜是istio-autogenerated-k8s-ingress网关!!!!),我可以创建多个网关和虚拟服务,如上面的示例。所以一切正常!这只是我的想法,盲目行事不是正确的方法。请问,如果您有更好的答案,并且知道为什么这些事情如我所解释的那样发生,就让我知道。

谢谢!