Как настроить ssl для ldap / opendj при использовании ISTIO service mesh - PullRequest
0 голосов
/ 17 июня 2020

У меня есть несколько микросервисов, и наш бэкэнд - opendj / ldap. Он был настроен на использование SSL. Теперь мы пытаемся использовать ISTIO в качестве нашего k8s service me sh. Все остальные службы работают нормально, но сервер ldap - opendj - нет. Я предполагаю, что это из-за конфигурации ssl. Он предназначен для использования самозаверяющего сертификата.

У меня есть сценарий, который создает самозаверяющий сертификат в пространстве имен istio, и я попытался использовать его вот так на gateway.yaml

  - port:
      number: 4444
      name: tcp-admin
      protocol: TCP
    hosts:
    - "*"
    tls:
      mode: SIMPLE # enable https on this port
      credentialName: tls-certificate # fetch cert from k8s secret

Я также пытался использовать

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: opendj-istio-mtls
spec:
  host: opendj.{{.Release.Namespace }}.svc.cluster.local
  trafficPolicy:
    tls:
      mode: ISTIO_MUTUAL
      credentialName: tls-certificate

---

apiVersion: authentication.istio.io/v1alpha1
kind: Policy
metadata:
  name: opendj-receive-tls
spec:
  targets:
  - name: opendj
  peers:
  - mtls: {}

для сервера ldap, но он не подключается. При попытке использовать tls spe c в gateway.yaml я получаю эту ошибку

Error: admission webhook "pilot.validation.istio.io" denied the request: configuration is invalid: server cannot have TLS settings for non HTTPS/TLS ports

И журналы с сервера opendj


INFO - entrypoint - 2020-06-17 12:49:44,768 - Configuring OpenDJ.
WARNING - entrypoint - 2020-06-17 12:49:48,987 - 
Unable to connect to the server at
"oj-opendj-0.opendj.default.svc.cluster.local" on port 4444


WARNING - entrypoint - 2020-06-17 12:49:53,293 - 
Unable to connect to the server at
"oj-opendj-0.opendj.default.svc.cluster.local" on port 4444

Кто-нибудь может мне помочь как мне подойти к этому.

1 Ответ

2 голосов
/ 17 июня 2020

Чтобы включить трафик без HTTPS c через TLS-соединения, вам необходимо использовать протокол TLS. TLS подразумевает, что соединение будет маршрутизироваться на основе заголовка SNI к месту назначения без разрыва соединения TLS. Вы можете проверить это .

  - port:
      number: 4444
      name: tls
      protocol: TLS
    hosts:
    - "*"
    tls:
      mode: SIMPLE # enable https on this port
      credentialName: tls-certificate # fetch cert from k8s secret

Также проверьте это istio документацию .

...