Application Delivery manages configurations for your Google Kubernetes Engine (GKE) workloads declaratively with Git. It allows you to:
- Manage configurations for multiple environments using a Git repository as a single source of truth.
- Review changes before deployment through pull requests on GitHub or Gitlab.
- Test and promote changes across different environments.
- Roll back changes quickly.
- See your applications' version and status on the Google Cloud Console.
Application Delivery consists of:
- A command line program (
appctl) that manages your Application Delivery configurations and repositories.
- A GKE add-on that runs in your cluster.
Application Delivery allows you to create multiple environments (for example,
staging) of the same application using a base configuration and
overlays. Overlays allow you to modify or add values to the environment's
Each environment corresponds to a namespace in your cluster.
Application Delivery and Git
Application Delivery stores your configuration in two private Git repositories. GitHub and GitLab repositories are currently supported.
Configuration changes are made in the application repository. Configurations in the deployment repository are automatically generated from the application repository. Using these two repositories, Application Delivery introduces a separation of concerns between maintenance and the reviewed source of truth. The workflow encouraged by Application Delivery also prevents these two repositories from diverging.
- Application repository
The application repository stores application configuration files in kustomize format.
When a user makes a configuration change, they create a
git tagand then push the tag to the application repository.
Learn more about the layout of the application repository.
- Deployment repository
The deployment repository stores generated Kubernetes manifests in Git branches. Each branch stores a configuration built with Application Delivery. You can apply configurations to environments.
A user renders the configuration and generates a pull request in the deployment repository with
appctl prepare. An administrator reviews the change. After the pull request is merged, the user runs
appctl apply. Application Delivery then updates the application's configuration on the cluster.
Learn more about the layout of the deployment repository.
Application repository layout
The following directory structure is an example application repository of an
├── config │ ├── base │ │ ├── kustomization.yaml │ │ └── myapp.yaml │ └── envs │ ├── prod │ │ └── kustomization.yaml │ └── staging │ ├── kustomization.yaml │ └── patch-replicas.yaml └── delivery └── envs ├── prod.yaml └── staging.yaml
The following section describes directories in this repository. For more information on the contents of specific files, see Managing Applications with Application Delivery.
- Configuration in the directory
config/baseapplies to all environments. Additional configuration in
config/envscan modify this configuration.
The repository contains information on two environments, defined in the directory
prodenvironment refers only to the configuration in
stagingenvironment has an additional customization in
config/envs/staging/patch-replicas.yaml. This customization is referenced in
delivery/envscontain information on the GKE clusters that host each environment. These files are automatically generated and don't need to be modified directly.
Deployment repository layout
Each configuration tagged and pushed to an environment with Application Delivery is saved in a branch of the deployment repository.
Each branch contains:
artifact.yamlfile containing the Kubernetes manifests for that configuration. Application Delivery renders this from the application repository with Kustomize.
README.mdfile with metadata.
Application Delivery and the Google Cloud Console
Applications you deploy with Application Delivery are visible in the GKE Applications page. From there, you can see metadata about deployed applications such as version, revision history, health status and configuration.