Когда в моей сеточной службе установлена следующая конфигурация:
- На стороне сервера: STRICT (только https)
- На стороне клиента: ISTIO_MUTUAL (https / http)
Я могу сделать HTTPS-запрос, но не HTTP.Так что все в порядке.
Теперь, если я хочу разрешить HTTP и HTTPS на стороне сервера, я должен сделать следующее:
- На стороне сервера: РАЗРЕШЕНИЕ (https / http)
- Клиентская сторона: ISTIO_MUTUAL (https / http)
Теперь я должен иметь возможность выполнять HTTP и HTTPS-запросов, но, к сожалению, HTTPS больше не работает
Ниже приведена конфигурация для STRICT HTTPS на стороне сервера (работает)
apiVersion: "authentication.istio.io/v1alpha1"
kind: "Policy"
metadata:
name: "default"
namespace: "foo"
spec:
peers:
- mtls:
mode: STRICT #Can be : PERMISSIVE | STRICT
Теперь конфигурация для разрешающей (HTTP / HTTPS) стороны сервера (не работает)
apiVersion: "authentication.istio.io/v1alpha1"
kind: "Policy"
metadata:
name: "default"
namespace: "foo"
spec:
peers:
- mtls:
mode: PERMISSIVE #PERMISSIVE | STRICT
Наконец, конфигурация на стороне клиента установлена для HTTP и HTTPS такпроблема не должна исходить оттуда.
apiVersion: "networking.istio.io/v1alpha3"
kind: "DestinationRule"
metadata:
name: "default"
namespace: "foo"
spec:
host: "*.foo.svc.cluster.local"
trafficPolicy:
tls:
mode: ISTIO_MUTUAL #Can be : ISTIO_MUTAL | DISABLE
Чтобы проверить HTTPS-соединение, я запускаю модуль в пространстве имен foo
, а затем скручиваю службу httpbin
, используя клиентские сертификаты, следующим образом:
curl https://httpbin:8000/headers -s -w '%{http_code}\n' --key /etc/certs/key.pem --cert /etc/certs/cert-chain.pem --cacert /etc/certs/root-cert.pem -k
В режиме PERMISSIVE тайм-ауты соединения, хотя он все еще должен поддерживать HTTPS.