Использование Gateway + VirtualService + http01 + SDS - PullRequest
7 голосов
/ 04 июня 2019

В документе приведен пример о Защищенности доступа Kubernetes с помощью Cert-Manager , который не использует Gateway + VirtualService.

Я пытался заставить его работать с acme http01, но сертификат не может быть выдан, так как при вызове журнала у меня ошибка 404. Кажется, он не может получить доступ к проверке доменов. Есть ли лучшая практика со спецификациями, которые я упомянул?

[Обновление 1]

Я хочу использовать istio gateway с опцией SDS для TLS и обеспечить это с помощью cert-manager с http-01 .

Согласно документации, я нашел такой пример, как Защита входа Kubernetes с помощью Cert-Manager или Развертывание пользовательского входного шлюза с использованием Cert-Manager . Однако в этих примерах используется сам ресурс Kuberenetes Ingress (Not istio gateway) или как во втором примере используется dns-01.

Мне нужна инструкция, которая включает istio gateway с опцией SDS для TLS и защищает ее с помощью cert-manager с http-01 . Istio Gateway дает мне возможность использовать VirtualService.

Спасибо!

1 Ответ

2 голосов
/ 14 июня 2019

Я нашел ответ, но не совсем уверен, почему так. Я следовал за документацией с некоторыми изменениями.

Сначала я отредактировал 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 Шлюз !! не знаю !!), и я могу создать несколько Шлюзов и Виртуальных Сервисов, как в примере выше. Так что все работает хорошо! Это всего лишь моя идея, а делать вслепую - неправильно. Пожалуйста, если у вас есть лучший ответ, и вы знаете, почему все происходит так, как я объяснил, дайте мне знать.

Спасибо!

...