Istio系列学习(十四)----Istio策略适配器配置和Env适配器配置

一、Istio策略适配器配置

Istio Adapter 机制的另外一个重要应用是策略执行。
策略执行Adapter 负责处理 Mixer 转发的 Check 请求,并将该请求分发给对应的策略执行后端,根据后端的判断逻辑返回拒绝或通过,来控制网格内服务之间的访问。

  1. List适配器

最简单的判断逻辑的 Adapter,它配置了一个黑名单或者白名单,匹配白名单则放行; 匹配黑名单则拒绝。

1.Handler的配置 对Handler的配置如下。
◎ providerUrl:名单的地址,当使用本地名单时可以不进行配置。
◎ refreshInterval:获取名单的刷新间隔。
◎ ttl:名单保存时长。
◎ cachingInterval:缓存的间隔。
◎ cachingUseCount:缓存的记录数。
◎ overrides:重要字段,该列表中的名单覆盖从providerUrl获取的名单。
◎ entryType:名单条目的类型,可以是STRINGS、CASE_INSENSITIVE_STRINGS、
IP_ADDRESSES 和 REGEX,分别表示字符串、大小写不敏感的字符串、IP 地址(段)和表达式。 ◎ blacklist:是否是黑名单,影响匹配后的判断逻辑。 如下所示配置了一个白名单的Handler,只有满足IP段条件的检查通过:
在这里插入图片描述

  1. Instance的配置

策略执行的模板一般比遥测数据的模板简单,就是配置待检 查的字段,在如下Instance中定义了从请求中提取IP作为检查输入。
在这里插入图片描述

  1. Rule的配置

配置如下Rule关联Handler和Instance,只有来源负载上标签是"forecast"的请求执行名单检查:
在这里插入图片描述

二、 Denier适配器

Denier适配器也是一个比较简单的Adapter,按照配置总是返回拒绝。
1.Handler的配置
Denier 适配器的 Handler 的主要配置(见图 4-26)就是定义拒绝的状态信息 status,包括状态码
(code)、消息(message)和详情(details),类似在写代码时定义的异常信息。还有两个有意思的字 段:validDuration和validUseCount,分别表示有效间隔和有效次数。当时间不超过validDuration时,检查 次数若不超过validUseCount,则不再做检查。
在这里插入图片描述
在满足条件时将会返回“1333”状态码:

2.Instance的配置
Denier的检查对象同List名单中的检查对象定义。

3.Rule的配置
只需配置如下所示的 Rule 让上面的 Handler 生效,来自标签为“forecast”的服务请求就都会被拒绝, 并返回“1333”状态码
在这里插入图片描述
4.3.3 Memory Quota适配器
使用场景是设置一个生效时间进行限流,即 设置在一个时间段内的访问配额。

4.3.4 Redis Quota适配器
具备 HA 能力,功能类似Memory Quota

4.4 Kubernetes Env适配器配置
用于提取Kubernetes中服务的元数据并交给后续的Adapter处理。

下面是一个具体场景:
在Envoy上报数据时,在上报的访问源和目标信息中一般只包含IP等基础信 息,不会包含服务的命名空间信息,但后端APM需要基于命名空间对数据进行分组管理。这时基于负载 的标识关联和补齐其他需要的属性就可以通过Kubernetesenv Adapter来实现,补齐的属性就可以在后续的 APM Adapter中使用。

1.Handler的配置
Kubernetes Env最主要的一个参数是通过kubeconfigPath配置Kubeconfig的文件位置,即找到Kube- apiserver,从Kube-apiserver上获取需要的信息。配置如下:
在这里插入图片描述
2.Instance的配置
在Kubernetes Instance中定义Kubernetesenv Adapter如何发现和生成需要的与Pod相关的数据,如下所 述。
◎ sourceUid:源Pod的UID。
◎ sourceIp:源Pod的IP。
◎ destinationUid:目标Pod的UID。
◎ destinationIp:目标Pod的IP。
◎ destinationPort:目标容器的端口。

另外,通过定义 attribute_binding 将 Kubernetesenv Adapter 输出的属性绑定到 Mixer的属性上,可以
供其他Adapter使用。
在Kubernetes Output模板中能提取的属性如下。
(1)源 Pod 的信息:sourcePodUid、sourcePodIp、sourcePodName、sourceLabels、
sourceNamespace、sourceServiceAccountName、sourceHostIp、sourceWorkloadUid、 sourceWorkloadName、sourceWorkloadNamespace、sourceOwner。
(2)目标 Pod 的信息:destinationPodUid、destinationPodIp、destinationPodName、
destinationContainerName、destinationLabels、destinationNamespace、destinationService AccountName、 destinationHostIp、destinationOwner、destinationWorkloadUid、destination WorkloadName、 destinationWorkloadNamespace。

istio安装时会定义Kubernetes的如下模板实例,
在这里插入图片描述
3.Rule的配置
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值