65

创建云原生 Node.js 应用程序

 5 years ago
source link: http://www.ibm.com/developerworks/cn/cloud/library/create-nodejs-cloud-native-applications-with-yeoman-generators/index.html?ca=drs-&%3Butm_source=tuicool&%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

云原生技术设计为可在公共云、私有云和混合云环境中按需调整规模并增长。由于具备弹性且易于管理,这些技术在瞬息万变的技术环境中正变得越来越重要。

然而,构建云原生应用程序有时却因随之而来的种种难题不由得令人望而却步。确定要包含哪些技术以及如何对其进行配置是一项艰巨的任务,只有完成这项任务才能开始编码。根据 云原生计算基金会 的报告,实施和运行云原生应用程序的关键技术包括 Docker、Kubernetes、Helm 和 Prometheus。不仅如此,云原生应用程序通常是使用微服务架构构建的,这是一种分布式应用程序架构,包含多种独立运行的服务。

为简化云原生 Node.js 应用的构建过程,我们创建了一个开源 Yeoman 生成器来帮助您创建基于 Express 的全功能 Node.js 应用程序。此生成器对应于 CloudNativeJS.io 中所概述的模块,并且与这些模块直接保持一致。CloudNativeJS 是一个社区项目,可提供资产和工具来帮助您构建云原生 Node.js 应用程序,并将其部署至基于 Docker 和 Kubernetes 的云。

开源 Yeoman 生成器简化了 Node.js 开发过程

开源 Yeoman 生成器 generator-nodeserver 可创建基于 Express 的全功能 Node.js 应用程序项目,其中包括:

  1. Docker 文件,用于发布和开发容器。
  2. 具有替换值的 Helm 图表,用于部署至任何 Kubernetes 环境。
  3. 监视端点:
    1. Kubernetes 活性探针。
    2. Zipkin 用于端到端请求跟踪,以便发现瓶颈。
    3. Prometheus 用于直观显示各种应用组件中的性能问题。
    4. 带有火焰图的 App Metrics 用于深入探究各个独立的 Node.js 进程。

构建您的 Node.js 项目

既然您已了解了该生成器的作用,现在我们就使用它来进行设置。遵循以下步骤来安装和使用 generator-nodeserver,创建基于 Express 的 Node.js 服务器项目。

您可以使用标准工具(如,npm、Docker 和 Helm)构建/部署这些项目,也可以使用 IBM Cloud Developer Tools (IDT) 来简化这些任务。由 nodeserver 生成器创建的项目包含 npm 脚本,可帮助您安装和使用 IDT - 只需在 package.json 文件中查找 idt:* 脚本。

观看 Quick Start for IBM Cloud 上的视频,更清楚地了解 IDT 能够为您做些什么。

安装 Yeoman 生成器

  1. 使用以下命令安装 Yeoman:npm install -g yo
  2. 使用以下命令安装 nodeserver:npm install -g generator-nodeserver

运行 yo nodeserver

运行 "yo nodeserver" 时,生成器会提示您输入以下信息:

  • Project name:指定项目名称。默认名称即当前目录名称。这是必需值。
  • OpenApi document:指定 Swagger 文档的相对或绝对文件名,以指示项目生成代码。对于 Swagger 文档中定义的每个路由,将建立并注册路由存根。这是可选值。
  • Choose IBM Cloud services:使用 "Y" 或 "N" 来指定是否要在项目中建立 IBM Cloud 服务支持。 如果指定 "Y",那么可以从列表中选择一个或多个 IBM Cloud 服务。选项包括:alert、appid、cloudant、mongo、object storage、postgre、push、redis 和 watson conversation。对于所选的每一项服务,将生成配置和访问脚手架代码。IBM Cloud 服务支持为可选。

您还可运行以下命令使用默认选项来创建应用程序:yo nodeserver --headless

默认设置如下:

  • Project name :当前工作目录的名称
  • OpenApi Document :false
  • Choose IBM Cloud Services? :false

