13.12 Envoy代理Ingressgateway

上一章

13.14 本章小结

下一章

更多图书

13.13 Mixer与Adapter模型

Mixer组件用于遥测数据收集和服务的访问权限控制。Mixer组件工作机制如图13-4所示。

图13-4 Mixer组件工作机制图(图片来源:Istio官方网站)

Mixer配置基于adapter和template:

·adapter:封装对后端组件的操作。内置的adapter及配置可以参考如下官方文档:https://istio.io/docs/reference/config/policy-and-telemetry/adapters/

·template:定义传递给后端adapter组件的数据格式。内置的template及配置可以参考如下官方文档:https://istio.io/docs/reference/config/policy-and-telemetry/templates/

Mixer配置模型包括如下参数:

·rule:用来绑定handler和instance,把instance定义的数据发送给指定的handler。

·handler:指定后端adapter。

·instances:指定传递给后端的template数据格式,可以指定多个。

配置示例如下:


1 apiVersion: config.istio.io/v1alpha2
 2 kind: logentry
 3 metadata:
 4   name: newlog
 5   namespace: istio-system
 6 spec:
 7   severity: '"info"'
 8   timestamp: request.time
 9   variables:
10     source: source.labels["app"] | source.workload.name | "unknown"
11     user: source.principal | "unknown"
12     destination: destination.labels["app"] | destination.service.name | 
                   "unknown"
13     response_code: response.code | 0
14     response_size: response.size | 0
15     latency: response.duration | "0ms"
16   monitored_resource_type: '"UNSPECIFIED"'
17 ---
18 apiVersion: config.istio.io/v1alpha2
19 kind: fluentd
20 metadata:
21   name: fluentdhandler
22   namespace: istio-system
23 spec:
24   address: "fluentd-es.logging:24224"
25 ---
26 apiVersion: config.istio.io/v1alpha2
27 kind: rule
28 metadata:
29   name: newlogtofluentd
30   namespace: istio-system
31 spec:
32   match: "true"
33   actions:
34    - handler: fluentdhandler.fluentd
35      instances:
36      - newlog.logentry

第1~16行定义的logentry是一个template,用于定义日志收集时的日志格式。

第18~24行定义的fluentd是一个用于存储日志到fluentd的adapter。

第26~36行定义的rule表示把logentry收集到的日志数据发送给fluentd来处理。