官网本身有详细的说明,这里简述,当快速入门
Istio 是一个用来连接、管理和保护微服务的开放平台。
Istio 提供一种简单的方式来为已部署的服务建立网络,该网络具有负载均衡、服务间认证、监控等功能,而不需要对服务的代码做任何改动。想要让服务支持 Istio,只需要在您的环境中部署一个特殊的 sidecar,使用 Istio 控制平面功能配置和管理代理,拦截微服务之间的所有网络通信。
Istio 提供了一个完整的解决方案,通过为整个服务网格提供行为洞察和操作控制来满足微服务应用程序的多样化需求。它在服务网络中统一提供了许多关键功能:
Istio 服务网格逻辑上分为数据平面和控制平面。
控制平面负责管理和配置代理来路由流量。此外控制平面配置 Mixer 以实施策略和收集遥测数据。
下图显示了构成每个面板的不同组件:
Mixer 是一个独立于平台的组件,负责在服务网格上执行访问控制和使用策略,并从 Envoy 代理和其他服务收集遥测数据。代理提取请求级属性,发送到 Mixer 进行评估。
Pilot 为 Envoy sidecar 提供服务发现功能,为智能路由(例如 A/B 测试、金丝雀部署等)和弹性(超时、重试、熔断器等)提供流量管理功能。它将控制流量行为的高级路由规则转换为特定于 Envoy 的配置,并在运行时将它们传播到 sidecar。
Citadel 通过内置身份和凭证管理可以提供强大的服务间和最终用户身份验证。可用于升级服务网格中未加密的流量,并为运维人员提供基于服务标识而不是网络控制的强制执行策略的能力。从 0.5 版本开始,Istio 支持基于角色的访问控制,以控制谁可以访问您的服务
curl -L https://git.io/getLatestIstio | sh -
mv istio-0.8.0 /usr/local/istio
echo ‘PATH=$PATH:/usr/local/istio/bin:‘ >> /etc/profile
kubectl apply -f install/kubernetes/istio.yaml
查看启动的服务
$ kubectl get svc -n istio-system
查看pod是否都启动成功
$ kubectl get pods -n istio-system
Grafana支持多种不同的时序数据库数据源,Grafana对每种数据源提供不同的查询方法,而且能很好的支持每种数据源的特性。
实现istio的Citadel功能的组件
控制内部访问外部链接的代理,如果这里没设置规则,Envoy将因为不能识别访问规则而抛弃访问请求。
控制外部访问内部数据的策略,只有配置后外部(kubernetes集群外)业务才能访问集群内业务。
ISTIO的pilot组件
ISTIO的策略控制组件
提供自动注入功能,这样yaml文件就不需要再手动打补丁注入
ISTIO 实现遥测数据的组件
替代heapster的一个监控数据收集工具
Istio网格中的服务生成一个图。在这个task中,你将安装Servicegraph 插件并使用基于web的界面来查看服务网格的服务图。
服务轨迹跟踪,同时可以记录到业务的访问量等
reviews 微服务有 3 个版本:
安装bookinfo应用,由于默认启动了istio-sidecar-injector,所以不需要手动注入
$ kubectl apply -f /usr/local/istio/samples/bookinfo/kube/bookinfo.yaml
添加一个Ingress gateway 应用,以便外部可以访问测试
$ kubectl apply -f /usr/local/istio/samples/bookinfo/kube/bookinfo-gateway.yaml
确认所有的服务和 Pod 都已经正确的定义和启动:
$ kubectl get services
$ kubectl get pods
确认都是处于runing状态
curl curl -o /dev/null -s -w "%{http_code}\n" http://172.254.48.40:9080/productpage
可以看到有三个版本,一个没等级信息,所有没font(v1),一个颜色是红色(v2),一个颜色是黑色(v3)
原文:http://blog.51cto.com/brucewang/2149104