Как использовать Поиск Доменов с Kubernetes - PullRequest
0 голосов
/ 10 октября 2018

У меня есть развертывание приложения на foo.example.com, работающее в Kubernetes (GKE).Определение входа выглядит следующим образом:

 spec:
  tls:
  - hosts:
    - "foo.example.com"
    secretName: foo-example-com
  rules:
  - host: "foo.example.com"
    http:
      paths:
      - path: /*
        backend:
          serviceName: web
          servicePort: 80

Когда я перехожу на http://foo.example.com/, я (правильно) перенаправляется на https://foo.example.com/ с соответствующим сертификатом на месте.

Однако у меня естьexample.com в моих поисковых доменах.Поэтому ping foo правильно разрешает вход в Kubernetes.

Но когда я в браузере перехожу на https://foo/, в Chrome появляется следующее сообщение об ошибке:

Your connection is not private
Attackers might be trying to steal your information from foo (for example, passwords, messages, or credit cards). Learn more
NET::ERR_CERT_AUTHORITY_INVALID
Subject: Kubernetes Ingress Controller Fake Certificate
Issuer: Kubernetes Ingress Controller Fake Certificate
Expires on: Oct 1, 2019
Current date: Oct 9, 2018

Как быу вас это работает?

Очевидно, я не могу получить сертификат для foo без какой-либо самозаверяющей хакерской атаки, которую я бы предпочел не пытаться.

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Таким образом, я решил это путем добавления входа перенаправления:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: redirect-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    kubernetes.io/tls-acme: "false"
    ingress.kubernetes.io/configuration-snippet: |
      if ($host ~ ^foo$) {
        return 301 https://foo.example.com$request_uri;
      }
spec:
  rules:
  - host: "foo"
    http:
      paths:
      - backend:
          serviceName: web
          servicePort: 80

Я не уверен, что это оптимально, но это сработало.

0 голосов
/ 10 октября 2018

Это будет работать так же, даже за пределами Kubernetes.Прежде всего, каждый веб-браузер (включая Chrome) имеет список полномочий из коробки: enter image description here

и так далее.

Ваши сертификаты CA (в вашем секрете) самостоятельно подписаны вашим собственным центром сертификации, который не является доверенным для Chrome, поэтому вы видите ошибку.Вы, вероятно, можете импортировать свой CA в Chrome, и ваш экземпляр Chrome будет доверять ему, но ... как вы знаете, сертификат TLS (SSL) обычно выдается для определенного домена или подстановочного знака (CN), поэтому foo скорее всего не будетсопоставьте шаблонное выражение вашего сертификата, и вы увидите еще одну ошибку SSL: NET::ERR_CERT_COMMON_NAME_INVALID.Таким образом, вам придется использовать правило перезаписи, чтобы оно заработало.

...