当前位置: 首页 > 知识库问答 >
问题:

带API网关的Openshift TLS配置

邹锦
2023-03-14

我试图部署一个角应用程序在OpenShift与Istio作为服务网格。服务yaml:

  - apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: angularapp
        service: angularapp
        version: v1
      name: angularapp
    spec:
      ports:
      - name: http
        protocol: TCP
        port: 8080
        targetPort: 8080
      selector:
        name: angularapp

到目前为止,一切都与http连接一起工作。为了切换到https连接,我将Red Hat Openshift服务Mesh operator安装提供的istio ingressgateway路由配置为使用passthrough

spec:
  host: istio-ingressgateway-istio-system.apps.xxx.xx.xxxxxxx.opentlc.com
  tls:
    insecureEdgeTerminationPolicy: None
    termination: passthrough

以及istio的网关资源:

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: testnamespace-gateway
spec:
  selector:
    istio: ingressgateway # use istio default controller
  servers:
    - port:
        number: 443
        name: https
        protocol: HTTPS
      tls:
        mode: SIMPLE
        credentialName: "router-certs"
      hosts:
        - "*"

VirtualService指向angular app的8080端口:

      route:
        - destination:
            host: angularapp
            port:
              number: 8080

问题:TLS配置工作,暴露的istio入口网关网址确实有https连接。但是,API Gateway在触发对上述istio URL的请求时会发出此错误:

由于配置错误,执行失败:无法识别的SSL消息,纯文本连接?

奇怪的是,它只发生一半的时间,另一半工作,即使在每次运行后清除浏览器缓存。请注意,只有istio入口网关URL具有https连接,而作为独立服务的angular应用程序仅具有http连接。

抱歉啰嗦,希望在这里得到一些帮助。谢谢你!

共有2个答案

赵才俊
2023-03-14

通过添加段解决了这个问题:

  port:
    targetPort: https
  tls:
    termination: passthrough

到istio入口路由配置作为istio入口服务默认配置监听portName: https

name: https  
port: 443  
protocol: TCP  
targetPort: 8080
公冶谦
2023-03-14

通过直通终端,加密的流量直接发送到目的地,而不需要路由器提供TLS终端。因此,不需要密钥或证书。

因为您的后端服务是http,所以应该使用

termination: edge

参考:https://docs.openshift.com/container-platform/3.9/architecture/networking/routes.html

 类似资料:
  • API 网关的配置 利用工程发布的配置,将 我们前面章节中写的服务消费者工程上传至Git,然后发布 部署至 服务器的Tomcat上。 登录 Aliyun 账户,进入 API网关控制台,点击 分组管理 - 杭州节点,点击创建分组,填写分组名称与描述,点击创建。 点击刚刚创建的分组,进入分组详情,如需绑定域名,请点击页面上的绑定域名,并对域名的CNAME 进行解析。 在分组列表页面上,点击 API 管

  • Web API 网关配置 API网关(API Gateway),提供API托管服务,提供涵盖API发布、管理、运维、售卖的全生命周期管理。辅助用户简单、快速、低成本、低风险的实现微服务聚合、前后端分离、系统集成,向合作伙伴、开发者开放功能和数据。 我们这一章节就通过 调用我们上面写好的服务消费者接口,将其封装成Web API,并将其调用。

  • 换句话说,我的API网关将使用API网关中定义的相同的资源处理对的请求和对的另一个请求,而不必在API网关中定义和资源。

  • 现在我的要求是,每当我通过API获取数据时,我必须将其保存到2-3个不同的地方(例如,保存到我自己的数据库中,保存到某个BI服务中,有时还保存到日志数据库中)。 我不知道是否可以将单个资源和单个方法绑定到多个lambda函数中。因此,我的替代方法是,因为我已经知道如何通过订阅SNS主题来触发多个lambda函数,我想如果我能从API网关发布到SNS主题,剩下的就容易了。我现在的想法是: 但问题是,

  • 让我们说,我正在开发博客平台,用户可以注册帐户,支付订阅和创建自己的博客。平台由以下微服务组成: 帐户-服务 auth-service 订阅-服务 博客-服务 API-网关 我正在考虑实现api-gw模式,其中除了api-gw之外的所有微服务都将部署到专用网络中(在那里,它们将能够通过message broker直接以同步或异步方式相互通信),并且它们将只通过api-gw公开可用。 null 我的

  • 让我抓狂的一件事是AWS有大量关于ARN格式的文档,但没有任何类型的生成器让您确信ARN是正确的。 在IAM中,我试图设置一个策略来允许访问API网关,我已经阅读了以下文档: http://docs.aws.amazon.com/apigateway/latest/developerguide/permissions.html#api-使用iam策略的网关控制访问 http://docs.aws.