前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >istio(1) - 安装测试

istio(1) - 安装测试

作者头像
惊羽-布壳儿
发布2022-06-15 21:47:17
7850
发布2022-06-15 21:47:17
举报
文章被收录于专栏:惊羽-布壳儿

1. istio 版本选择

- 最新版 istio,参考 istio官网;
- 历史版 istio,参考 istio 历史版本归档档案;
- kubernetes 与 istio版本适配
最新版 (1.4.3), 由下图可知, 其支持kubernetes 1.13, 1.14, 1.15 三个版本.

历史版 (1.1.9), 由下图可知, 其支持kubernetes 1.11, 1.12, 1.13 三个版本.

由于本地kubernetes平台是1.11版本的,故本文以 istio 历史版本归档档案 下v1.1为例.如果你的k8s不是1.11, 请在 istio 历史版本归档档案 & istio官网 站点中,找到合适的istio版本.

2. 准备工作

2.1 安装方式
点击 GET STARTED ,点击左侧菜单:install 展开,选择 "Customizable Install Helm"

2.2 安装版本高于2.10 的Helm客户端. (如已经安装,则忽略)
代码语言:javascript
复制
略;
2.3 下载istio软件包
2.3.1 登录服务器shell,执行以下语句开始下载 istio;
代码语言:javascript
复制
curl -L https://git.io/getLatestIstio | ISTIO_VERSION=1.1.9 sh -
2.4 环境
2.4.1 下载完后切换到istio目录下
代码语言:javascript
复制
cd istio-1.1.9
2.4.2 将istioctl 客户端加入环境变量
代码语言:javascript
复制
export PATH=$PWD/bin:$PATH
2.4.3 添加Istio发行版存储库 , 使用Istio发行版Helm图表仓库 , 如下
代码语言:javascript
复制
helm repo add istio.io https://storage.googleapis.com/istio-release/releases/1.1.9/charts/

3 安装

3.1 为istio-system组件创建一个名称空间
代码语言:javascript
复制
kubectl create namespace istio-system
3.2 使用安装所有Istio 自定义资源定义 (CRD)kubectl apply,然后等待几秒钟以在Kubernetes API服务器中提交CRD
代码语言:javascript
复制
helm template install/kubernetes/helm/istio-init --name istio-init --namespace istio-system | kubectl apply -f -
3.3 选择一个配置文件 ,然后渲染并应用与您选择的文件相对应的Istio核心组件。建议将默认配置文件用于生产部署
代码语言:javascript
复制
helm template install/kubernetes/helm/istio --name istio --namespace istio-system | kubectl apply -f -

4 验证安装

4.1 查看service
代码语言:javascript
复制
kubectl get svc -n istio-system

4.2 查看pod
代码语言:javascript
复制
kubectl get pods -n istio-system

5 bookinfo demo部署

要确保当前目录位于istio软件包根目录下;
5.1 使用以下kubectl命令部署应用程序,并使用 istioctl 将sidecar注入进去;
代码语言:javascript
复制
kubectl apply -f <(istioctl kube-inject -f samples/bookinfo/platform/kube/bookinfo.yaml)
5.2 确认所有服务和pod均已正确定义并正在运行
代码语言:javascript
复制
kubectl get services

代码语言:javascript
复制
kubectl get pods

5.3 确认Bookinfo应用程序正在运行,请通过curl某个Pod中的命令向其发送请求,例如ratings
代码语言:javascript
复制
kubectl exec -it $(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}') -c ratings -- curl productpage:9080/productpage | grep -o "<title>.*</title>"
5.4 确定入口IP和端口
5.4.1 定义应用程序的入口网关
代码语言:javascript
复制
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
5.4.2 确认网关已创建
代码语言:javascript
复制
kubectl get gateway

5.5 查看入口IP和端口
5.5.1 查看入口端口
代码语言:javascript
复制
kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}'
5.5.2 查看入口IP
代码语言:javascript
复制
kubectl get po -l istio=ingressgateway -n istio-system -o jsonpath='{.items[0].status.hostIP}'
5.6 使用浏览器访问入口服务
按照 ip : port / service ,在浏览器进行访问(ip 为 5.5.2显示的 ip地址 , port 为5.5.1显示的端口)
例如 : http://192.168.254.147:31380/productpage

