Google's new Application Manager, now in beta, is geared toward simplifying setting up GitOps with Google Kubernetes Engine (GKE) as the target platform.
GitOps is the idea that developers include a definition of the infrastructure required to deploy an application in a repository alongside the application code. Devs can then automate deployment with a script that sets up the production environment as well as compiling the code. If coders need to make a change to the infrastructure, they can do so by modifying its declarative definition, with all the benefits of history and change control that comes from using a repository.
The new Application Manager (the main part of which Google calls Application Delivery) is an add-on that runs in a GKE cluster and has a command line interface used by running
Repositories must be hosted in either GitHub or GitLab. Once installed, devs can use commands to manage applications. This starts with creating repositories for an application. By default the dev gets two repositories, one for deployment configuration and one for application code.
Next, the dev defines the requirements for K8s deployment in a YAML file according to a Kustomize configuration, uses
appctl commands to add environments such as testing, staging and production, and prepares a tagged version of their application for deployment with the
appctl prepare command.
This generates a pull request in the repository, which dev can review. Once approved, use
appctl apply to do the magic of creating the specified environment and deploying an application. Devs can also use
appctl prepare to promote a deployment from one environment to another, such as from staging to production. Devs can also easily rollback a deployment. The documentation is here.
Application Manager also monitors deployed applications and surfaces data on version, revision history, health and so on in the Google Cloud console.
Google also has in mind that third-party applications installed from the Google Cloud Marketplace could use Application Manager for updates. Then devs could simply click an Update button to install new versions of those applications into a GKE cluster.
Google's Application Manager will fit well into continuous integration/continuous delivery platforms such as Jenkins or tools using Tekton pipelines. It also lets devs use GitOps without additional tools, if a bare-bones approach is sufficient. It makes it easy to do GitOps with GKE, though it does nothing to simplify the work of figuring out the right configuration for K8s deployment. Once a dev has got this right, though, Application Manager looks promising as a means of automating deployment with the benefits of a GitOps approach.
Providing powerful and flexible pathways that help developers deploy to a platform is a significant differentiator for cloud providers, and in this context Application Manager may prove important for Google's cloud. ®