Конфігурація мінімальної версії TLS для робочих навантажень Istio
Ця задача показує, як налаштувати мінімальну версію TLS для робочих навантажень Istio. Максимальна версія TLS для робочих навантажень Istio — 1.3.
Конфігурація мінімальної версії TLS для робочих навантажень Istio
Встановіть Istio через
istioctl
з налаштованою мінімальною версією TLS. Власний ресурсIstioOperator
, що використовується для конфігурації Istio в командіistioctl install
, містить поле для мінімальної версії TLS для робочих навантажень Istio. ПолеminProtocolVersion
визначає мінімальну версію TLS для TLS-зʼєднань між робочими навантаженнями Istio. У наступному прикладі, мінімальна версія TLS для робочих навантажень Istio налаштована на 1.3.$ cat <<EOF > ./istio.yaml apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: meshConfig: meshMTLS: minProtocolVersion: TLSV1_3 EOF $ istioctl install -f ./istio.yaml
Перевірка конфігурації TLS робочих навантажень Istio
Після конфігурації мінімальної версії TLS для робочих навантажень Istio, ви можете перевірити, що мінімальна версія TLS налаштована і працює як очікується.
Розгорніть два робочих навантаження:
httpbin
таcurl
. Розгорніть їх в одному просторі імен, наприклад,foo
. Обидва робочих навантаження працюють з проксі Envoy попереду.$ kubectl create ns foo $ kubectl apply -f <(istioctl kube-inject -f @samples/httpbin/httpbin.yaml@) -n foo $ kubectl apply -f <(istioctl kube-inject -f @samples/curl/curl.yaml@) -n foo
Перевірте, що
curl
успішно спілкується зhttpbin
, використовуючи наступну команду:$ kubectl exec "$(kubectl get pod -l app=curl -n foo -o jsonpath={.items..metadata.name})" -c curl -n foo -- curl http://httpbin.foo:8000/ip -sS -o /dev/null -w "%{http_code}\n" 200
У цьому прикладі мінімальна версія TLS була налаштована на 1.3. Щоб перевірити, що TLS 1.3 дозволено, виконайте наступну команду:
$ kubectl exec "$(kubectl get pod -l app=curl -n foo -o jsonpath={.items..metadata.name})" -c istio-proxy -n foo -- openssl s_client -alpn istio -tls1_3 -connect httpbin.foo:8000 | grep "TLSv1.3"
Вивід повинен містити:
TLSv1.3
Щоб перевірити, що TLS 1.2 не дозволено, виконайте наступну команду:
$ kubectl exec "$(kubectl get pod -l app=curl -n foo -o jsonpath={.items..metadata.name})" -c istio-proxy -n foo -- openssl s_client -alpn istio -tls1_2 -connect httpbin.foo:8000 | grep "Cipher is (NONE)"
Вивід повинен містити:
Cipher is (NONE)
Очищення
Видаліть застосунки curl
і httpbin
з простору імен foo
:
$ kubectl delete -f samples/httpbin/httpbin.yaml -n foo
$ kubectl delete -f samples/curl/curl.yaml -n foo
Видаліть Istio з кластера:
$ istioctl uninstall --purge -y
Щоб видалити простори імен foo
та istio-system
:
$ kubectl delete ns foo istio-system