您可以在所有操作系统(Windows、macOS 和 Linux 等)上本地构建并运行生成的项目。

运行项目

执行以下步骤以在本地运行项目:

  1. 使用以下命令安装依赖项:npm install
  2. 使用以下命令启动服务器:npm start

执行以下步骤以在本地使用容器运行项目。我们使用 IBM Cloud Developer Tools,它可提供命令驱动式方法,用于创建、开发和部署项目,并在本地使用容器运行应用:

  1. 使用以下命令安装 IDT:npm run idt:install
  2. 使用以下命令构建 docker 镜像并安装依赖项:npm run idt:build
  3. 使用以下命令运行该应用程序:npm run idt:run

测试并调试应用

以下是在本地对应用程序进行测试和调试的几种简单方法:

  • 使用 npm run idt:test 命令运行单元测试
  • 以调试方式运行项目,以便使用 npm run idt:debug 命令连接调试客户端
  • 开发期间在本地运行项目,然后转至 localhost:3000/appmetrics-dash,收集应用程序性能指标
  • 转至 localhost:3000/health,检查应用程序运行状况
  • 通过热重载运行项目:idt shell run-dev,然后转至 localhost:3000

生成的项目包含用于 IBM Cloud 上以下可用环境的部署配置:

  • Kubernetes:项目包含 Helm 图表,用于部署到 Kubernetes。
  • Cloud Foundry:项目包含清单,用于部署到 Cloud Foundry。
  • Delivery Pipeline:项目包含工具链和管道定义,用于将 CI/CD 部署到 IBM Cloud。查阅Garage Method 以了解更多信息。

部署到 IBM Cloud

免费试用 IBM Cloud

利用IBM Cloud Lite 快速轻松地构建您的下一个应用程序。您的免费帐户从不过期,而且您会获得 256 MB 的 Cloud Foundry 运行时内存和包含 Kubernetes 集群的 2 GB 存储空间。了解所有细节并确定如何开始。如果您不熟悉 IBM Cloud,请查阅 developerWorks 上的 IBM Cloud Essentials 课程

要部署到 IBM Cloud,首先需要在 IBM Cloud 上创建一个免费帐户。

然后,执行以下步骤:

  1. 使用以下命令安装 IDT:npm run idt:install。
  2. 如果您的组织已对 IBM Cloud 启用单点登录,运行 bx login or bx login --sso 命令以登录 IBM Cloud。
  3. 部署到 Cloud Foundry。
  4. 通过将 "host: <unique host name here>" 添加到 manifest.yml 文件来添加唯一主机。
  5. 运行 bx target -o ORG -s SPACE 命令,为应用程序选择组织和空间。
  6. 然后使用以下命令部署到 IBM Cloud:npm run idt:deploy。
  7. 部署到 Kubernetes。
  8. 使用 IBM Cloud Container Service 创建 Kubernetes 集群
  9. 运行以下命令设置所在区域:bx cs region-set <region>。
  10. 运行以下命令设置集群的终端上下文:bx cs cluster-config <clustername>。
  11. 运行终端中显示的命令,以响应最后导出 kubeconfig 文件的步骤。
  12. 使用以下命令部署应用程序:npm run idt:deploy -- --target container。

后续步骤

查阅 IBM Cloud App Service 以了解如何生成更复杂的应用程序,如 MEAN Web 应用程序等。

generator-nodeserver 贡献内容。

结束语

Yeoman 生成器 nodeserver 在创建云原生项目方面表现出色,且配备所有基本要素。IDT 是一款理想的配套工具,可简化 Docker 化应用的构建、测试和部署过程。通过结合运用这些工具,您可以非常轻松地在任何 Kubernetes 环境(尤其是 IBM Cloud)中构建和部署云原生应用。

参考资源

本文翻译自: Create cloud native Node.js applications (2018-08-14)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK