Bookinfo

这个指南展示一个简单的例子,我们通过编排四个分离的微服务来验证Istio服务网格的多种功能。

Overview

在这个指南中我们展示了一个简单的应用,它展示一本书的信息,类似于在线书店的单个目录条目。页面展示书的描述,细节(ISBN,页数等),还有一些书评。
Bookinfo应用被分为四个分离的微服务:

  • productpage。微服务productpage调用detailsreviews 填充页面。
  • details。 微服务details 包含书的信息。
  • reviews。 微服务reviews 包含书评,同时调用ratings
  • ratings。 微服务ratings 包含带有书评的书籍排名信息。

reviews 有三个版本:

  • Version v1 不调用ratings
  • Version v2 调用ratings,展示1到5颗黑星
  • Version v3 调用ratings,展示1到5颗红星

应用的端到端架构如下
这里写图片描述

这个应用包含多种语言,也就是说,微服务是用不同语言写的。值得注意的是,这些服务与istio没有任何依赖关系,但是提供了一个有趣的服务网格示例,特别是reviews服务有多个服务版本,以及多种实现语言。

Before you begin

如果你还没装Istio,对照你平台的 installation guide指令去安装。

Deploying the application

用Istio运行例子不需对应用本身做任何改变。相反,我们只需在Istio允许的环境配置和运行服务,这个环境是Envoy sidecars注入到每个服务提供的。所需的命令和配置取决于运行时环境,但是所有情况下,生成的部署如下:
这里写图片描述
所有微服务都被Envoy sidecar包装,它拦截服务的出入调用,提供外部控制所需的钩子,通过Istio的控制平面为整个应用程序提供路由,遥测收集和策略执行。

对应你的Istio运行环境,按照下面介绍启动应用。

Running on Kubernetes

注意: 如果你使用GKE,请确保你的集群有至少4个标准GKE节点。如果你使用Minikube,确保你有至少4GB RAM。

  • 进入Istio安装根目录
  • 启动应用容器

如果你使用 manual sidecar injection,使用如下命令:

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

如果你的集群能够 automatic sidecar injection,只需使用kubectl

kubectl apply -f samples/bookinfo/kube/bookinfo.yaml

命令 istioctl kube-inject 在手动创建deployments 前修改 bookinfo.yaml 文件。参见 here.
上述任一命令部署所有四个微服务,并新建网关ingress资源,如上图所示。reviews 的三个版本 v1, v2, and v3, 都启动了。

注意: 在真实的deployment中,应该随着版本时间的推移部署新版本的微服务,而不是同时部署所有版本。

  • 确认所哦有服务和pods正确运行:
kubectl get services

结果如下:

NAME                       CLUSTER-IP   EXTERNAL-IP   PORT(S)              AGE
details                    10.0.0.31    <none>        9080/TCP             6m
kubernetes                 10.0.0.1     <none>        443/TCP              7d
productpage                10.0.0.120   <none>        9080/TCP             6m
ratings                    10.0.0.15    <none>        9080/TCP             6m
reviews                    10.0.0.170   <none>        9080/TCP             6m

以及

kubectl get pods

结果:

NAME                                        READY     STATUS    RESTARTS   AGE
details-v1-1520924117-48z17                 2/2       Running   0          6m
productpage-v1-560495357-jk1lz              2/2       Running   0          6m
ratings-v1-734492171-rnr5l                  2/2       Running   0          6m
reviews-v1-874083890-f0qf0                  2/2       Running   0          6m
reviews-v2-1343845940-b34q5                 2/2       Running   0          6m
reviews-v3-1813607990-8ch52                 2/2       Running   0          6m

Determining the ingress IP and Port

1.如果你的k8s集群支持外部负载均衡,ingress的IP地址可以用下面命令获得:

kubectl get ingress -o wide

结果类似:

NAME      HOSTS     ADDRESS                 PORTS     AGE
gateway   *         130.211.10.121          80        1d

ingress服务的地址

export GATEWAY_URL=130.211.10.121:80

2.Minikube: 在Minikube中不支持外部负载均衡。你可以使用ingress service的host IP,以及NodePort去访问ingress。

export GATEWAY_URL=$(kubectl get po -l istio=ingress -n istio-system -o 'jsonpath={.items[0].status.hostIP}'):$(kubectl get svc istio-ingress -n istio-system -o 'jsonpath={.spec.ports[0].nodePort}')

What’s next

为了确认Bookinfo正在运行,使用命令curl

curl -o /dev/null -s -w "%{http_code}\n" http://${GATEWAY_URL}/productpage

返回

200

你也可以在浏览器上访问Bookinfo的网页 http://$GATEWAY_URL/productpage 。如果你刷新几次页面,你就会在productpage看到reviews的几个不同版本,以一种循环的方式出现(red stars, black stars, no stars),而我们还没有使用Istio去控制版本路由。

Clean up

当你尝试完成Bookinfo示例,你可以使用如下步骤卸载和清理它。

Uninstall from kubernetes environment

1.删除路由规则并终止应用pods

samples/bookinfo/kube/cleanup.sh

2.确认关闭

istioctl get routerules   #-- there should be no more routing rules
kubectl get pods          #-- the Bookinfo pods should be deleted
Uninstall from Docker environment

1.删除路由规则及应用容器
2.确认清理

istioctl get routerules   #-- there should be no more routing rules
docker ps -a              #-- the Bookinfo containers should be deleted
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个异常是因为找不到类型别名 'BookInfo'。通常,这个错误可能是由以下几个原因引起的: 1. 类型别名配置错误:请检查你的XML文件中是否正确配置了类型别名。确认类型别名的完整路径和名称是否正确,包括大小写。 2. 类型别名类不存在:确保类型别名所指向的类存在于你的项目中。如果该类位于外部依赖项中,请确保依赖项已正确添加到项目中。 3. 类路径配置错误:如果你使用了自定义的类型别名解析器,确保它被正确配置并且可以找到所需的类。 请仔细检查你的配置文件,并确保类型别名的配置是正确的。如果问题仍然存在,请检查以上提到的可能原因,并进行相应的修复。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Caused by: java.lang.ClassNotFoundException: Cannot find class:异常](https://blog.csdn.net/reee112/article/details/84590915)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [解决Unable to access 'https://gitee.com/自己的项目/': Could not resolve host: gitee.com问题](https://download.csdn.net/download/weixin_38742520/12923630)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值