您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档。 信息
取消部署 Hosted Goal 代理
当您取消部署包含 Hosted Target 应用的 Edge 代理时,关联的 Hosted Target 应用会被取消部署,但底层应用映像不会被删除。如果您重新部署代理,则系统会重新部署 Hosted Target 应用。
删除 Hosted Target 代理
删除 Hosted Target 代理后,底层运行时实例会在一段时间内停止运行。但是,应用代码会保留下来。
访问日志文件
日志文件对于调试和问题排查非常有用。您可以查看托管目标部署的两种类型的日志文件:
- 构建日志 - 显示与部署和构建 Hosted Target 应用相关的输出。
- 运行时日志 - 显示与正在运行的 Hosted Target 应用相关的输出。运行时日志的范围限定为环境,并显示当前部署的代理修订版本的日志信息。
从 Edge 界面访问日志
- 前往:apigee.com/edge
- 输入您的登录凭据,然后点击 Sign In(登录)。
- 在侧边导航菜单中,依次选择 Develop > API Proxies。
- 选择要查看其日志的代理。
- 点击 Develop 标签页。
- 如需查看构建日志,请点击构建日志。
- 如需查看运行时日志,请点击运行时日志。
通过 API 访问日志
您还可以使用 Edge API 来检索 Hosted Target 日志。如需了解详情,请参阅获取缓存的 Node.js 日志。
使用专用 npm 代码库
本部分介绍如果您在开发环境中使用专用 NPM 代码库,如何将 Node.js 代理部署到 Hosted 目标。
关于使用私有代码库的须知事项
将 Node.js 应用部署到 Edge 时,项目的所有依赖项都会在部署过程中自动导入。实质上,Hosted 目标在部署后会针对您的代码运行 npm install
。但是,如果您在开发环境中使用专用 NPM 代码库,则无法在 Cloud 中解析专用依赖项。在这种情况下,解决方案是在使用部署实用程序 apigeetool 时使用 --bundled-dependencies
选项。另请参阅将 Node.js 从系统部署到 Edge。
对 apigeetool
使用 --bundled-dependencies
标志时,您的 Node.js 应用将上传到 Hosted 目标,并且 package.json
的 bundledDependencies 数组中列出的任何本地/私有文件都会压缩并随软件包一起上传。
请注意,如果您在内部镜像公共 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。
- 在左侧导航栏中,依次选择管理 > 环境 > 键值对映射。
传统 Edge (Private Cloud)
如需使用传统版 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 文档。 - 使用包含的 .npmrc 文件和 app.yaml 文件上传或更新 Node.js 代理。
- 确保新的或更新的代理部署并与所需的私有代码库模块配合使用。
- 如果代理未部署,请检查构建日志,查看安装专用 npm 模块是否失败。如果是:
- 在“Development”标签页下,确保 .npmrc 已存在。
- 确保您的令牌有效(尝试使用 kvm 中存在的令牌在本地安装模块)。
- 如果您使用的是自定义范围,请确保已对其进行设置。
env: - name: NPM_TOKEN valueRef: name: npm_store key: private_token
其中:
为捆绑的依赖项指定 NPM 版本
默认情况下,NPM v4 用于在 Hosted Target 环境中安装捆绑的依赖项。但是,如果要使用其他 NPM 版本,可以在 NPM_VERSION
环境变量中进行指定。您可以在应用的清单文件中设置此变量。如需了解详情,请参阅清单文件元素。
如果您使用捆绑的依赖项,并且未指定 NPM_VERSION
,Hosted Target 会默认使用 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 使用的 NPM 版本使用 /root/.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 的情况下运行应用
默认情况下,Hosted Target 使用 npm start
来运行 Hosted Target 应用。但在上一个任务中,我们讨论了使用 NPM 时存在的问题,因为较新版本会尝试将 /root/.npm
用于 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
只是一个示例。