6 bookinfo 流量管理

6.1 运行以下命令为Bookinfo服务创建默认目标规则
代码语言:javascript
复制
kubectl apply -f samples/bookinfo/networking/destination-rule-all.yaml
使用 kubectl get destinationrules -o yaml 命令显示目标规则;
6.2 多访问几次 5.6.2 中的地址,会发现有几率访问到不同版本上去
评级没有星星
评级有星星
6.3 运行以下命令以应用虚拟服务,将流量定向发送到一个版本(下发规则)
代码语言:javascript
复制
kubectl apply -f samples/bookinfo/networking/virtual-service-all-v1.yaml
使用以下命令查看定义的路由
代码语言:javascript
复制
kubectl get virtualservices -o yaml
在浏览器中打开Bookinfo网站,无论刷新多少次,页面的评论部分均不会显示星级。这是因为我们将Istio配置为将评论服务的所有流量路由到该版本 reviews:v1, 而该服务的该版本无法访问星级服务。
6.4 运行以下命令以启用基于用户的路由
代码语言:javascript
复制
kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-test-v2.yaml
使用以下命令查看定义的路由
代码语言:javascript
复制
kubectl get virtualservices -o yaml
在/productpageBookinfo应用的上,以用户身份登录jason,星星又出现了.

已成功配置Istio以根据用户身份路由流量!
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. istio 版本选择
    • - 最新版 istio,参考 istio官网;
      • - 历史版 istio,参考 istio 历史版本归档档案;
        • - kubernetes 与 istio版本适配
          • 最新版 (1.4.3), 由下图可知, 其支持kubernetes 1.13, 1.14, 1.15 三个版本.
          • 历史版 (1.1.9), 由下图可知, 其支持kubernetes 1.11, 1.12, 1.13 三个版本.
        • 由于本地kubernetes平台是1.11版本的,故本文以 istio 历史版本归档档案 下v1.1为例.如果你的k8s不是1.11, 请在 istio 历史版本归档档案 & istio官网 站点中,找到合适的istio版本.
        • 2. 准备工作
          • 2.1 安装方式
            • 点击 GET STARTED ,点击左侧菜单:install 展开,选择 "Customizable Install Helm"
          • 2.2 安装版本高于2.10 的Helm客户端. (如已经安装,则忽略)
            • 2.3 下载istio软件包
            • 2.4 环境
        • 3 安装
          • 3.1 为istio-system组件创建一个名称空间
            • 3.2 使用安装所有Istio 自定义资源定义 (CRD)kubectl apply,然后等待几秒钟以在Kubernetes API服务器中提交CRD
              • 3.3 选择一个配置文件 ,然后渲染并应用与您选择的文件相对应的Istio核心组件。建议将默认配置文件用于生产部署
              • 4 验证安装
                • 4.1 查看service
                  • 4.2 查看pod
                  • 5 bookinfo demo部署
                    • 5.1 使用以下kubectl命令部署应用程序,并使用 istioctl 将sidecar注入进去;
                      • 5.2 确认所有服务和pod均已正确定义并正在运行
                        • 5.3 确认Bookinfo应用程序正在运行,请通过curl某个Pod中的命令向其发送请求,例如ratings
                          • 5.4 确定入口IP和端口
                            • 5.4.1 定义应用程序的入口网关
                            • 5.4.2 确认网关已创建
                          • 5.5 查看入口IP和端口
                            • 5.5.1 查看入口端口
                            • 5.5.2 查看入口IP
                          • 5.6 使用浏览器访问入口服务
                          • 6 bookinfo 流量管理
                            • 6.1 运行以下命令为Bookinfo服务创建默认目标规则
                              • 6.2 多访问几次 5.6.2 中的地址,会发现有几率访问到不同版本上去
                                • 6.3 运行以下命令以应用虚拟服务,将流量定向发送到一个版本(下发规则)
                                  • 6.4 运行以下命令以启用基于用户的路由
                                  相关产品与服务
                                  容器服务
                                  腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                                  领券
                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档