【问题标题】:Istio: how do I setup HTTPS traffic between services on Minikube?Istio:如何在 Minikube 上的服务之间设置 HTTPS 流量?
【发布时间】:2019-01-10 12:48:33
【问题描述】:

我目前正在学习 Istio,但在尝试设置本地 Minikube 测试集群上的容器之间的 HTTPS 流量时遇到了问题。

Istio 文档中有一些相关的任务。特别是https-overlay 任务。我设法执行了第一个子任务(在查询容器上没有 sidecar),但是在从 sleep pod 向 nginx 部署发出请求时,second one 失败并出现以下错误:

$ 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

我认为我的设置有问题,但我无法真正说出问题所在(或如何调试)。有人可以看看并提出修复建议吗?

设置步骤如下设置。环境规格如下所示。


环境

操作系统

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 启动脚本

警告:这将停止并删除正在运行的 minikube 实例。

#! /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 pod 正在运行或完成,然后

#! /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。从 Sleep Pod 向 Nginx 发出请求

等待两个 pod 开始运行,然后运行

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

根据the subtask的描述,我们应该看到了nginx登陆页面,但是却返回了如上所示的错误(退出码35,握手失败)。

【问题讨论】:

    标签: https minikube handshake istio


    【解决方案1】:

    您似乎遇到了这个仍然打开的错误https://github.com/istio/istio/issues/7844

    【讨论】:

    • 我不这么认为,我正在运行的设置没有启用双向 TLS(安装文件$ISTIO_HOME/install/kubernetes/istio-demo.yaml 没有这样做)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    • 2020-02-09
    • 2022-11-30
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    相关资源
    最近更新 更多