Comment désactiver mtls sur Instio?
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
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.