本页面介绍开始开发 Knative serving 服务时需要了解的一些事项。
代码要求
开发服务时,您必须满足以下要求:
- 该服务必须侦听请求。您可以配置发送请求的端口。在 Knative serving 容器实例内部,
PORT
环境变量的值始终反映请求发送到的端口。您的代码应检查是否存在此PORT
环境变量,如果存在,则应侦听该变量以最大限度地提高可移植性。 - 该服务必须是无状态服务,不能依赖永久性本地状态。
- 服务不得在请求处理范围之外执行后台活动。
如需详细了解这些限制,请参阅容器运行时合同。
编程语言支持
Knative serving 允许您使用自己选择的编程语言来编写代码。
使用 Web 服务器
您可以使用 Web 服务器侦听所需的端口,以及处理和路由传入请求。例如,Node.js 开发者可以使用 Express.js,Python 开发者可以使用 Flask,Ruby 开发者可以使用 Sinatra,等等。
将代码容器化
如需部署到 Knative serving,您需要提供容器映像。容器映像是一种封装格式,其中包含您的代码、代码软件包、所需的全部二进制依赖项、要使用的操作系统以及运行服务所需的其他任何内容。
通常,您可以使用名为 Dockerfile 的文件来声明如何构建容器映像。
Dockerfile 通常从基础映像(例如 FROM golang:1.11
)开始。您可以在 Docker Hub 上找到由操作系统和语言作者维护的基础映像。Cloud Build 会先检查缓存的映像,然后再从 Docker Hub 中拉取该映像。如果您使用第三方构建工具,则可以将 Docker 守护进程配置为检查同一缓存中的映像。您还可以在 Google Cloud Marketplace 中找到由 Google 管理的基础映像。
如果您要引入自己的二进制文件,请确保它们是针对 Linux ABI x86_64 编译的。
如需进一步了解 Dockerfile,请参阅以下资源:
- 通过 Dockerfile 参考了解 Dockerfile 语法。
- 查看编写 Dockerfile 的最佳实践中的提示,了解 Dockerfile 如何整合在一起。
后续步骤
- 准备好服务代码和 Dockerfile 后,您应该构建容器映像,然后继续迭代执行本地测试。
- 如果要迁移现有 Web 应用,请参阅将服务迁移到 Knative serving。
- 如需了解在 Knative serving 中设计、实现、测试和部署服务的最佳实践,请参阅开发提示。