专栏首页python3Istio v1aplha3 路由 AP

Istio v1aplha3 路由 AP

先来看看Nginx 的虚拟机配置

upstream test_app { 
        server 127.0.0.1:5000;
    }
    server {
        listen  127.0.0.1:80;

        location / {
           proxy_pass http://test_app; 
        }
    }
对于nginx的虚拟机配置,正常应该有下面三个东西
  • upstream : 指定代理后端应用服务地址
  • server : 配置指定主机,端口
  • location : 路由指定允许访问的url地址

Istio v1aplha3 路由 API 中的配置资源

v1alpha3引入了以下这些新的配置资源来控制进入网格,网格内部和离开网格的流量路由。

  • Gateway
  • VirtualService
  • DestinationRule
  • ServiceEntry 跨多个配置资源的控制流程。

Gateway

Gateway 用于为 HTTP / TCP 流量配置负载均衡器, Gateway 只用于配置L4-L6功能(例如,对外公开的端口,TLS 配置)

 Gateway 类似Nginx中的server 配置

类似实例如下:

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: bookinfo-gateway
spec:
  servers:
  - port:
      number: 443
      name: https
      protocol: HTTPS
    hosts:
    - bookinfo.com
    tls:
      mode: SIMPLE
      serverCertificate: /tmp/tls.crt
      privateKey: /tmp/tls.key
  • spec.servers.port : 指定暴露对外的端口,协议(类似nginx的listen的端口)
  • spec.servers.tls : 指定ssl密钥
  • spec.servers.hosts: 指定暴露对外的hosts,域名或IP(类似nginx的listen的host)

VirtualService

VirtualService类似Nginx上面的location模块,当然是类似,不是一样,这样说真是方便理解。在 v1alph3,可以在单个 VirtualService 资源中提供相同的配置:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: bookinfo
spec:
  hosts:
    - bookinfo.com
  gateways:
  - bookinfo-gateway # <---- bind to gateway
  http:
  - match:
    - uri:
        prefix: /reviews
    route:
    ...

上面的实例允许规则将外界对网关名称bookinfo-gateway的访问传递到代理服务bookinfo.com中。

DestinationRule

DestinationRule 类似nginx中的upstream字段功能,起到路由分配的作用:
  • DestinationRule 的 host 可以包含通配符前缀,以允许单个规则应用于多个服务。
  • DestinationRule 定义了目的 host 的子集 subsets (例如:命名版本)。 这些 subset 用于 VirtualService 的路由规则设置中,可以将流量导向服务的某些特定版本
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: reviews
spec:
  host: reviews
  trafficPolicy:
    loadBalancer:
      simple: RANDOM
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2
    trafficPolicy:
      loadBalancer:
        simple: ROUND_ROBIN
  - name: v3
    labels:
      version: v3

这个配置的策略是,默认随机负载均衡。同时reviews提供三个版本,v2使用自定义的负载均衡策略ROUND_ROBIN。

换成nginx的写法,大概类似:

upstream v1{
        server reviews:v1;
}

upstream v2{
    ROUND_ROBIN;
        server reviews:v2;
}

upstream v3{
        server reviews:v3;
}
上面的说法只是为了方便理解,不是原理就是这样。

ServiceEntry

ServiceEntry 用于将附加条目添加到 Istio 内部维护的服务注册表中。 它最常用于对访问网格外部依赖的流量进行建模。ServiceEntry的用途是用于配置Egre***ule规则。说人话就是,允许集群内部应用访问外部地址的策略,如果不配置,sidecar并不能识别外部url应该重定向到哪里。
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: foo-ext
spec:
  hosts:
  - foo.com
  ports:
  - number: 80
    name: http
    protocol: HTTP

例如这里允许网格内部访问foo.com地址。

istio通过这些扩展的API可以实现策略访问控制,应用遥测等功能配置,方便快捷,非常实用,这里通过利用常用的nginx的比较,可以简单的理解istio各个api的功能,方便快速学习。


一些常用的命令

查看配置的virtualservices
[root@172 ~]# istioctl get   virtualservices
NAME          KIND                                          NAMESPACE
bookinfo      VirtualService.networking.istio.io.v1alpha3   default
details       VirtualService.networking.istio.io.v1alpha3   default
productpage   VirtualService.networking.istio.io.v1alpha3   default
ratings       VirtualService.networking.istio.io.v1alpha3   default
reviews       VirtualService.networking.istio.io.v1alpha3   default
查看配置的destinationrules
[root@172 ~]# istioctl get destinationrules
NAME              KIND                                           NAMESPACE
details           DestinationRule.networking.istio.io.v1alpha3   default
productpage       DestinationRule.networking.istio.io.v1alpha3   default
ratings           DestinationRule.networking.istio.io.v1alpha3   default
reviews           DestinationRule.networking.istio.io.v1alpha3   default
istio-policy      DestinationRule.networking.istio.io.v1alpha3   istio-system
istio-telemetry   DestinationRule.networking.istio.io.v1alpha3   istio-system
查看配置的gateway
[root@172 ~]# istioctl get gateway
NAME               KIND                                   NAMESPACE
bookinfo-gateway   Gateway.networking.istio.io.v1alpha3   default
查看配置的ServiceEntry
[root@172 ~]# istioctl get ServiceEntry 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 利用python3模拟访问网站

    功能: 利用python代码来获取我们访问网页后网页返回给我们的信息,将返回的内容写入到文件中.我们这里就拿百度图库来做个例子 需求: 使用sock...

    py3study
  • python3 三种字符串(无前缀,前缀

    首先要明确,虽然有三种前缀(无前缀,前缀u,前缀b),但是字符串的类型只有两种(str,bytes),实验如下:

    py3study
  • python-如何获取命令行是参数

    如果需要获取python test.py xx yy zz上面输入的xx yy zz

    py3study
  • PowerBI 发布部署管道

    作为现代商业智能,数据分析是每个组织的必须部分。作为分析工具的 PowerBI 被越来越广泛地使用。随着数据量级的不断扩大,需要一种机制来确保用户可以无缝使用更...

    BI佐罗
  • 你可以用U盘黑掉一辆马自达

    得益于三年来一系列的已知Bug,马自达汽车的MZD信息娱乐系统可以通过将U盘插入仪表板进行黑客入侵。 ? 这些Bug早在在2014年5月就被Mazda 3 R...

    FB客服
  • Golang拦截器的一种实现

    前言 说起拦截器,大家一定会想起Java语言。 Java里的拦截器是动态拦截Action调用的对象,它提供了一种机制使开发者可以定义在一个action执行的前后...

    李海彬
  • 方法引用(Method reference)和invokedynamic指令详细分析

    invokedynamic是jvm指令集里面最复杂的一条。本文将详细分析invokedynamic指令是如何实现方法引用(Method reference)的。

    racaljk
  • D-Link DIR-605L 拒绝服务错误报告 (CVE-2017-9675)

    原文:http://hypercrux.com/bug-report/2017/06/19/DIR605L-DoS-BugReport/ 译者:Serene ...

    Seebug漏洞平台
  • Nginx网站服务详解(一)

    b、下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/

    刘銮奕
  • 前向传播(张量)- 实战

    py3study

扫码关注云+社区

领取腾讯云代金券