You need to enable JavaScript to run this app.
导航

通过应用交付 OAM 应用功能部署 Bookinfo

最近更新时间2023.07.11 21:22:53

首次发布时间2023.07.11 12:09:00

本文以部署 Bookinfo 书评应用为例,为您介绍如何通过应用交付的 OAM 应用功能,简单快速地部署一个云原生应用。

场景介绍

在云计算时代,云原生应用越来越受企业欢迎。然而,上手云原生应用需要学习复杂的 Kubernetes YAML 知识,给传统企业带来很大挑战。另一方面,云原生应用通常由多个微服务组件构成,各组件需要正确结合在一起才能对外提供完整服务,又进一步增加了传统业务上云的门槛。持续交付的 OAM 应用功能,一方面提供了可视化组件编排能力,有效降低传统企业的原生上手难度;另一方面支持多组件多阶段部署,帮助企业轻松上手多组件复杂应用,可以很好地解决上述问题。

本文以在容器服务 VKE 部署 Bookinfo 书评应用为例,为您演示 OAM 类型应用的使用流程。
alt
该应用由以下 4 个微服务构成:

  • Productpage:该微服务会调用 Details 和 Reviews 两个微服务,用来生成页面。
  • Details:该微服务包含了书籍的信息。
  • Reviews:该微服务包含了书籍相关的评论,同时会调用 Ratings 微服务。并使用 1 到 5 个红色星形图标来显示评分信息。
  • Ratings:该微服务包含了由书籍评价组成的评级信息。

前提条件

  • 容器服务

    • 已开通火山引擎容器服务。

    • 已创建容器服务集群,具体操作请参见 创建集群

    • 如果希望通过公网访问该服务,请提前安装 ingress-nginx 组件。详细操作,请参见 ingress-nginx 组件

  • 持续交付

  • 已准备好应用各组件使用的 Doceker 镜像。

操作步骤

步骤一:创建 OAM 应用

  1. 登录 持续交付控制台

  2. 在概览页面的工作区区域,选择目标工作区名称,进入该工作区。

  3. 在当前工作区页面,选择左侧导航栏的 应用交付 > 应用管理,单击 创建应用

  4. 在创建应用页面,按要求填写应用的相关配置信息。

  5. 填写完成后,单击 确定,弹出 应用初始化配置 下一步指引框。

步骤二:预置环境

为当前应用预置一个环境。系统预置了 开发测试预发生产 共四个环境等级。每个环境等级可选择预置一个环境。建议至少预置一个环境,便于后续应用编排及配置管理使用。

  1. 根据界面引导,单击 初始化 2:环境管理。

  2. 在环境管理页面,勾选需要预置环境的环境等级。默认预置 开发测试生产 环境,本示例保持默认。

  3. 单击 确定,弹出 应用初始化配置 下一步指引框。单击 返回应用详情

步骤三:OAM 应用编排

可视化编排 OAM 应用的组件内容及各组件的部署顺序。Bookinfo 书评应用由 Productpage、Details、Reviews、Ratings 共 4 个组件组成。根据各组件间的依赖关系,需分 3 个部署阶段:部署阶段一并行部署 Details 和 Ratings,部署阶段二部署 Reviews,部署阶段三部署 Productpage。

  1. 在当前应用的应用编排页签,单击部署阶段一区域的 添加组件

  2. 在添加组件页面,编排部署阶段一的组件内容。填写完成后,单击 确定

    部署阶段一包含 Details 和 Ratings 两个组件。一次只能添加一个组件,需分两次添加。

    • 基本信息

      • 组件模板:本示例选择 预置Deployment服务模板。 这是系统预置的 Deployment 和 Service 服务模板,适用于需多次复用的任务,可满足大部分使用场景。支持 自定义组件模板,满足个性化需求。
      • 名称:本示例填写为 Details。
    • 配置管理
      提取所引用的组件模板中的变量,生成可视化表单,方便开发人员填写。 本组件模板需开发人员填写服务实例的副本数、服务所部署的命名空间、服务监听的端口号。每个参数都已填充默认值,开发人员可根据实际需要进行调整。本示例保持默认。

    • 环境变量管理
      按需设置容器中的 env 环境变量。您可将不同环境下的差异化配置设为环境变量,例如数据库的 IP 地址、各种账号、依赖的服务域名等。本示例不使用环境变量。

    • 插件管理
      支持按需添加多个 运维插件。本示例不使用插件。

  3. 重复上述步骤,编排部署阶段二、部署阶段三的组件。参数配置同上,仅需修改组件名称。

步骤四:预置环境初始化

为预置环境关联待部署的集群,完成环境初始化。本示例对预置的 开发环境 1 进行初始化。

  1. 在当前应用的环境页签,选择 开发环境 1 卡片,单击 环境初始化

  2. 在编辑环境页面,配置环境信息。

    • 部署资源:为开发环境 1 关联前提条件中准备的容器服务集群。

    • Namespace 覆盖:勾选,本示例名称填写为 demo-ns。后续部署当前环境时,将部署至 demo-ns 命名空间下。

  3. 其他配置保持默认,单击 确定

步骤五:部署 OAM 应用

将 Bookinfo 书评应用部署至开发环境 1。

  1. 在当前应用的环境页签,选择 开发环境 1 卡片,单击 立即部署

  2. 在立即部署页面,配置各组件使用的镜像地址及应用的部署策略。

    • 镜像:依次填写每个组件使用的镜像地址。镜像地址格式为:host/namespace/repo:tag

    • 部署策略:本示例选择原生部署,基于 Kubernetes 原生的滚动升级能力。

  3. 其他配置保持默认,单击 确定,应用开始部署。

    阶段内组件并行部署,不同阶段的组件按顺序串行部署。

  4. 一个阶段部署成功后,单击右上角 继续部署,部署下一个阶段的组件。
    所有阶段的组件都部署成功后,部署完成。

结果验证

本地调试

  1. 将集群公网 kubeconfig 保存至本地默认路径:~/.kube/config

  2. 打开命令终端,将 Bookinfo 服务端口映射至本地端口 8090。

    kubectl  port-forward -n demo-ns svc/productpage 8090:80
    
  3. 在浏览器中输入http://localhost:8090/productpage,可访问到以下页面。

业务验证

  1. 配置 Nginx Ingress 对外暴露 Bookinfo 服务。具体操作可参见 配置 Nginx Ingress

  2. 使用具有公网访问权限的 PC,在浏览器中输入 nginx 的 VIP + 路由规则/productpage,可访问到以下页面。