应用交付

概览

应用交付通过 Git 以声明方式管理 Google Kubernetes Engine (GKE) 工作负载的配置。利用该功能,您可以:

  • 使用 Git 代码库作为单一可靠来源来管理多个环境的配置。
  • 通过 GitHub 或 GitLab 上的拉取请求在部署之前查看更改。
  • 在不同的环境中测试和推广更改。
  • 快速回滚更改。
  • 在 Google Cloud Console 中查看应用的版本和状态。

应用交付包括:

  • 一个命令行程序 (appctl),用于管理应用交付配置和代码库。
  • 一个在集群中运行的 GKE 插件。

环境

借助应用交付,您可以使用基本配置和叠加技术创建同一应用的多个环境(例如 prodstaging)。借助叠加技术,您可以修改环境的清单或者向环境的清单添加值。

每个环境都对应于您的集群中的一个命名空间。

应用交付和 Git

应用交付会将您的配置存储在两个私有 Git 代码库中。 目前支持 GitHub.com、GitLab.com 和 GitLab 企业版代码库。

配置更改是在应用代码库中进行的。部署代码库中的配置是从应用代码库自动生成的。通过使用这两个代码库,应用交付使维护和经过审核的可靠来源的关注点泾渭分明。应用交付所支持的工作流还可以防止这两个代码库发散。

应用代码库

应用代码库以 kustomize 格式存储应用配置文件。您可以通过运行 appctl version 查找预期版本的 kustomize 工具。

用户更改配置时,会创建一个 git tag,然后将该标记推送到应用代码库。

详细了解应用代码库的布局。

部署代码库

部署代码库将生成的 Kubernetes 清单存储在 Git 分支中。每个分支都会存储一个通过应用交付构建的配置。 您可以将配置应用到环境。

用户呈现配置并使用 appctl prepare 在部署代码库中生成拉取请求。管理员会审核更改。合并拉取请求后,用户会运行 appctl apply。然后,应用交付会在集群上更新应用的配置。

部署代码库存储在本地应用代码库的 .deployment 目录中。

详细了解部署代码库的布局。

应用代码库布局

以下目录结构是一个名为 myapp 的应用的示例应用代码库。

├── config
│   ├── base
│   │   ├── kustomization.yaml
│   │   └── myapp.yaml
│   └── envs
│       ├── prod
│       │   └── kustomization.yaml
│       └── staging
│           ├── kustomization.yaml
│           └── patch-replicas.yaml
└── delivery
    └── envs
        ├── prod.yaml
        └── staging.yaml

以下部分介绍此代码库中的目录。如需详细了解特定文件的内容,请参阅通过应用交付管理应用

config/base
config/base 目录中的配置适用于所有环境。 config/envs 中的其他配置可以修改此配置。
config/envs

该代码库包含 config/envs 目录中定义的以下两个环境的相关信息:prodstaging

prod 环境仅引用 config/base/myapp.yaml 中的配置。

staging 环境在 config/envs/staging/patch-replicas.yaml 中具有其他自定义内容。config/envs/staging/kustomization.yaml 中引用了此自定义内容。

delivery/envs

delivery/envs 中的子目录包含托管每个环境的 GKE 集群的相关信息。这些文件是自动生成的,不需要直接修改。

部署代码库布局

通过应用交付标记并推送到环境的每个配置都保存在部署代码库的一个分支中。

每个分支包含:

  • 一个包含该配置的 Kubernetes 清单的 artifact.yaml 文件。应用交付使用 Kustomize 从应用代码库呈现此文件。您可以通过运行 appctl version 来显示受支持的 Kustomize 版本。
  • 一个带有元数据的 README.md 文件。

应用交付和 Google Cloud Console

您可以在“GKE 应用”页面中看到通过应用交付部署的应用。在该页面中,您可以看到有关已部署的应用的元数据,例如版本、修订历史记录、运行状况、配置以及不同环境。

后续步骤

通过应用交付管理应用