您正在查看 Apigee Edge 文档。
前往 Apigee X 文档。信息
取消部署 Hosted Targets 代理
取消部署包含 Hosted Targets 应用的 Edge 代理时,关联的 Hosted Targets 应用会被取消部署,但底层应用映像不会被删除。如果您重新部署代理,系统会重新部署托管的目标平台应用。
删除 Hosted Targets 代理
删除 Hosted Targets 代理后,底层运行时实例将在一段时间内停止运行。不过,应用代码会保留下来。
访问日志文件
日志文件对于调试和问题排查非常有用。您可以查看 Hosted Targets 部署的两种类型的日志文件:
- 构建日志 - 显示与部署和构建 Hosted Targets 应用相关的输出。
- 运行时日志 - 显示与正在运行的托管目标应用相关的输出。运行时日志的范围限定为环境,并显示当前部署的代理修订版的日志信息。
从 Edge 界面访问日志
- 前往:apigee.com/edge
- 输入您的登录凭据,然后点击 Sign In(登录)。
- 在侧边导航菜单中,依次选择开发 > API 代理。
- 选择要查看日志的代理。
- 点击开发标签页。
- 如需查看构建日志,请点击构建日志。
- 如需查看运行时日志,请点击运行时日志。
使用 API 访问日志
您还可以使用 Edge API 检索 Hosted Targets 日志。如需了解详情,请参阅获取缓存的 Node.js 日志。
使用私有 npm 代码库
本部分介绍了在开发环境中使用私有 NPM 代码库的情况下,如何将 Node.js 代理部署到托管的目标。
关于使用私有代码库的注意事项
将 Node.js 应用部署到 Edge 时,项目的所有依赖项都会在部署过程中自动导入。从本质上讲,Hosted Targets 会在部署您的代码时对其运行 npm install
。不过,如果您在开发环境中使用专用 NPM 代码库,则无法在 Cloud 中解析专用依赖项。在这种情况下,解决方案是使用部署实用程序 apigeetool 时使用 --bundled-dependencies
选项。另请参阅将 Node.js 从系统部署到 Edge。
在 apigeetool
上使用 --bundled-dependencies
标志时,您的 Node.js 应用将上传到 Hosted Targets,并且 package.json
的 bundledDependencies 数组中列出的任何本地/私有文件都会与 bundle 一起压缩和上传。
请注意,如果您在内部镜像公共 NPM 代码库,则当部署包包含指向您的私有镜像的 .npmrc
或 package-lock.json
文件时,您的部署将失败,不过这种情况并不常见。在这种情况下,请务必从要部署的代理软件包中省略 .npmrc
或 package-lock.json
。
使用私有 NPM 代码库进行部署
如需使用私有 NPM 代码库提供的模块,请按以下步骤操作:
- 登录 npm:
npm login
- 获取 npm 身份验证令牌:
- 找到 .npmrc(应位于 ~/.npmrc 中)。
- 在您的 .npmrc 中,记下如下所示的行末尾的令牌:
//registry.npmjs.org/:_authToken=****
- 或者,使用
npm token <list | create | revoke>
命令列出、创建或撤消身份验证令牌。如需了解详情,请参阅 npm-token 文档。 - 访问键值对映射配置页面,如下所述。
Edge
如需使用 Edge 界面访问“键值映射”配置页面,请执行以下操作:
- 登录 apigee.com/edge。
- 在左侧导航栏中,依次选择管理 > 环境 > 键值对映射。
传统边缘(私有云)
如需使用 Classic Edge 界面访问“键值映射”配置页面,请执行以下操作:
- 登录
http://ms-ip:9000
,其中 ms-ip 是管理服务器节点的 IP 地址或 DNS 名称。 - 在顶部导航栏中,依次选择 API > 环境配置 > 键值对映射。
- 点击 + 键值对映射。
- 在“新建键值对映射”对话框中,输入名称,然后选择已加密。
- 点击添加。
- 将您之前找到或创建的身份验证令牌添加为您刚刚创建的每个 KVM 中的新条目。
- 在 app.yaml 文件中,添加一个条目来引用与 npm 身份验证令牌关联的 KVM 和密钥。代码应如下所示:
- 顶级 name 属性对应于将创建的环境变量的名称。
- valueRef 下的 name 对应于您之前创建的 KVM。
- key 属性对应于您添加到 KVM 的 npm 令牌所对应的键。
- 在 package.json 所在的同一目录中创建一个 .npmrc 文件。该文件应如下所示:
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
或者,如果您不使用registry.npmjs.org
,则可以通过添加类似以下内容的行在 .npmrc 文件中设置作用域@myscope:registry=https://mycustomregistry.example.org
另请参阅 npmrc 文档。 - 上传或更新 Node.js 代理(包含 .npmrc 文件和 app.yaml 文件)。
- 确保新的或更新后的代理部署并与所需的私有代码库模块配合使用。
- 如果代理未部署,请检查构建日志,确认代理在安装专用 npm 模块时是否失败。如果是:
- 在“开发”标签页下,确保存在 .npmrc。
- 确保您的令牌有效(尝试在本地安装模块,并在 kvm 中提供令牌)。
- 如果您使用的是自定义镜重,请确保已设置该镜重。
env: - name: NPM_TOKEN valueRef: name: npm_store key: private_token
其中:
为捆绑的依赖项指定 NPM 版本
默认情况下,NPM v4 用于在托管的目标环境中安装捆绑的依赖项。
但是,如果要使用其他 NPM 版本,可以在 NPM_VERSION
环境变量中进行指定。您可以在应用的清单文件中设置此变量。如需了解详情,请参阅清单文件元素。
如果您使用捆绑式依赖项,并且未指定 NPM_VERSION
,则托管目标将默认使用 NPM v4。如果您不使用捆绑的依赖项,则系统会使用您指定的 Node.js 运行时中包含的 NPM 版本。
捆绑的依赖项示例
如需查看演示包含托管目标的捆绑依赖项功能的示例,请参阅如何使用自定义模块创建包含托管函数的 Node.js 应用。添加健康检查端点
您可以选择为 Node.js 应用实现健康检查端点。当您的 Node.js 应用开始检查该应用是否已在容器中启动并运行时,Apigee 会使用此端点。
默认情况下,Apigee 预期的端点为 /health
。您可以通过在名为 HOSTED_TARGET_HEALTH_CHECK_PATH
的环境变量中指定端点来更改默认端点。您可以在应用的清单文件中设置此变量。如需了解详情,请参阅清单文件元素。
无需实现健康检查端点。但是,如果您实现了健康检查端点,请注意以下事项:
- 如果您的应用在 Apigee 到达端点时退出,该应用将无法按预期启动。
- 即使端点返回 404 Not Found HTTP 状态也没关系。
/health
或HOSTED_TARGET_HEALTH_CHECK_PATH
仅用于检查应用是否正在运行。系统会忽略实际响应。
更改 NPM 缓存位置
较新版本的 Node.js 使用的是将 /root/.npm
用作 NPM 缓存的 NPM 版本。
此位置给托管目标带来了问题,因为该目录位置是只读的,因为托管目标运行时使用只有 /tmp
可写入的 tmpfs 文件系统。如需解决此问题,您可以将应用的 app.yaml
文件(清单文件)中的 npm_config_cache
环境变量设置为 /tmp
中的一个目录。例如:
runtime: node application: my-express-app env: - name: npm_config_cache value: /tmp/.npm - name: NODE_ENV value: production - name: LOG_LEVEL value: 3
在不使用 NPM 的情况下运行应用
默认情况下,托管目标使用 npm start
运行托管目标应用。但在上一项任务中,我们讨论了使用 NPM 时遇到的问题,因为较新版本将尝试为 NPM 缓存使用 /root/.npm
,该操作不可写入,并且会导致托管目标无法启动。虽然上一个任务可以解决此问题,但另一种方法是在不使用 NPM 的情况下运行应用。为此,您可以在应用的 app.yaml
文件(清单文件)中使用 command
和 args
值,直接通过 node index.js
运行托管目标。例如:
runtime: node application: my-express-app command: node args: - index.js env: - name: NODE_ENV value: production - name: LOG_LEVEL value: 3当然,您可以使用任何您认为合适的命令,
node index.js
只是一个示例。