部署并访问 Bookinfo

作为开源的服务网格解决方案,Istio 为微服务提供了强大的流量管理功能。KubeSphere 服务网格扩展组件集成了 Istio,为用户提供一致的微服务管理体验。

本节演示了如何部署由四个独立的微服务组成的示例应用程序 Bookinfo,以及如何通过 NodePort 访问该应用。

Bookinfo 简介

Bookinfo 应用会显示一本书的信息页面,类似于在线书店的一个品类。 此页面上会显示一本书的描述、书籍的细节(ISBN、页数等)以及这本书相关的几条评论。

Bookinfo 应用由以下四个独立的微服务组成。

  • productpage 微服务会调用 detailsreviews 用来生成页面。

  • details 微服务中包含了书籍的信息。

  • reviews 微服务中包含了书籍相关的评论,它还会调用 ratings 微服务。

  • ratings 微服务中包含了由书籍评价组成的评级信息。

reviews 微服务有 3 个版本:

  • v1 版本不会调用 ratings 服务。

  • v2 版本会调用 ratings 服务,并使用 1 到 5 个黑色星形图标来显示评分信息。

  • v3 版本会调用 ratings 服务,并使用 1 到 5 个红色星形图标来显示评分信息。

下图展示了这个应用的端到端架构。有关更多详细信息,请参见 Bookinfo 应用

bookinfo

前提条件

  • 准备一个项目(例如 demo-project)和一个已邀请到该项目的用户(例如 project-regular)。该用户在项目中应具有 operator 角色。有关更多信息,请参阅控制用户权限

  • KubeSphere 平台需要安装并启用 KubeSphere 服务网格KubeSphere 网关扩展组件。

  • 启用项目网关,并为项目网关启用链路追踪功能。有关更多信息,请参阅启用项目网关

    说明

    如果启用链路追踪后无法访问路由(Ingress),请在路由中添加注解 nginx.ingress.kubernetes.io/service-upstream: true

操作步骤

1. 部署 Bookinfo

  1. 使用 project-regular 用户登录 KubeSphere Web 控制台,点击企业空间管理并进入项目所在的企业空间,在项目列表中点击 demo-project

  2. 在左侧导航栏,选择服务网格 > 自制应用,点击右侧的部署示例应用

  3. 在出现的对话框中点击下一步服务设置页签已经预先填好四个部署(productpage、reviews、details、ratings)的必填字段,您无需修改设置,只需在路由设置页签中点击创建

2. 验证 Bookinfo 是否部署成功

在左侧导航栏,选择应用负载 >工作负载,检查部署页签中这四个部署的运行状态,若状态都为运行中,则表明 Bookinfo 应用部署成功。

3. 通过 NodePort 访问 Bookinfo

  1. 在左侧导航栏,选择应用负载 > 服务

  2. 点击 productpage 右侧的more,选择编辑外部访问

  3. 访问模式中选择 NodePort,点击确定

  4. 点击 productpage 进入详情页,在资源状态页签下的端口区域,您可以查看暴露的节点端口。

  5. 在浏览器中输入 <节点 IP>:<节点端口>,即可从集群的外部访问 Bookinfo,如下图所示。

    bookinfo display

    说明

    取决于您的 Kubernetes 集群的部署环境,您可能需要在安全组中放行端口并配置相关的端口转发规则。

  6. 点击页面左下角的 Normal user,查看 Bookinfo 的完整页面。

    左侧 Book Details 是由 details 微服务提供的内容,右侧 Book Reviews 是由 reviews 微服务提供的内容,仅出现 Reviewer1 和 Reviewer2,并没有任何评级内容(ratings),因为 reviews 微服务的 v1 版本不会调用 ratings 服务。

    若想调用 ratings 服务并探索更多流量管理相关的功能,您可以为该应用执行金丝雀发布

    ratings page

    说明

    KubeSphere 基于 Istio 提供了三种灰度策略,包括蓝绿部署、金丝雀发布和流量镜像。有关更多信息,请参阅灰度发布

通过邮件接收 KubeSphere 最新的技术博客与产品更新的通知


感谢您的反馈。如果您有关于如何使用 KubeSphere 的具体问题,请在 Slack 上提问。如果您想报告问题或提出改进建议,请在 GitHub 存储库中打开问题。