美文网首页微服务 DevOps
Istio 常见问题 - 如何为公开多个端口的服务配置 Virt

Istio 常见问题 - 如何为公开多个端口的服务配置 Virt

作者: CatchZeng | 来源:发表于2021-05-11 15:10 被阅读0次

原文:https://makeoptim.com/istio-faq/istio-multiple-ports-virtual-service

背景

有一个暴露多个端口的容器,Kubernetes Service 的配置如下所示:

apiVersion: v1
kind: Service
metadata:
  name: myapp
spec:
  ports:
  - name: http
    protocol: TCP
    port: 8080
    targetPort: 8080
  - name: http-addition
    protocol: TCP
    port: 8001
    targetPort: 8001
---

现在使用 Istio 来管理路由并通过 Istio Ingress Gateway 公开此服务。想要配置 的 80 端口路由到 Service 的 8080 端口,8001 端口路由到 Service 的 8001 端口。一个 VirtualService 可以做到吗?

解决方法

只用一个 VirtualService 是可以做到的,步骤如下:

  1. Istio Ingress Gateway 中增加需要暴露的端口
  2. 建立 Gateway
  3. 建立 VirtualService

Istio Ingress Gateway 中增加需要暴露的端口

暴露端口的目的是让流量能通过该端口进入到 Service Mesh(Istio)。以 myapp 为例,除了默认暴露的 80 端口,还需要暴露 8001 端口。关于如何自定义暴露的端口,可以参考 Istio 自定义 Ingress(入口)网关

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  profile: default
  components:
    # ingressGateways 是个数组
    ingressGateways:
      # Istio 默认创建的入口网关,可保留
      - name: istio-ingressgateway
        enabled: true
        k8s:
          service:
            # 自定义暴露的端口
            ports:
            - port: 80
              targetPort: 80
              name: http2
            - port: 443
              name: https
            ......
            # 以上端口是 istio 默认的端口,8001 端口是增加的自定义端口
            - port: 8001
              targetPort: 8001
              name: http-addition

建立 Gateway

# See more at https://istio.io/docs/reference/config/networking/gateway/
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: myapp-gateway
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - 'example.makeoptim.com'
  - port:
      number: 8001
      name: http-addition
      protocol: HTTP
    hosts:
    - 'example.makeoptim.com'

建立 VirtualService

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: myapp-virtual-service
spec:
  hosts:
  - example.makeoptim.com
  gateways:
  - myapp-gateway
  http:
  - match:
    - port: 80
    route:
    - destination:
        host: myapp
        port:
          number: 8080
  - match:
    - port: 8001
    route:
    - destination:
        host: myapp
        port:
          number: 8001

参考

相关文章

  • Istio 常见问题 - 如何为公开多个端口的服务配置 Virt

    原文:https://makeoptim.com/istio-faq/istio-multiple-ports-v...

  • Istio 组件常用端口

    Istio 组件常用端口 端口协议使用者描述8060HTTPCitadelGRPC 服务器8080HTTPCita...

  • 手机访问wsl2网站

    查看wsl2的ip 开启服务,如nginx(配置端口为非80端口) 确保 wsl2的ip:nginx配置中的端口 ...

  • spring boot动态端口

    在微服务项目中,横向拓展需要启动多个服务,每次启动指定端口号很麻烦,加上以下配置,只需要配置一个端口范围即可实现动...

  • Spring Cloud Consul 与ISTIO比较

    Istio是一个连接、管理和安全微服务的开放平台。 要启用Istio的全部功能,必须部署多个服务。对于控制飞机:必...

  • springboot常用配置(yml)

    (1)端口服务配置 (2)数据库配置 (3)配置多个不同的profile,实现在不同的环境(比如开发、测试和生产环...

  • springboot常用配置(yml文件)

    (1)端口服务配置 (2)数据库配置 (3)配置多个不同的profile,实现在不同的环境(比如开发、测试和生产环...

  • idea调试技巧

    一、一个服务开多个端口运行 1、通过配置allow parallel run 2、起两个端口通过设置jdk启动参数...

  • Istio的路由规则配置

    VirtualService是istio流量治理的核心配置. 一、路由规则配置示例 含义:对于forecast服务...

  • Nginx部分参数含义和配置

    listen:表示当前的代理服务器监听的端口,默认的是监听80端口。注意,如果我们配置了多个server,这个li...

网友评论

    本文标题:Istio 常见问题 - 如何为公开多个端口的服务配置 Virt

    本文链接:https://www.haomeiwen.com/subject/wxzgdltx.html