Wie deaktiviere ich mtls auf Instio?

Nov 19 2020

Ich habe ein Problem mit der Verbindung zweier Dienste auf Kubernetes mit Istio. Mein Service sendet POST-Anfragen an die Elasticsearch.

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

Ich habe einige Fragen / GitHub-Probleme dazu gelesen und einer der möglichen Gründe könnte sein mtls, wie kann ich es deaktivieren?

Ich habe es damit versucht:

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

Aber damit PeerAuthenticationkann ich nicht einmal meinen Dienst erreichen. Hast du irgendeinen Ratschlag?

Antworten

1 Jakub Nov 23 2020 at 15:41

Mtls deaktivieren

Diese PeerAuthentication ist der richtige Weg, um mtls zu deaktivieren.

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

Es gibt eine Istio- Dokumentation dazu .


Elasticsearch-Problem

Laut istio Dokumentation:

Es gibt zwei Elasticsearch-Konfigurationsparameter, die entsprechend eingestellt werden müssen, um Elasticsearch mit Istio auszuführen: network.bind_host und network.publish_host . Standardmäßig sind diese Parameter auf den Parameter network.host eingestellt. Wenn network.host auf 0.0.0.0 eingestellt ist, übernimmt Elasticsearch höchstwahrscheinlich die Pod-IP als Veröffentlichungsadresse, und es ist keine weitere Konfiguration erforderlich.

Wenn die Standardkonfiguration nicht funktioniert, können Sie network.bind_host auf 0.0.0.0 oder localhost (127.0.0.1) und network.publish_host auf die Pod-IP setzen. Zum Beispiel:

...
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
   ...

Weitere Informationen finden Sie unter Netzwerkeinstellungen für Elasticsearch .

Wenn das nicht funktioniert, gibt es zwei Github-Probleme:

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

die vorschlagen zu verwenden

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

Dazu gibt es eine Elasticsearch- Dokumentation .