Istio v1aplha3 路由 API

先来看看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
[[email protected] ~]# 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
[[email protected] ~]# 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
[[email protected] ~]# istioctl get gateway
NAME               KIND                                   NAMESPACE
bookinfo-gateway   Gateway.networking.istio.io.v1alpha3   default
查看配置的ServiceEntry
[[email protected] ~]# istioctl get ServiceEntry 

原文地址:http://blog.51cto.com/brucewang/2150006

时间: 2024-08-01 04:38:40

Istio v1aplha3 路由 API的相关文章

[Istio]流量管理API v1alpha3路由规则

Istio提供一个API进行流量管理,该API允许用户将请求路由到特定版本的服务,为弹性测试注入延迟和失败,添加断路器等,所有这些功能都不必更改应用程序本身的代码.Istio 1.0中引入新的流量管理API v1alpha3,新版本API将完全取代之前的API,并不向后兼容. 设计原则 1)除支持声明式(意图)配置外,也支持显示指定模型依赖的基础设施.例如除了配置入口网管的功能特性以外,负责实现入口网管功能的组件(Controller)也可以在模型指定 2)编写模型时应该"生产者导向"

Web API 1入门之Self-Host寄宿及路由原理(二)

前言 刚开始表面上感觉Web API内容似乎没什么,也就是返回JSON数据,事实上远非我所想,不去研究不知道,其中的水还是比较深,那又如何,一步一个脚印来学习都将迎刃而解. Self-Host 我们知道Web API它可以快速为HTTP客户端提供API来创建Web服务,为何如此这样说呢?因为我们可以将其作为主机也就是一个服务器来用完全不需要IIS,这就是我们下面要讲的第一个内容Self-Host,实现对Web API寄宿的方式有多种并且都是独立于ASP.NET框架之外,如下Self-Host寄宿

2.4使用属性在 ASP.NET Web API 2 路由创建一个 REST API

Web API 2 支持一种新型的路由,称为属性路由.属性路由的一般概述,请参阅属性路由 Web API 2 中.在本教程中,您将使用属性路由创建一个 REST API 集合的书.API 将支持以下操作 ︰ 行动 URI 的示例 得到的所有书的列表. / api/书 得到一本书的 id. /api/books/1 获得一本书的详细信息. /api/books/1/details 按流派获得书籍的列表. /api/books/fantasy 按出版日期获取书籍的列表. /api/books/dat

使用Istio治理微服务入门

近两年微服务架构流行,主流互联网厂商内部都已经微服务化,初创企业虽然技术积淀不行,但也通过各种开源工具拥抱微服务.再加上容器技术赋能,Kubernetes又添了一把火,微服务架构已然成为当前软件架构设计的首选.但微服务化易弄,服务治理难搞! 一.微服务的"痛点" 微服务化没有统一标准,多数是进行业务领域垂直切分,业务按一定的粒度划分职责,并形成清晰.职责单一的服务接口,这样每一块规划为一个微服务.微服务之间的通信方案相对成熟,开源领域选择较多的有RPC或RESTful API方案,比如

idou老师教你学Istio05: 如何用Isito实现智能路由配置

概要 要介绍istio请求路由,我们不由得先从pilot 和 envoy开始谈起. 在服务网格中,Pilot管理和配置所有的envoy实例.在pilot中,你几乎可以配置所有的关于流量导向规则及其他故障恢复规则.而Envoy不仅会获得从pilot拿到的基本负载均衡信息,同时周期性的健康检查,也会告诉所有的envoy其他的实例现在的运行状况.负载均衡信息,及健康检查的信息可以使envoy更加智能的去分发流量. 在上述的pilot结构中,不难理解,platform adapter作为平台适配器,可以

C#进阶系列——WebApi 路由机制剖析:你准备好了吗?

前言:从MVC到WebApi,路由机制一直是伴随着这些技术的一个重要组成部分. 它可以很简单:如果你仅仅只需要会用一些简单的路由,如/Home/Index,那么你只需要配置一个默认路由就能简单搞定: 它可以很神秘:你的url可以千变万化,看到一些看似“无厘头”的url,感觉很难理解它如何找到匹配的action,例如/api/user/1/detail,这样一个url可以让你纠结半天. 它可以很晦涩:当面试官提问“请简单分析下MVC路由机制的原理”,你可能事先就准备好了答案,然后噼里啪啦一顿(型如

我 &amp;&amp; symfony3 (路由)

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "Helvetica Neue"; color: #323333 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #dd2244; background-color: #f7f7f7 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px

Web Api Route 注册要放在 Mvc Route 注册前

今天想研究一下Web Api,写了一个测试Api,打开网站后浏览一下,可是却提示找不到方法,刚开始以为哪里配置错了,可找了半天也没见. 因为我是在一个现有Mvc站点做的Demo,所以打算新建一个Mvc网站,再试一下,新站点是正常的,对比一下Global文件,发现WebApiConfig和RouteConfig顺序不一样. 如果把新站点的RouteConfig也放在WebApiConfig之前,同样提示找不到方法.看来这两个配置有关联呀. ? 1 2 WebApiConfig.Register(G

Android 的媒体路由功能应用与框架解析

一.功能描述 Android 的媒体路由API被设计用来允许多种媒体(视频.音乐.图片)在与ANDROID设备连接(无线或有线)的辅助设备(如电视.立体声.家庭戏院系统.音乐播放机)上显示和播放,使用该框架和API,允许Android用户立即在辅助设备上显示图片.播放音乐.共享视频等. 媒体路由框架提供两种播放输出类型:远端播放和辅助输出.远端播放类型指的是辅助设备处理媒体内容的接收.解码和回放,而Android设备(如手机)只起远程控制作用,如ANDROID应用使用该类型用来支持Google