今日鸡汤
如果不去遍历世界,我们就不知道什么是我们精神和情感的寄托,但我们一旦遍历了世界,却发现我们再也无法回到那美好的地方去了。当我们开始寻求,我们就已经开始失去,而我们不开始寻求,我们根本无法知道自己身边的一切是如此可贵。
愿你有寻找自我的勇气。
今天来看Istio神奇的遥测功能和出名的MTLS。
Istio的策略和遥测
演进历史
- 传统的遥测要通过在业务代码中插入生成并上报数据的逻辑,当协议发生变化或上报字段被修改时,需要修改业务。
- 之后,在Sidecar代理了业务能力后,可以通过Sidecar代理上报监控数据,但每次APM服务端发生改变时都要变更Sidecar,且对于多个APM后端时,每个Sidecar都要配置多个后端信息且按照其协议类型上报数据,
- Istio将这部分逻辑抽出来,放到服务端组件Mixer上,Envoy和Mixer单独连接,通过Adapter来对接不同的APM。
Mixer的Adapter机制是什么?
Mixer的Apater里封装了对数据的处理逻辑和对后端服务的调用接口,Adapter提供通用接口供Mixer调用,然后将调用转到对应的后端服务。Mixer通过Protobuf格式定义Apater的配置。
第一步:Envoy生成数据并将数据上报给Mixer。
第二步:Mixer调用对应APM的Adapter处理收到的数据。
如何配置Adapter?
Istio通过 Handler、Instance和Rule这三个资源对象描述Adapter。在Rule中定义基于满足match条件的请求构造的Instance对象,并将Instance对象发送给配置的Handler处理。
- Handler描述定义的Adaptes及其配置。
- Instance定义里Adapter要处理的数据对象。
- Rule配置了一组规则,告诉Mixer有哪个Instance在什么时候被发送给哪个Handler处理,包括匹配表达式和执行动作。
Mixer内置了哪些典型的Mixer?
- Prometheus适配器:抓取数据存储,并提供PromQL语法进行查询或对接Grafana、Kiali等Dashboard进行显示,根据配置规则告警。
- Fluentd适配器:开源日志数据收集器。
- StatsD适配器:监听并接收Metric的Daemon。
- Stdio适配器:将数据通过标准输出打印出来。
- Zipkin适配器:完整的从调用链埋点、收集、存储、检索到UI的完整方案。
Istio的服务安全
Istio的安全目标是什么?
不用修改业务代码就能提供服务访问安全。Istio提供了透明的分布式安全层,并提供了底层安全的通信通道,管理服务通信的认证、授权和加密,还提供了Pod到Pod、服务到服务的通信安全,开发人员在这个安全基础设施层只需要关注应用程序级别的安全性。
Istio服务安全由哪些组件支持?
4个
- Citadel:安全核心组件,用于密钥和证书管理;(Citadel监听Kube-apiserver,为每个service生成密钥和证书,当创建Pod时,Kubenetes将Secrete挂载到对应的Pod中;Citadel维护证书的生命周期)
- Envoy:代理服务间安全通信,包括认证、通道加密等;(客户端的Envoy拦截到服务端的Outbound流量,两个Envoy双向TLS握手;请求到达服务端Envoy,将请求转发给本地服务)
- Pilot:配置管理服务,将安全相关的配置分发给Envoy;(Pilot生成配置信息,将配置下发给Envoy)
- Mixer:配置Adapter做授权和访问审计
Istio提供哪些认证方式?
2种:
- 传输认证(服务到服务的认证):基于双向TLS实现,包括双向认证、通道安全和证书自动维护
- 来源认证(最终用户认证):使用JWT验证请求级别的验证
Istio中服务间端到端的通信安全是通过Envoy来实现的,双向TLS在两个Envoy间进行。
- 服务被调用方:使用认证策略配置服务端的认证,Pilot将认证策略转换为Envoy可识别的形式下发给Envoy,Envoy根据收到的配置做身份认证。
- 服务调用方:通过DesinationRule配置,Pilot将配置信息下发到对应的Envoy,Envoy根据配置做双向TLS。
Istio提供哪些授权方式?
按级别分,三种:命名空间级别、服务级别和方法级别。
按语法分,三种:基于角色的语义、服务到服务和最终用户到服务。
网友评论