Rancher 上部署 istio
- 打开 default 命名空间
- 打开 应用商店, 点击启动或者 launch
- 找到 istio 点开查看详情
- 默认配置即可,我们这个版本是 1.05
- 可以选择开启 grafana,不过需要注意的是需要为集群 加 PV 即持久化存储
- 点击启动即可
- 这样添加持久卷
- 记得开启多主机读写
一会儿可以看到部署完毕,如果中途遇到问题,通常是 网络问题
有时需要手动为你的服务添加负载均衡
- 注意选择命名空间,这里可以理解为添加路由。
- 现在,你需要在 Rancher 的面板上检查 Istio 所有的工作负载、负载均衡以及服务发现均处于良好状态。即 active
- 最后还有一样东西需要添加:在你的默认命名空间里添加一个 istio-injected 标签,Istio sidecar 容器会自动注入你的节点,运行下方的 kubectl 命令(如上文所述,你可以从 Rancher 内部启动kubectl )。
这一标签将使得 Istio-Sidecar-Injector 自动将 Envoy 容器注入您的应用程序节点。
Istio bookinfo 部署
部署Bookinfo示例应用
现在,你可以开始部署一个测试应用并且测试 Istio 的强大功能。
首先,部署 Bookinfo 示例应用。这个应用有趣的部分在于它有三个版本的 reviews 程序同时运行。我们可-以在这三个版本的程序中体验到Istio的一些功能。
接着,访问 rancher-demo 的默认项目中的工作负载来部署 Bookinfo app,具体的操作是:
- 点击 Import Yaml;下载bookinfo.yaml(https://info.rancher.com/hubfs/bookinfo.yaml)到本地
当你进入 Import Yaml菜单之后,通过从文件读取,将其上传至 Rancher;
对于 Import Mode:选择 【集群:将任何资源直接导入此集群】 【Cluster: Direct import of any resources into this cluster】
点击【导入/Import】。
这应该为您的 rancher-demo Default 项目增加6个工作负载。如下图:
现在,通过 Istio 暴露 Bookinfo app ,你需要应用此 bookinfo-gateway.yaml,操作方式与 bookinfo.yaml 相同。
此时,你可以用浏览器访问 bookinfo app。
访问方式
你有两种方式可以获取 istio-ingressgateway 负载均衡器的外部 IP 地址:
第一,从 Rancher 中获取。访问负载均衡,从右手边的菜单栏选择 View in API。它将打开一个新的浏览器页面,在那搜索 publicEndpoints -> addresses,你就可以看到公共 IP 地址了。
第二,通过 kubectl 获取:
用你的浏览器访问: http://${INGRESS_HOST}/productpage ,然后你应该看到 Bookinfo app。多次刷新页面时,你应该看到 Book Reviews 部分有三个不同版本:第一个版本没有星星;第二个版本有黑星星;第三个版本有红星星。
使用 Istio ,您可以限制您的应用仅路由到应用的第一个版本。
具体操作为:导入 route-rule-all-v1.yaml( https://info.rancher.com/hubfs/route-rule-all-v1.yaml )到Rancher,几秒之后再刷新页面,你将不会在 reviews 上看到任何星星。
除此之外,你也可以仅将流量路由到一组用户。
当你导入 route-rule-reviews-test-v2.yaml 到 Rancher 之后,使用 jason 这个用户名(无需密码)登录 Bookinfo app,你应该只能看到版本 2 的 reviews(即有黑星星的版本)。但登出之后,你仅能看到版本 1 reviews 的 app。
至此,你已经体会了 Istio 的强大功能。当然,这并非全部,Istio 还有很多其他功能。创建此设置后,您可以完成 Istio 文档中的任务。