在 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 artifacts.)这是 Buildpack 的默认设置。
  • infer:每个更改后的文件的目标位置都是从构建器推断出来的。
  • manual:您必须在本地工作区中指定文件,并在 运行中的容器

skaffold.yaml 文件中的以下示例 sync 部分指定了一个 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 留言板应用,请将新端点添加到 FrontendController 类,如下所示:

    1. 从以下位置打开 FrontendController.java 文件: src/main/java/cloudcode/guestbook/frontend 并添加以下代码:

      @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 示例 是一个包含十个微服务的应用该示例的 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 文件来测试您的配置依赖项 以便确保它们能与各自的 API 一起部署, 安装依赖项 构建特定的 Skaffold 模块及其依赖项

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

定义模块及其依赖项后,您可以指定 Build / Deploy 标签页中选择想要运行的模块时, 运行 >修改配置

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

  2. 转到 Run >Edit configurations 并打开 Build / Deploy 标签页。

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

    请按以下方式之一操作:

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

您的选择会保留在后续部署中。如果您选择 Cloud Code 会针对部署一个子集的 而不是整个系统。

在 Kubernetes 上进行持续开发

使用所需的选项配置运行目标后,您可以 选择定期运行您的应用,或开始开发 迭代周期,以便将对源代码和 添加到运行中的应用

在 Kubernetes 上开发运行目标在 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,然后点击 点击运行图标。

后续步骤

获取支持

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