首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在部署istio服务网格后,Kubernetes吊舱无法发出https请求。

在部署istio服务网格后,Kubernetes吊舱无法发出https请求。
EN

Stack Overflow用户
提问于 2019-08-24 18:12:50
回答 1查看 1.1K关注 0票数 1

我正在探索托管在EKS(亚马逊)上的k8s集群上的istio服务网格。

我尝试在一个新的k8s集群上部署istio-1.2.2,其中包含用于bookapp演示的demo.yml文件,以及我正确理解的大多数用例。

然后,我使用helm默认配置文件(推荐用于生产)在我现有的dev集群上部署istio,其中运行了1000多个微服务,我注意到我的服务可以调用http端点,但不能调用外部安全端点(https://www.google.com等)。

我得到了:

curl:(35)错误:1400410B:SSL routines:CONNECT_CR_SRVR_HELLO:wrong版本号

虽然我能够从测试集群调用外部https端点。

为了验证,我检查了出口策略,并且在两个集群中都是模式: ALLOW_ANY

现在,我从我的dev集群中完全删除了istio,并安装了demo.yml进行测试,但现在这也不起作用。

我试图把我的问题和这件事联系起来,但没有取得任何成功。

https://discuss.istio.io/t/serviceentry-for-https-on-httpbin-org-resulting-in-connect-cr-srvr-hello-using-curl/2044

我不明白我错过了什么或者我做错了什么。

注意:我指的是这个设置:https://istio.io/docs/setup/kubernetes/install/helm/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-24 19:47:55

这很可能是Istio中的一个bug (例如istio/istio#14520):如果您在集群中的任何位置都有任何Kubernetes Service对象侦听端口443,但其名称以http (而不是https)开头,则它将中断所有出站HTTPS连接。

我遇到的这个例子包括配置一个AWS负载均衡器来完成TLS终止。Kubernetes服务需要公开端口443来配置负载均衡器,但它接收的是纯未加密的HTTP。

代码语言:javascript
运行
复制
apiVersion: v1
kind: Service
metadata:
  name: breaks-istio
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:...
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
spec:
  selector: ...
  ports:
    - name: http-ssl # <<<< THIS NAME MATTERS
      port: 443
      targetPort: http

当我对此进行了实验之后,将name:更改为httpstcp-https似乎是可行的。这些名称前缀对Istio很重要,但是我没有立即发现告诉Istio端口是HTTPS (尽管它实际上不提供TLS)与普通的未解释的TCP之间的功能上的区别。

您确实需要搜索集群,查找每个侦听端口443的服务,并确保端口名不以http-...开头。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57640466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档