要加快使用 Cloud Code for IntelliJ 进行本地开发,可以利用 同步和热重载、保存时自动部署,以及使用 Skaffold 模块 来单独开发应用的各个部分。
启用 Skaffold 文件同步和热重载
为了提高本地开发工作流的效率,并避免 重新构建、重新部署和重启 Pod,Skaffold 支持 将更改的文件复制到已部署的容器。也就是说,在对静态文件进行更改时 和源代码文件,您可以看到您的更改在几秒钟内生效,因此可以加速 反馈环。
对于静态文件(例如 HTML 和 CSS 文件),这种文件复制行为称为 文件同步。
对于源代码文件,此行为称为热重载,并且支持以下文件类型:
- Go: *.go
- Java: *.java,、*.kt、*.scala、*.groovy、*.clj
- NodeJS: *.js、*.mjs、*.coffee、*.litcoffee、*.json
配置热重载后,Skaffold 会检测受支持文件的更改,并同步这些文件 集群上正在运行的容器的更改对不支持热源的文件类型的更改 重新加载会触发映像重新构建和 Pod 重启。
当您将 Buildpacks 作为首选构建器使用时,系统会默认启用自动文件同步和热重载。对于 Docker 等其他构建器,您可以在 skaffold.yaml
文件中为自定义的工件指定 sync
部分。
您的同步设置可以是以下其中一项(按优先顺序排列):
auto
:Skaffold 会自动配置同步。(仅适用于 Jib 和 Buildpack artifacts.)这是 Buildpack 的默认值。infer
:每个更改后的文件的目标位置都是从构建器推断出来的。manual
:您必须在本地工作区中指定文件,并在 运行中的容器
以下示例 sync
部分在 skaffold.yaml
文件中指定了
manual
同步功能可将所有 /static-html
HTML 文件同步到 static
文件夹:
build: artifacts: - image: gcr.io/k8s-skaffold/node-example context: node sync: manual: - src: 'static-html/*.html' dest: static
如需详细了解文件同步和指定同步规则,请参阅有关文件同步的 Skaffold 指南。
在 Kubernetes 上进行开发时添加新功能
设置文件同步和热重载后,开始迭代周期并向项目添加更多功能。您的更改会部署到 Kubernetes 而无需停止和移除部署、手动构建 为映像添加标签或更新集群
标准迭代周期如下所示:
在项目中进行更改。例如,如果使用 Cloud Code Java 留言板应用,请将新端点添加到
FrontendController
类,如下所示:打开
src/main/java/cloudcode/guestbook/frontend
中的FrontendController.java
文件,然后添加以下代码:@RequestMapping("/greeting") @ResponseBody public String greeting(@RequestParam(value="name", defaultValue="World") String name) { return String.format("Hello from Kubernetes with IntelliJ, %s!", name); }
为新注释
RequestMapping
和ResponseBody
添加必要的导入项。
保存更改 (
Ctrl
/Cmd+S
) 或构建项目。您可以在控制台窗口中查看进度和部署日志。 在更改部署完毕后,确认更新。
如需结束持续开发会话,请点击停止图标。
Cloud Code 会删除用于开发会话的所有 Kubernetes 资源。
使用 Skaffold 配置开发微服务应用
在开发微服务应用时,独立处理各个部分可能很有用,这样可以简化调试和部署。
您可以通过拆分每个部分来独立开发和调试应用的各个部分
转换为 Skaffold 模块。例如,
Bank of Anthos 示例
是一个包含十个微服务的应用该示例的
skaffold.yaml
文件将这些服务划分成五个 Skaffold 模块,分别名为 setup
、db
、
frontend
、backend
和 loadgenerator
。
定义 Skaffold 模块和配置依赖项
要定义 Skaffold 模块和配置依赖项,请执行以下操作:
打开要在其中定义模块的项目。
打开
skaffold.yaml
文件。如果您的
skaffold.yaml
文件有多个配置,如需 配置 Skaffold 模块,请指定以下行:metadata: name: MODULE_NAME_1
例如,在 Bank of Anthos
skaffold.yaml
中,db
模块定义了数据库部署:对于依赖于 可以部署当前配置,因此您必须将配置添加到 依赖项如需指定配置依赖项,请将
configs
列表添加到skaffold.yaml
文件的requires
部分。例如,Bank of Anthos
skaffold.yaml
文件包含 配置依赖项setup
。如需定义依赖项,请将以下代码添加到
skaffold.yaml
文件中,其中 DEPENDENCY_NAME 是依赖项的名称。requires: - configs: DEPENDENCY_NAME
以这种方式列出的配置可以引用同一文件中定义的依赖项或当前项目中的其他
skaffold.yaml
文件。通过构建每个 Skaffold 文件来测试您的配置依赖项 以便确保它们能与各自的 API 一起部署, 添加依赖项 构建特定的 Skaffold 模块及其依赖项。
构建特定的 Skaffold 模块及其依赖项
定义模块及其依赖项后,您可以指定 Build / Deploy 标签页中选择想要运行的模块时, 运行 >修改配置。安装最新的内部人员版本。
转到 Run >Edit configurations 并打开 Build / Deploy 标签页。
对于 Skaffold 配置,选择 skaffold.yaml。
请按以下方式之一操作:
- 构建和部署所有模块和依赖项
- 构建和部署方式(如果模块可用),然后选择要构建和部署的模块。
您的选择会持续用于后续部署。如果您选择 Cloud Code 会针对部署一个子集的 而不是整个系统。
在 Kubernetes 上进行持续开发
使用所需选项配置运行目标后,您可以选择以常规方式运行应用,也可以在 IDE 中启动开发迭代周期,以将对源代码和依赖项所做的任何更改传播到运行中的应用。
在 Kubernetes 上开发运行目标会在 Kubernetes 集群上启动开发周期。启动开发周期后,Cloud Code 会使用 Skaffold 为项目构建一个映像,然后对其进行标记,将其推送到所配置的存储区,并使用 kubectl 部署项目 Kubernetes 清单。
- 点击 Develop on Kubernetes 图标,然后点击 Edit Configurations 以打开 Run/Debug Configurations 对话框。
- 使用可用的配置选项自定义部署。
- 如果您希望 Cloud Code 在保存更改后自动重新部署应用,请在 Watch mode - rebuild and Redeploy 下选择 On filesave。新的 Kubernetes 应用 默认选择按需。如需详细了解观看模式 请参阅手表模式。
- 如果您的应用配置为使用 Skaffold 模块,您可以选择仅构建或部署特定模块。
- 对配置感到满意后,点击 OK,然后点击 点击运行图标。
后续步骤
- 使用 Cloud Code 的内置 minikube 集群进行本地开发。
- 在 Cloud Code 中调试应用
- 详细了解 Skaffold 的文件同步功能