Kustomize is a declarative tool for managing Kubernetes configuration files (manifests). Its core idea is to create a single, common base configuration and then apply environment-specific changes through overlays. For example, your development, staging, and production environments can share the same base application definition, while overlays apply distinct patches for things like the number of replicas or database connection strings. This method ensures consistency and reduces duplication.
Within Google Cloud Deploy, Kustomize integrates via Skaffold. You define Skaffold profiles in a skaffold.yaml file, each pointing to a different Kustomize overlay directory (like kubernetes/staging). When Cloud Deploy starts a release, it runs skaffold render, which uses the specified overlay to generate the final, patched manifests for that specific target environment. This separation means your deployment pipeline logic stays clean while the detailed configuration is managed by Kustomize.
Advanced use cases include canary rollouts. You can create separate Kustomize overlays for each phase of a canary release (e.g., 10% traffic, 50% traffic), giving you fine-grained control over configuration changes during the progressive rollout. Kustomize also offers flexibility, as you can use it alongside other tools like Helm for rendering, while Cloud Deploy handles the actual deployment. This approach simplifies pipeline maintenance and improves operational efficiency.
Skaffold is a command-line tool that orchestrates the workflow for building, tagging, and deploying Kubernetes applications. In Google Cloud Deploy, Skaffold acts as the rendering engine, handling the technical details so the delivery pipeline definition can remain simple and unchanged. This decoupling allows developers to modify application manifests without needing to alter the pipeline itself.
The central configuration file is skaffold.yaml. It defines how to build container images (using Docker, Jib, etc.), how to tag them, and how to render the final Kubernetes manifests. You use Skaffold profiles within this file to customize behavior for different target environments. A profile can specify which Kustomize overlay to use or which Helm chart to render, allowing a single configuration file to support multiple deployment paths.
When a release is initiated, Cloud Deploy coordinates with Cloud Build to execute skaffold render. This process automatically tags images and generates the final deployment manifests with exact image digests. You can also configure a verification step in the skaffold.yaml to run automated integration tests in the target environment after deployment but before the rollout is considered complete. This ensures the new version works as expected before it proceeds to the next stage.
Google Cloud Deploy is a managed service for deploying applications to targets like Google Kubernetes Engine (GKE) and Cloud Run. It automates the progression of releases through a defined pipeline, which is a sequence of targets (e.g., dev, staging, prod). Each target represents a specific environment or cluster. The pipeline configuration defines how a release moves from one target to the next, and you can set manual approval gates between stages.
Cloud Deploy supports advanced deployment strategies. The standard strategy deploys the full application update at once. The canary strategy rolls out changes incrementally (e.g., 25%, then 50%, then 100% of traffic), allowing for safer validation. For Cloud Run targets, Cloud Deploy can automatically manage traffic shifting based on these percentages. You control who can perform actions like creating releases or approving promotions using fine-grained IAM permissions.
The service integrates deeply with Skaffold and Kustomize for manifest management. You define Skaffold profiles for different targets, which can point to different Kustomize overlays or Helm charts. Cloud Deploy uses skaffold render to produce the final manifests and then skaffold apply to deploy them. Additional features include deployment verification for automated testing, predeploy/postdeploy hooks for custom scripts, and security integrations like Binary Authorization and vulnerability scanning with Artifact Analysis.
Professional Cloud DevOps Engineer
Gauge your current knowledge
Gauge your current knowledge