著名的bookinfo例子
一、部署步骤
教程里已经浓缩成2名命令了
# Enable sidecar auto injection
kubectl label namespace default istio-injection=enabled
# Deploy bookinfo sample
kubectl -n default apply -f sample/bookinfo
二、istio注入k8s的两种方式
本次是采用的是k8s自动注入的方式,即如下的第1种方式
用户空间的 Pod 要想加入 mesh, 首先需要注入 sidecar 容器, istio 提供了 2 种方式实现注入:
- 自动注入: 利用 Kubernetes Dynamic Admission Webhooks 对 新建的 pod 进行注入: initContainer + sidecar
- 手动注入: 使用命令
istioctl kube-inject
「注入」本质上就是修改 Pod 的资源定义, 添加相应的 sidecar 容器定义, 内容包括 2 个新容器:
- 名为
istio-init
的 initContainer: 通过配置 iptables 来劫持 Pod 中的流量- 名为
istio-proxy
的 sidecar 容器: 两个进程 pilot-agent 和 envoy, pilot-agent 进行初始化并启动 envoy
下面的文章会讲有
三、bookinfo文件夹
sample/bookinfo下面有3个yaml文件
- bookinfo.yaml: 定义部署了productpage、3个版本的reviews、ratings、details这几个k8s的
service/deployment - bookinfo-gateway.yaml: 定义istio的拦截规则?
- destination-rule-all.yaml: 定义微服务间的访问router规则?