部署 Bookinfo

本指南将帮助您在环境中部署 Bookinfo 应用,并验证部署是否成功。

在开始之前,请确保:

  • 您拥有一个具有下载 App Market 权限的 Customer Portal 账号。如果没有账号,请联系技术支持。

目录

第 1 步:创建 Bookinfo 项目和命名空间

  1. 创建项目和命名空间
    Project Management 中,点击 Create Project,命名为 demo,并选择计划部署 Bookinfo 应用的集群。
    项目创建完成后,进入项目详情页。在左侧导航栏点击 Namespaces,然后点击 Create Namespace,命名为 demo-dev
    如果您已有适合部署 Bookinfo 的项目和命名空间,可以跳过此步骤,并在后续命令中将命名空间替换为您自己的命名空间。

    注意:创建项目需要平台管理员权限。如果您没有相应权限,请联系管理员协助。

第 2 步:下载 Bookinfo 资源

  1. 登录并下载
    登录 Customer Portal,在 App Market 中搜索 “Bookinfo”,并下载相关资源。

第 3 步:推送镜像

  1. 上传并解压包
    将下载的包上传到可以连接镜像仓库的服务器或 PC,解压包以获取以下文件:

    tar -xzvf <package>
    • bookinfo-images-arm64.tar:ARM 架构的 Bookinfo 镜像。
    • bookinfo-images-amd64.tar:x86 架构的 Bookinfo 镜像。
    • push-images.sh:镜像推送脚本,会自动更新 bookinfo.yaml 中的镜像引用。
    • bookinfo.yaml:Bookinfo 部署的 YAML 文件,包含 Service 和 Deployment 配置。
  2. 设置脚本权限
    赋予脚本执行权限:

    chmod +x push-images.sh
  3. 运行脚本推送镜像
    执行以下命令将镜像推送到目标仓库:

    # 示例 ./push-images.sh ./bookinfo-images-amd64.tar 192.168.143.0:32767 true admin 'Aa123!@#' bookinfo-demo
    ./push-images.sh <source-image> <target-registry> <requires-auth> [username] [password] [harbor-project]

    参数说明

    • source-image:镜像文件路径。
    • target-registry:镜像仓库地址和端口。注意:前缀不要包含 https://http://
    • requires-auth:是否需要认证。不需要填 false,需要填 true 并提供 usernamepassword
    • username:镜像仓库用户名。
    • password:镜像仓库密码。建议用单引号包裹,避免密码中包含特殊字符导致命令行解析错误。
    • harbor-project:如果使用 Harbor 镜像仓库,填写 Harbor 中的项目名称;如果使用 Docker Registry,此参数可留空。

第 4 步:部署 Bookinfo 应用

  1. 使用 kubectl 部署
    打开容器平台或平台管理页面,点击右下角的 kubectl 工具。

  2. 应用 YAML 文件
    使用 vi 或其他终端编辑器粘贴 bookinfo.yaml 内容,并执行以下命令:

    kubectl apply -f bookinfo.yaml -n <your-namespace>
  3. 验证部署成功

    • 检查所有 Pod 是否处于 Running 状态:

      kubectl get pods -n <your-namespace>
    • 验证应用是否可访问:

      kubectl exec "$(kubectl get pod -n <your-namespace> -l app=ratings -o jsonpath='{.items[0].metadata.name}')" \
          -n <your-namespace> -c ratings -- curl -s productpage:9080/productpage | \
          grep -o "<title>.*</title>"

      预期输出:

      <title>Simple Bookstore App</title>