Comment désactiver mtls sur Instio?

Nov 19 2020

J'ai un problème avec la connexion de deux services sur Kubernetes avec Istio. Mon service envoie des requêtes POST à ​​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

J'ai lu des questions / problèmes GitHub à ce sujet et l'une des raisons possibles pourrait être mtls, alors comment puis-je le désactiver?

J'essayais avec ceci:

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

Mais avec cela PeerAuthentication, je ne peux même pas atteindre mon service. Avez-vous des conseils?

Réponses

1 Jakub Nov 23 2020 at 15:41

Désactiver mtls

Cette PeerAuthentication est la bonne façon de désactiver mtls.

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

Il existe une documentation istio à ce sujet.


Problème d'Elasticsearch

Selon la documentation istio:

Deux paramètres de configuration d'Elasticsearch doivent être définis de manière appropriée pour exécuter Elasticsearch avec Istio: network.bind_host et network.publish_host . Par défaut, ces paramètres sont définis sur le paramètre network.host. Si network.host est défini sur 0.0.0.0, Elasticsearch prendra très probablement l'adresse IP du pod comme adresse de publication et aucune configuration supplémentaire ne sera nécessaire.

Si la configuration par défaut ne fonctionne pas, vous pouvez définir network.bind_host sur 0.0.0.0 ou localhost (127.0.0.1) et network.publish_host sur l'adresse IP du pod. Par exemple:

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

Reportez-vous à Paramètres réseau pour Elasticsearch pour plus d'informations.

Si cela ne fonctionne pas, il y a deux problèmes de github:

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

qui suggèrent d'utiliser

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

Il existe de la documentation elasticsearch à ce sujet.