Istio: как настроить HTTPS-трафик между сервисами на Minikube - PullRequest
0 голосов
/ 10 января 2019

В настоящее время я изучаю Istio и столкнулся с проблемой при попытке настроить HTTPS-трафик между контейнерами в локальном Minikube тестовом кластере.

В документации Istio есть несколько связанных задач. В частности, задача https-overlay . Мне удалось выполнить первую подзадачу (без коляски в контейнере запросов), но вторая завершается неудачно со следующей ошибкой при отправке запроса на развертывание nginx из спящего модуля:

$ kubectl exec $(kubectl get pod -l app=sleep -o jsonpath={.items..metadata.name}) -c sleep -- curl https://my-nginx -k
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (35) error:1401E410:SSL routines:CONNECT_CR_FINISHED:sslv3 alert handshake failure
command terminated with exit code 35

Я предполагаю, что моя установка ошибочна, но я не могу точно сказать, что не так (или как отлаживать). Может кто-нибудь взглянуть и предложить исправить?

Шаги настройки приведены ниже в разделе Настройка . Характеристики окружающей среды приведены ниже.


Окружающая среда

OS

macOS 10.13.6

kubectl версия

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.3", GitCommit:"435f92c719f279a3a67808c80521ea17d5715c66", GitTreeState:"clean", BuildDate:"2018-11-27T01:15:02Z", GoVersion:"go1.11.2", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.0", GitCommit:"fc32d2f3698e36b93322a3465f63a14e9f0eaead", GitTreeState:"clean", BuildDate:"2018-03-26T16:44:10Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

minikube версия:

 $ minikube version
 minikube version: v0.31.0

Настройка

$ISTIO_HOME должен указывать на место установки Istio.

1. Запустите Minikube + Istio Startup Script

Предупреждение: Это остановит и удалит работающий экземпляр мини-куба.

#! /bin/bash
minikube stop;
minikube delete;
minikube start \
  --memory=8192 \
  --cpus=4 \
  --kubernetes-version=v1.10.0\
  --vm-driver=virtualbox; 
kubectl apply -f $ISTIO_HOME/install/kubernetes/helm/istio/templates/crds.yaml 
kubectl apply -f $ISTIO_HOME/install/kubernetes/istio-demo.yaml
# Set docker registry to minikube registry
eval $(minikube docker-env);

2. Запустите скрипт настройки теста HTTPS

Подождите, пока модули Istio не будут запущены или завершены, а затем

#! /bin/bash
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /tmp/nginx.key -out /tmp/nginx.crt -subj "/CN=my-nginx/O=my-nginx"
kubectl create secret tls nginxsecret --key /tmp/nginx.key --cert /tmp/nginx.crt
kubectl create configmap nginxconfigmap --from-file=$ISTIO_HOME/samples/https/default.conf
kubectl apply -f <(istioctl kube-inject -f $ISTIO_HOME/samples/https/nginx-app.yaml)
kubectl apply -f <(istioctl kube-inject -f $ISTIO_HOME/samples/sleep/sleep.yaml)

3. Запрос на выдачу Nginx из Sleep Pod

Подождите, пока оба модуля запустятся, а затем запустите

kubectl exec $(kubectl get pod -l app=sleep -o jsonpath={.items..metadata.name}) -c sleep -- curl https://my-nginx -k

Согласно описанию подзадачи , мы должны увидеть целевую страницу nginx, но вместо этого возвращается ошибка, показанная выше (код выхода 35, сбой рукопожатия).

1 Ответ

0 голосов
/ 11 января 2019

Кажется, вы нажали эту ошибку https://github.com/istio/istio/issues/7844, которая все еще открыта

...