在 Cloud Code for IntelliJ 中加快开发速度

如需加快在 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 工件。)这是 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 集群。

标准迭代周期类似于以下内容:

  1. 在项目中进行更改。例如,如果使用 Cloud Code Java Guestbook 应用,请将新端点添加到 FrontendController 类,如下所示:

    1. 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);
      }
      
    2. 为新注释 RequestMappingResponseBody 添加必要的导入项。

  2. 保存更改 (Ctrl/Cmd+S) 或构建项目。

    您可以在控制台窗口中查看进度和部署日志。 部署更改后,确认更新。

  3. 如需结束持续开发会话,请点击停止图标。

    Cloud Code 会删除用于开发会话的所有 Kubernetes 资源。

使用 Skaffold 配置开发微服务应用

在开发微服务应用时,分别处理不同的部分以简化调试和部署会很有帮助。

您可以通过将应用拆分为 Skaffold 模块来独立开发和调试应用的各个部分。例如,Bank of Anthos 示例是一个包含 10 项微服务的应用。该示例的 skaffold.yaml 文件将这些服务分组为五个 Skaffold 模块,名称分别为 setupdbfrontendbackendloadgenerator

定义 Skaffold 模块和配置依赖项

要定义 Skaffold 模块和配置依赖项,请执行以下操作:

  1. 打开要在其中定义模块的项目。

  2. 打开 skaffold.yaml 文件。

  3. 如果您的 skaffold.yaml 文件有多个配置,要将某个配置设为 Skaffold 模块,请指定以下代码行:

    metadata:
      name: MODULE_NAME_1
    

    例如,在 Bank of Anthos skaffold.yaml 中,db 模块定义了数据库部署:

    apiVersion: skaffold/v3
    kind: Config
    metadata:
      name: db # module defining database deployments
    requires:
    - configs:
      - setup
    build:
      artifacts:
      - image: accounts-db
        context: src/accounts-db
      - image: ledger-db
        context: src/ledger-db
    manifests:
      rawYaml:
      - dev-kubernetes-manifests/accounts-db.yaml
      - dev-kubernetes-manifests/ledger-db.yaml
    deploy:
      kubectl: {}
  4. 对于依赖于在部署当前配置之前所部署的其他配置的配置,您必须将相应配置添加到您的依赖项中。如需指定配置依赖项,请将 configs 列表添加到 skaffold.yaml 文件的 requires 部分。

    例如,Bank of Anthos skaffold.yaml 文件包含配置依赖项 setup

    如需定义依赖项,请将以下内容添加到 skaffold.yaml 文件中,其中 DEPENDENCY_NAME 是依赖项的名称。

    requires:
        - configs: DEPENDENCY_NAME
    

    以这种方式列出的配置可以引用当前项目中的同一文件或其他 skaffold.yaml 文件中定义的依赖项。

  5. 通过单独构建每个 Skaffold 模块来测试您的配置依赖项,以确保按照构建特定的 Skaffold 模块及其依赖项中的步骤,将这些模块与其依赖项一起部署。

构建特定的 Skaffold 模块及其依赖项

定义模块及其依赖项后,您可以在 Build / Deploy 标签页中选择 Run > Edit configurations 来指定要运行的模块。

  1. 安装最新的内部人员版本

  2. 转到运行 > 修改配置,然后打开构建 / 部署标签页。

  3. 对于 Skaffold 配置,选择 skaffold.yaml。

    请按以下方式之一操作:

    • 构建和部署所有模块和依赖项
    • 构建和部署所用模块(如果有)并选择要构建和部署的模块。

您的选择会保留在后续部署中。如果您选择了部分模块,则 Cloud Code 会显示一条警告,指出部署部分模块而非整个系统。

在 Kubernetes 上进行持续开发

使用所需选项配置运行目标后,您可以选择定期运行应用,或在 IDE 上启动开发迭代周期,以将对源代码和依赖项所做的任何更改传播到您的实时应用。

在 Kubernetes 上开发运行目标会启动 Kubernetes 集群的开发周期。启动开发周期后,Cloud Code 会使用 Skaffold 为项目构建映像,然后对其进行标记,将其推送到已配置的代码库,并使用 kubectl 部署项目的 Kubernetes 清单。

  1. 点击 Develop on Kubernetes 图标,然后点击 Edit Configurations 以打开 Run/Debug Configurations 对话框。
  2. 使用可用的配置选项自定义部署。
  3. 如果您希望 Cloud Code 在保存更改后自动重新部署应用,请在 Watch mode - rebuild and Redeploy 下选择 On filesave。默认情况下,新的 Kubernetes 应用会选择按需。如需详细了解手表模式,请参阅手表模式
  4. 如果您的应用配置为使用 Skaffold 模块,您可以选择仅构建或部署特定模块
  5. 对配置感到满意后,点击 OK,然后点击 Run 图标。

后续步骤

获取支持

如需在 IntelliJ IDE 中提交反馈或报告问题,请依次前往工具 > Cloud Code > 帮助 / 关于 > 提交反馈或报告问题,以在 GitHub 上报告问题,或者在 Stack Overflow 上提问。