Jak wyłączyć MTLS na Instio?

Nov 19 2020

Mam problem z połączeniem dwóch usług na Kubernetes z Istio. Moja usługa wysyła żądania POST do elastycznego wyszukiwania.

2020-11-18T21:51:53.758079131Z org.elasticsearch.client.ResponseException: method [POST], host [http://elasticsearch:9200], URI [/_bulk?timeout=1m], status line [HTTP/1.1 503 Service Unavailable]
2020-11-18T21:51:53.758087238Z upstream connect error or disconnect/reset before headers. reset reason: connection failure

Przeczytałem kilka pytań / problemów z GitHubem na ten temat i jedną z możliwych przyczyn może być mtls, więc jak mogę to wyłączyć?

Próbowałem z tym:

apiVersion: "security.istio.io/v1beta1"
kind: "PeerAuthentication"
metadata:
  name: "default"
  namespace: "istio-system"
spec:
  mtls:
    mode: DISABLE

Ale dzięki temu PeerAuthenticationnie jestem w stanie dotrzeć nawet do mojej usługi. Czy masz jakieś rady?

Odpowiedzi

1 Jakub Nov 23 2020 at 15:41

Wyłącz mtls

To PeerAuthentication jest poprawnym sposobem wyłączenia mtls.

apiVersion: "security.istio.io/v1beta1"
kind: "PeerAuthentication"
metadata:
  name: "default"
  namespace: "istio-system"
spec:
  mtls:
    mode: DISABLE

Jest na ten temat dokumentacja istio .


Problem z Elasticsearch

Według dokumentacji istio:

Istnieją dwa parametry konfiguracyjne Elasticsearch, które należy odpowiednio ustawić, aby uruchomić Elasticsearch z Istio: network.bind_host i network.publish_host . Domyślnie te parametry są ustawione na parametr network.host. Jeśli parametr network.host jest ustawiony na 0.0.0.0, Elasticsearch najprawdopodobniej wybierze adres IP poda jako adres publikacji i nie będzie wymagana dalsza konfiguracja.

Jeśli domyślna konfiguracja nie działa, możesz ustawić network.bind_host na 0.0.0.0 lub localhost (127.0.0.1) i network.publish_host na adres IP. Na przykład:

...
containers:
- name: elasticsearch
  image: docker.elastic.co/elasticsearch/elasticsearch:7.2.0
  env:
    - name: network.bind_host
      value: 127.0.0.1
    - name: network.publish_host
      valueFrom:
        fieldRef:
          fieldPath: status.podIP
   ...

Aby uzyskać więcej informacji, zobacz Ustawienia sieciowe dla Elasticsearch .

Jeśli to nie zadziała, są dwa problemy z githubem:

  • https://github.com/istio/istio/issues/14662#issuecomment-723669123
  • https://github.com/elastic/cloud-on-k8s/issues/2770

które sugerują użycie

annotations:
  traffic.sidecar.istio.io/excludeOutboundPorts: "" 
  traffic.sidecar.istio.io/excludeInboundPorts: ""

Istnieje dokumentacja na ten temat.