美文网首页
使用Istio端口外放以及路由规则

使用Istio端口外放以及路由规则

作者: OPS_Joy | 来源:发表于2020-09-23 09:59 被阅读0次

在 Kubernetes 环境中,使用Kubernetes Ingress 资源来指定需要暴露到集群外的服务。 在 Istio 服务网格中,更好的选择(同样适用于 Kubernetes 及其他环境)是使用一种新的配置模型,名为 Istio Gateway允许应用一些诸如监控和路由规则的 Istio 特性来管理进入集群的流量。

  • 将网格服务暴露到外网,允许网格外服务访问
    配置网关和路由
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: myapp-gateway
  namespace: default
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: myapp
  namespace: default
spec:
  hosts:
  - "*"
  gateways:
  - myapp-gateway
  http:
  - route:
    - destination:
        host: myappv1.joy-ns.svc.cluster.local
      weight: 0
    - destination:
        host: myappv2.joy-ns.svc.cluster.local
      weight: 100

通过NodePort访问


图片.png
  • 调整路由基于身份认证的策略
[root@harbor myapp]# cat myapp-vt.yaml 
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: myapp
  namespace: default
spec:
  hosts:
  - "*"
  gateways:
  - myapp-gateway
  http:
  - match:
    - headers:
        end-user:
          exact: joy
    route:
    - destination:
        host: myappv1
  - match:
    - headers:
        end-user:
          exact: jake
    route:
    - destination:
        host: myappv2

允许joy访问V1,jake访问V2

[root@harbor myapp]# curl 172.16.20.65:31380 -Hend-user:joy
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
[root@harbor myapp]# curl 172.16.20.65:31380 -Hend-user:jake
Hello MyApp | Version: v2 | <a href="hostname.html">Pod Name</a>
[root@harbor myapp]# curl 172.16.20.65:31380 -Hend-user:jake
Hello MyApp | Version: v2 | <a href="hostname.html">Pod Name</a>
[root@harbor myapp]# curl 172.16.20.65:31380 -Hend-user:jake
Hello MyApp | Version: v2 | <a href="hostname.html">Pod Name</a>
[root@harbor myapp]# curl 172.16.20.65:31380 -Hend-user:joy
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
[root@harbor myapp]# curl 172.16.20.65:31380 -Hend-user:joy
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>

基于浏览器的控制

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: myapp
  namespace: default
spec:
  hosts:
  - "*"
  gateways:
  - myapp-gateway
  http:
  - match:
    - headers:
        User-Agent:
          regex: '^.*Firefox.*$'
    route:
    - destination:
        host: myappv1
  - match:
    - headers:
        user-agent:
          regex: '^.*Chrome.*$'
    route:
    - destination:
        host: myappv2
图片.png
图片.png

也可以基于移动设备来

 - match:
    - headers:
        user-agent:
          regex: '^.*(Android|iPhone).*$'
图片.png

基于URI的路由

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: myapp
  namespace: default
spec:
  hosts:
  - "*"
  gateways:
  - myapp-gateway
  http:
  - match:
    - uri:
        prefix: /admin
    - uri:
        prefix: /shop
    route:
    - destination:
        host: istio-demo
  - route:
    - destination:
        host: myappv2
图片.png
图片.png

相关文章

  • 使用Istio端口外放以及路由规则

    在 Kubernetes 环境中,使用Kubernetes Ingress 资源来指定需要暴露到集群外的服务。 在...

  • Istio 路由管理

    Istio中的路由包含以下几种常见的对象: VirtualService:Istio服务网格中定义的路由规则,控制...

  • Istio的路由规则配置

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

  • Istio 组件常用端口

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

  • Istio流量治理基础

    流量治理 Istio的流量路由规则使运维人员可以轻松控制服务之间的流量和API调用 Istio简化了诸如断路器,超...

  • 使用 Istio 进行路由策略的配置

    本篇来讲一下如何使用 Istio 进行路由的配置,在这里直接使用 Istio 官方提供的案例应用来进行演示,首先部...

  • Internet中的数据链路层

    点到点通信的两种主要情形: 1.路由器到路由器 (一个路由器的端口到另一个路由器的端口)比如两个路由之间的端口使用...

  • [iptables] 端口转发

    iptables 端口转发配置规则 请求在防火墙中的路由过程 配置外网访问端口转发iptables -t nat ...

  • 外网访问光猫

    通过8888 在路由器上做一个 端口转发 访问光猫 路由器上配置防火墙规则 192.168.1.100 是路由器...

  • 26-Openwrt 端口转发 dmz upnp

    我们经常会在路由器上面配置端口转发的规则,用来访问内网机器的某个端口,openwrt上面有很多中实现端口转发的方式...

网友评论

      本文标题:使用Istio端口外放以及路由规则

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