• 封面
  • 版权信息
  • 序一
  • 序二
  • 序三
  • 前言
  • 初级篇
  • 第1章 服务网格与Istio
  • 1.1 微服务架构的发展与挑战
  • 1.2 使用应用程序库解决这些挑战
  • 1.2.1 特定应用程序库的缺点
  • 1.2.2 将这些问题推向基础设施
  • 1.3 什么是服务网格
  • 1.4 为什么服务网格是必要的
  • 1.5 Istio服务网格
  • 1.5.1 核心功能
  • 1.5.2 为什么要使用Istio
  • 1.5.3 成熟度和支持级别
  • 1.6 本章总结
  • 第2章 快速上手Istio
  • 2.1 在MiniKube上搭建Istio环境
  • 2.1.1 安装启动Minikube
  • 2.1.2 安装部署Helm
  • 2.1.3 安装部署Istio
  • 2.2 在Docker Desktop上搭建Istio环境
  • 2.2.1 安装配置Docker Desktop for Kubernetes
  • 2.2.2 切换Kubernetes
  • 2.2.3 安装部署Helm
  • 2.2.4 安装部署Istio
  • 2.3 使用公有云Istio服务
  • 2.4 在Istio中部署第一个应用程序
  • 2.5 本章总结
  • 第3章 Istio架构剖析
  • 3.1 Istio的整体架构
  • 3.2 剖析Istio控制平面
  • 3.3 剖析Istio数据平面
  • 3.3.1 Envoy代理
  • 3.3.2 Envoy的启动配置
  • 3.3.3 Envoy静态与动态配置
  • 3.3.4 使用Envoy
  • 3.3.5 Envoy请求重试
  • 3.3.6 Envoy的Admin API
  • 3.3.7 Envoy与其他类似代理的比较
  • 3.4 剖析Sidecar自动注入
  • 3.4.1 Kubernetes的Webhook机制
  • 3.4.2 启用Webhook插件
  • 3.4.3 采用Webhook自动注入Istio Sidecar
  • 3.4.4 开启需要自动注入Sidecar的命名空间
  • 3.5 本章总结
  • 中级篇
  • 第4章 东西向流量管理
  • 4.1 流量管理
  • 4.1.1 术语
  • 4.1.2 流量拆分与导向
  • 4.1.3 Istio服务与Kubernetes服务
  • 4.1.4 示例
  • 4.2 实现东西向流量路由
  • 4.2.1 自动Sidecar注入
  • 4.2.2 部署
  • 4.2.3 查看Ingress Gateway的地址
  • 4.2.4 请求路由
  • 4.3 实现流量镜像及对比分析
  • 4.3.1 流量镜像
  • 4.3.2 流量对比
  • 4.3.3 创建用于Istio流量镜像的服务
  • 4.3.4 创建流量镜像的Istio策略
  • 4.3.5 搭建Diffy用于请求流量对比
  • 4.3.6 发送流量进行镜像验证
  • 4.4 通过Istio管理应用的灰度发布
  • 4.4.1 Kubernetes中的灰度发布
  • 4.4.2 使用Istio进行灰度发布
  • 4.4.3 统一的流量路由规则
  • 4.5 本章总结
  • 第5章 南北向流量管理
  • 5.1 Istio网关
  • 5.1.1 Istio网关的工作原理
  • 5.1.2 Istio网关的负载均衡作用
  • 5.1.3 入口网关服务
  • 5.1.4 入口网关部署
  • 5.1.5 网关资源
  • 5.1.6 网关虚拟服务
  • 5.1.7 调试入口网关
  • 5.2 用HTTPS加密网关
  • 5.2.1 为入口网关配置TLS
  • 5.2.2 创建示例服务
  • 5.2.3 定义虚拟服务
  • 5.2.4 通过网关请求示例服务
  • 5.2.5 为多个主机配置TLS入口网关
  • 5.3 基于SNI的TLS路由
  • 5.3.1 定义内部服务nginx
  • 5.3.2 定义内部服务nginx2
  • 5.3.3 部署网关
  • 5.3.4 根据域名进行访问
  • 5.4 服务条目
  • 5.4.1 服务条目基本原理
  • 5.4.2 服务条目的定义参数
  • 5.5 实现出口流量路由的统一管理
  • 5.5.1 出口安全
  • 5.5.2 创建客户端
  • 5.5.3 HTTP流量网关
  • 5.5.4 HTTPS流量网关
  • 5.5.5 出口流量的TLS发起
  • 5.6 实现服务条目的DNS寻址
  • 5.6.1 CoreDNS及其插件工作机制
  • 5.6.2 Kubernetes下的CoreDNS
  • 5.6.3 部署Istio CoreDNS
  • 5.6.4 更改集群CoreDNS配置
  • 5.6.5 创建服务条目验证DNS解析
  • 5.7 本章总结
  • 第6章 流量治理
  • 6.1 使用流量策略
  • 6.1.1 目标规则
  • 6.1.2 流量策略
  • 6.2 设置负载均衡
  • 6.2.1 标准负载均衡算法
  • 6.2.2 会话保持
  • 6.2.3 示例
  • 6.3 熔断
  • 6.3.1 连接池管理
  • 6.3.2 异常检测
  • 6.3.3 创建示例服务
  • 6.3.4 使用fortio触发熔断
  • 6.4 服务重试
  • 6.5 故障注入
  • 6.6 命名空间隔离下的流量管理
  • 6.6.1 Sidecar资源定义
  • 6.6.2 示例
  • 6.7 本章总结
  • 第7章 安全
  • 7.1 Istio安全架构
  • 7.1.1 Istio身份模型
  • 7.1.2 Istio公钥基础设施
  • 7.1.3 Istio证书和密钥轮换机制
  • 7.2 剖析认证机制
  • 7.2.1 认证架构
  • 7.2.2 双向TLS认证
  • 7.2.3 认证策略
  • 7.3 使用认证策略
  • 7.3.1 Istio默认认证策略
  • 7.3.2 认证策略示例
  • 7.3.3 双向认证策略检查
  • 7.4 使用自定义CA证书和密钥
  • 7.4.1 准备证书和密钥
  • 7.4.2 插入证书和密钥
  • 7.4.3 检查新证书
  • 7.5 使用cert-manager管理网关证书
  • 7.5.1 生成签名密钥对
  • 7.5.2 将签名密钥对保存为Secret
  • 7.5.3 部署cert-manager
  • 7.5.4 创建引用Secret的Issuer
  • 7.5.5 获得签名证书
  • 7.5.6 检查证书与密钥
  • 7.5.7 部署自定义网关
  • 7.5.8 定义Kubernetes服务
  • 7.5.9 创建虚拟服务
  • 7.6 剖析授权机制
  • 7.6.1 启用全局授权
  • 7.6.2 Istio授权策略
  • 7.6.3 授权策略示例
  • 7.6.4 诊断授权策略
  • 7.7 本章总结
  • 第8章 Mixer的控制与观测
  • 8.1 Mixer架构设计
  • 8.2 剖析适配器机制
  • 8.2.1 属性及表达式
  • 8.2.2 配置模型
  • 8.2.3 处理程序
  • 8.2.4 示例
  • 8.2.5 规则
  • 8.3 指标数据收集
  • 8.3.1 metric模板
  • 8.3.2 Prometheus适配器的配置
  • 8.3.3 监控指标
  • 8.3.4 配置Istio收集指标
  • 8.3.5 查询Istio指标
  • 8.3.6 可视化Istio指标
  • 8.4 集成日志数据收集
  • 8.4.1 logentry模板
  • 8.4.2 stdio适配器的配置
  • 8.4.3 配置Istio日志
  • 8.4.4 查看日志
  • 8.4.5 安装EFK软件栈
  • 8.4.6 为Fluentd适配器配置Istio资源
  • 8.4.7 通过Kibana查看日志
  • 8.5 启用基于Zipkin或Jaeger的分布式跟踪
  • 8.5.1 Istio跟踪采样率
  • 8.5.2 部署应用示例
  • 8.5.3 启用Zipkin
  • 8.5.4 启用Jaeger
  • 8.6 启用速率限制策略
  • 8.6.1 配额模板
  • 8.6.2 速率限制配置
  • 8.6.3 部署应用示例
  • 8.7 启用黑白名单策略
  • 8.7.1 list适配器及模板
  • 8.7.2 部署应用示例
  • 8.7.3 部署适配器示例
  • 8.7.4 校验白名单策略
  • 8.8 本章总结
  • 高级篇
  • 第9章 Istio稳定性与运维
  • 9.1 Istio功能模块的稳定性与常见问题
  • 9.1.1 可能的请求错误排查
  • 9.1.2 证书有效期管理
  • 9.1.3 使用SDS动态管理证书
  • 9.2 Istio流量管理相关运维
  • 9.2.1 路由规则对应用程序不生效
  • 9.2.2 Sidecar是否注入
  • 9.2.3 Istio配置参数优化
  • 9.2.4 Envoy无法连接HTTP1.0
  • 9.2.5 检查Envoy与Pilot状态差异
  • 9.3 Istio组件升级与回滚
  • 9.3.1 升级安装文件
  • 9.3.2 CRD升级
  • 9.3.3 控制平面升级
  • 9.3.4 数据平面Sidecar升级
  • 9.3.5 升级中的影响分析
  • 9.4 本章总结
  • 第10章 Istio定制与扩展
  • 10.1 Mixer适配器扩展
  • 10.2 实现适配器
  • 10.3 编译与打包适配器
  • 10.4 Istio CNI插件
  • 10.4.1 安装配置Istio CNI插件
  • 10.4.2 运行机制
  • 10.4.3 验证CNI插件链配置
  • 10.4.4 验证iptables是否已修改
  • 10.5 从Kubernetes扩展到虚拟机
  • 10.5.1 网格扩展
  • 10.5.2 生成Istio的配置cluster.env
  • 10.5.3 生成DNS配置文件kubedns
  • 10.5.4 获取Istio服务账户密钥
  • 10.5.5 在虚拟机上进行配置
  • 10.5.6 部署应用示例到网格扩展
  • 10.6 扩展Envoy过滤器
  • 10.6.1 定义Envoy过滤器
  • 10.6.2 部署示例应用
  • 10.7 集成外部Zipkin兼容服务
  • 10.7.1 集成部署
  • 10.7.2 使用原生Zipkin
  • 10.7.3 使用Zipkin兼容服务
  • 10.8 本章总结
  • 第11章 Knative:基于Istio的无服务器计算
  • 11.1 Knative架构解析
  • 11.1.1 Knative>Kubernetes+Istio
  • 11.1.2 Knative的设计
  • 11.1.3 安装Knative
  • 11.2 Knative Build运行机制
  • 11.2.1 Knative Build资源定义
  • 11.2.2 创建Knative Build示例
  • 11.2.3 验证使用Knative Build构建的镜像
  • 11.3 Knative Eventing运行机制
  • 11.3.1 架构设计
  • 11.3.2 创建Knative Eventing示例
  • 11.3.3 验证事件
  • 11.4 基于Istio实现Serving组件
  • 11.4.1 Knative Serving的设计
  • 11.4.2 基于Serving实现source-to-URL部署
  • 11.5 在Istio上部署配置Knative
  • 11.6 基于Knative Serving的自动伸缩
  • 11.6.1 路由与自动伸缩
  • 11.6.2 自动伸缩机制
  • 11.6.3 自动伸缩算法
  • 11.6.4 基于Serving实现自动伸缩示例
  • 11.6.5 使用蓝绿部署路由和管理流量
  • 11.7 本章总结
  • 第12章 多集群管理
  • 12.1 服务网格的未来
  • 12.2 多集群部署管理
  • 12.3 单控制平面VPN连接拓扑
  • 12.3.1 前提约束
  • 12.3.2 拓扑架构
  • 12.3.3 启用双向TLS通信
  • 12.3.4 部署本地控制平面
  • 12.3.5 安装istio-remote
  • 12.3.6 部署示例应用
  • 12.4 单控制平面Gateway连接拓扑
  • 12.4.1 集群感知的服务路由
  • 12.4.2 Istio控制平面组件
  • 12.4.3 istio-remote组件
  • 12.4.4 部署示例应用
  • 12.5 多控制平面
  • 12.5.1 部署控制平面
  • 12.5.2 设置DNS
  • 12.5.3 部署示例应用
  • 12.5.4 跨集群的版本路由
  • 12.6 本章总结