Professional Cloud DevOps Engineer
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.
Prepare and test your skills
Prepare and test your skills
Skaffold serves as the rendering engine for Google Cloud Deploy by using profiles defined in a skaffold.yaml file to point to distinct Kustomize overlay directories. During release initiation, Cloud Deploy coordinates with Cloud Build to run skaffold render, which applies overlay patches to the base manifest and generates the final deployment configuration.
Google Cloud Deploy supports both standard and canary deployment strategies. The standard strategy rolls out the complete update at once, whereas the canary strategy incrementally releases changes across percentage phases and can automatically manage traffic shifting on Cloud Run targets.
Google Cloud Deploy uses a verification step defined in the skaffold.yaml file to execute automated integration tests directly in the target environment after deployment. This verification ensures that the new version functions properly before the rollout is marked complete and advances to subsequent pipeline stages.
Your DevOps engineering team is designing a continuous delivery pipeline using Google Cloud Deploy and Skaffold to deploy microservices onto Google Kubernetes Engine (GKE) clusters across development, staging, and production environments.
You need to implement declarative configuration management using Kustomize that satisfies the following technical requirements:
How should you structure and configure the Kustomize manifests?