Istio - ingressgateway同时代理转发HTTP和TCP

规则

同一个ingressgateway实例(Pod)的同一个端口只能代理一种协议,并且是针对所有名称空间的,以先创建的gateway资源为准。

场景

在一个集群中提供业务访问的HTTP服务,还有要连接到数据库等TCP服务。

istio版本说明

client version: 1.9.5
control plane version: 1.9.5
data plane version: 1.9.5 (17 proxies)

实施方案

1. ingressgateway主进程增加新的监听端口,目前暂未找到方法。

2. 增加一个ingressgateway,http和tcp通过选择不同label分别绑定到不同的ingressgateway。

开始,使用方案2,配置IstioOperator资源清单:

vim file.yaml

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  profile: default
  components:
    ingressGateways:

      # 修改原ingressgateway的配置(可选)
      - name: istio-ingressgateway
        k8s:
          nodeSelector:
            kubernetes.io/hostname: node01
          tolerations:
          - key: fun
            value: special
            effect: NoExecute
          service:
            type: ClusterIP
            externalIPs:
            - 192.168.1.10

      # 创建一个新的ingressgateway
      - name: istio-ingressgateway-tcp
        label:
          istio: ingressgateway-tcp

        k8s:
          nodeSelector:
            kubernetes.io/hostname: node02
          tolerations:
          - key: fun
            value: special
            effect: NoExecute
          service:
            type: ClusterIP
            externalIPs:
            - 192.168.1.11

        enabled: true

部署集群:

istioctl install -f file.yaml

注意事项:

1. 注意spec.profile指定你希望使用的基础配置 ,可使用“istioctl profile list”指令查看当前支持的配置,如不显式指定默认为default。

2. 两个ingressgateway的name必须不一样,且自定义的那个需要使用label重新定义一个标签,用于供gateway资源对象选择。

3. 使用spec.components.ingressGateways.k8s做些个性化设置,如以上配置,指定了pod运行节点,如果节点设置了污点,还要tolerations设置容忍度;service使用externalIPs在指定的node节点上暴露对外访问端口。

4. 自定义的那个ingressgateway一定要配置“enabled: true”,否则不会创建。

分别创建两个gateway资源对象,通过spec.selector选择不同的ingressgateway实例:

参考官方手册

Istio / IstioOperator Options

  • 16
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值