目录
Istio 官方四大功能中两个基于Mixer实现(Control、Observe)
实践1 从0开发并运行一个Mixer Adapter: 原理
实践1 从0开发并运行一个Mixer Adapter:两个角色
实践1 从0开发并运行一个Mixer Adapter: 步骤
大纲
Istio架构回顾&Mixer介绍
Mixer的功能和设计
Mixer的配置模型
Mixer的典型应用
Mixer实践1和2
Istio架构回顾&Mixer介绍
- Pilot -- 配置管理,在Istio中相当于一个大管家,还有服务发现--管理Proxy和Service运行时的配置
- Mixer-- 守护神,负责管理相对静态的配置
- Adapter是一个模板,Handler是一个实现
Istio架构回顾
Istio 官方四大功能中两个基于Mixer实现(Control、Observe)
Mixer在Istio中角色
- 功能上:负责策略控制和遥测收集
- 架构上:提供插件模型,可以扩展和定制
Mixer的功能和设计
没有Mixer的时候
Mixer的Adapter机制
- Mixer 处理不同基础设施后端的灵活性是通过使用通用插件模型实现的,这种插件称为Adapter。
- Mixer通过它们与不同的基础设施后端连接,这些后端可提供核心功能,提供日志、监控、配额、 ACL 检查等
Mixer完整视图
解耦、中介、运维时配置
Mixer的处理流程
Mixer的处理流程
- Envoy生成属性上报Mixer
- Mixer 调用对应后端处理属性
参考:https://istio.io/docs/reference/config/policy-and-telemetry/attribute-vocabulary/
Mixer的配置模型
Mixer 配置模型概述
- Handler: 创建 Handler,即配置Mixer适配器
- Instance: 从 Istio 属性中生成 instance。
- Rule: 配置一组规则,这些规则描述了何时调用特定适配器及哪些实例。
Mixer 配置模型1: Handler
Mixer 配置模型1: Handler
Mixer 配置模型2:实例( Instance)
Mixer 配置模型2:实例( Instance)
Mixer 配置模型3: 规则( Rule)
Mixer 配置模型3: 规则( Rule)
Request的属性处理流程
接收属性
补充属性,
处理属性
Request的属性处理流程
Mixer Adapters
Mixer Adapters
Mixer 的 Check Adapter
Mixer 的 Check Adapter
Mixer的高可用设计
- 无状态
- 高可以用
- 缓存和缓冲
Mixer的高可用设计
Mixer 的 Batch Report
Mixer 的 Batch Report
Mixer的典型应用
Mixer典型应用1: 华为云应用服务网格
Mixer典型应用1: 华为云应用服务网格
Mixer典型应用2: Google Apigee
Mixer典型应用2: Google Apigee
Mixer实践1
实践1 从0开发并运行一个Mixer Adapter: 原理
实践1 从0开发并运行一个Mixer Adapter: 原理
实践1 从0开发并运行一个Mixer Adapter:两个角色
实践1 从0开发并运行一个Mixer Adapter:两个角色
实践1 从0开发并运行一个Mixer Adapter: 步骤
1.创建独立的Adapter目录,并开发Adapter的代码开发Adapter代码
cd $MIXER_REPO/adapter && mkdir mysampleadapter && cd mysampleadapter
#创建mysampleadapter .go文件定义处理逻辑
2. //配置config.proto,描述配置的定义。 #创建config.proto文件,描述adapter的配置参数
mkdir config
3. 根据proto生成go的配置,并在adapter代码中使用
go generate ./...
go build ./...
4.在Mixer中注册这个新的Adapter。 # 在inventory.yaml 中注册adapter,
mysampleadapter: "istio.io/istio/mixer/adapter/mysampleadapter"
go generate $MIXER_REPO/adapter/doc.go
5. 配置并使用新创建的adapter。 #在testdata目录下创建使用该adapter的配置,即handler, instance, rulle。
mkdir $MIXER_REPO/adapter/mysampleadapter/testdata
#确认两个文件attributes.yaml和mysampleadapter.yaml
6. 启动mixer 服务端
pushd $ISTIO/istio && make mixs
$GOPATH/out/linux_amd64/release/mixs server --configStoreURL=fs://$(pwd)/mixer/adapter/mysampleadapter/testdata
7.启动一个客户端,模拟上报数据
pushd $ISTIO/istio && make mixc
$GOPATH/out/linux_amd64/release/mixc report -s destination.service="svc.cluster.local" -t request.time="2019-01-10T20:00:00Z"
8.查看结果输出
tail $ISTIO/istio/out.txt
实践1 从0开发并运行一个Mixer Adapter:效果
Mixer服务端
模拟客户端
Mixer实践2
实践2 通过Mixer收集自定义的遥测数据:目标
- 编写自定义的Metric模板
- 在Istio中创建自定义Metric、 Prometheus Handler和Rule
- 认识Prometheus Adapter
- 实践Prometheus 的主要能力
实践2 通过Mixer收集自定义的遥测数据:步骤
--1. 创建配置,包括prometheus的handler、 metric和rule
kubectl apply -f double-request.yaml
--2. 查看创建的对象
kubectl get metrics.config.istio.io -nistio-system
kubectl get rules.config.istio.io -nistio-system
kubectl get prometheus.config.istio.io -nistio-system
-- 3. 发起对服务的访问,生成访问metric数据
--4.通过Prometheus查看metric数据
--4.1 查看doublereques的metrichttp://49.4.84.29:9090/graph?g0.range_input=1h&g0.expr=istio_double_request_count&g0.t
ab=1
--4.2 通过prometheus检索特定目标的metric
istio_double_request_count{destination="details-v1"}
实践2 通过Mixer收集自定义的遥测数据:效果
Instance定义
Prometheus检索