istio(1) - 安装测试

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.3.1 登录服务器shell,执行以下语句开始下载 istio;
curl -L https://git.io/getLatestIstio | ISTIO_VERSION=1.1.9 sh -
2.4 环境
2.4.1 下载完后切换到istio目录下
cd istio-1.1.9
2.4.2 将istioctl 客户端加入环境变量
export PATH=$PWD/bin:$PATH
2.4.3 添加Istio发行版存储库 , 使用Istio发行版Helm图表仓库 , 如下
helm repo add istio.io https://storage.googleapis.com/istio-release/releases/1.1.9/charts/

3 安装

3.1 为istio-system组件创建一个名称空间

kubectl create namespace istio-system

3.2 使用安装所有Istio 自定义资源定义 (CRD)kubectl apply,然后等待几秒钟以在Kubernetes API服务器中提交CRD

helm template install/kubernetes/helm/istio-init --name istio-init --namespace istio-system | kubectl apply -f -

3.3 选择一个配置文件 ,然后渲染并应用与您选择的文件相对应的Istio核心组件。建议将默认配置文件用于生产部署

helm template install/kubernetes/helm/istio --name istio --namespace istio-system | kubectl apply -f -

4 验证安装

4.1 查看service

kubectl get svc -n istio-system

4.2 查看pod

kubectl get pods -n istio-system

5 bookinfo demo部署

要确保当前目录位于istio软件包根目录下;

5.1 使用以下kubectl命令部署应用程序,并使用 istioctl 将sidecar注入进去;

kubectl apply -f <(istioctl kube-inject -f samples/bookinfo/platform/kube/bookinfo.yaml)

5.2 确认所有服务和pod均已正确定义并正在运行

kubectl get services

kubectl get pods

5.3 确认Bookinfo应用程序正在运行,请通过curl某个Pod中的命令向其发送请求,例如ratings

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 定义应用程序的入口网关
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
5.4.2 确认网关已创建
kubectl get gateway

5.5 查看入口IP和端口

5.5.1 查看入口端口
kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}'
5.5.2 查看入口IP
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服务创建默认目标规则

kubectl apply -f samples/bookinfo/networking/destination-rule-all.yaml
使用 kubectl get destinationrules -o yaml 命令显示目标规则;

6.2 多访问几次 5.6.2 中的地址,会发现有几率访问到不同版本上去

评级没有星星
评级有星星

6.3 运行以下命令以应用虚拟服务,将流量定向发送到一个版本(下发规则)

kubectl apply -f samples/bookinfo/networking/virtual-service-all-v1.yaml
使用以下命令查看定义的路由
kubectl get virtualservices -o yaml
在浏览器中打开Bookinfo网站,无论刷新多少次,页面的评论部分均不会显示星级。这是因为我们将Istio配置为将评论服务的所有流量路由到该版本 reviews:v1, 而该服务的该版本无法访问星级服务。

6.4 运行以下命令以启用基于用户的路由

kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-test-v2.yaml
使用以下命令查看定义的路由
kubectl get virtualservices -o yaml
在/productpageBookinfo应用的上,以用户身份登录jason,星星又出现了.

已成功配置Istio以根据用户身份路由流量!

原文地址:https://cloud.tencent.com/developer/article/2024225

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340