GKE Burst Baseline (HyOps Blueprint)¶
- Purpose: Build the first cloud burst baseline on GKE with GitOps and cloud-native secret delivery.
- Trigger: A controlled burst lane is required for public workload rollout, validation, or future decision-driven scale-out.
- Impact: Provisions the cluster, publishes kubeconfig, installs Argo CD-managed workloads from
clusters/burst, and bootstraps a Workload Identity-backedClusterSecretStore. - Severity: P1
- Rollback strategy: Destroy in reverse order, beginning with the GitOps/secret-store layers and then the cluster infrastructure.
Context¶
Blueprint ref: gcp/gke-burst@v1
Current validated burst baseline:
- cluster substrate:
platform/gcp/gke-cluster - kubeconfig publication:
platform/gcp/gke-kubeconfig - GitOps root:
platform/k8s/argocd-bootstrap#gke_burst_gitops - cloud-native secret-store:
platform/k8s/gcp-secret-store - public workload target:
clusters/burst
The current public burst target is intentionally narrow:
smoke/guestbookplatform/external-secrets
platform/secret-stores is not carried in Git for the burst target. It is created by core through the platform/k8s/gcp-secret-store module.
Private burst extensions should stay separate from this public baseline:
- keep
gke_burst_gitopson the public workloads repo - use a separate
platform/k8s/argocd-bootstrapinstance for private targets - use
repo_access_mode=sshwith a vault-backed deploy key for private repos - bridge private runtime payloads through
platform/k8s/runtime-bundle-secret
Preconditions¶
- GCP init is complete for the target environment
- controller has
gcloud,kubectl, andgke-gcloud-auth-plugin - target project billing and required APIs are active for ongoing GKE and Secret Manager operations
- target project has sufficient quota for the current starter profile
- public workloads repo is reachable at the pinned revision in the blueprint inputs
- the workstation or runner executing kubeconfig/bootstrap steps can reach the GKE control-plane endpoint
- env overlays that replay this blueprint must preserve the cluster naming context inputs:
name_prefix,context_id,project_state_ref,region, andlocation
Execute¶
hyops blueprint deploy --env dev \
--ref gcp/gke-burst@v1 \
--execute
Step flow¶
| # | Step ID | Module | Phase |
|---|---|---|---|
| 1 | gke_burst_cluster |
platform/gcp/gke-cluster |
bootstrap |
| 2 | gke_burst_kubeconfig |
platform/gcp/gke-kubeconfig |
bootstrap |
| 3 | gke_burst_gitops |
platform/k8s/argocd-bootstrap |
operations |
| 4 | gke_burst_secret_store |
platform/k8s/gcp-secret-store |
operations |
Verification¶
Check applications:
KUBECONFIG="$HOME/.hybridops/envs/dev/state/kubeconfigs/gke-burst.yaml" \
kubectl get applications.argoproj.io -n argocd \
-o custom-columns=NAME:.metadata.name,SYNC:.status.sync.status,HEALTH:.status.health.status,REVISION:.status.sync.revision
Expected current result:
hyops-workloads-root→Synced Healthyplatform-external-secrets→Synced Healthysmoke-guestbook→Synced Healthy
Check the cluster secret store:
KUBECONFIG="$HOME/.hybridops/envs/dev/state/kubeconfigs/gke-burst.yaml" \
kubectl get clustersecretstore gcp-secret-manager -o yaml
Success indicators:
- blueprint summary ends with
status=ok - the root app revision matches the pinned public workloads commit
cap.k8s.gcp-secret-store = readyClusterSecretStore/gcp-secret-managerisReady=True
Live lane verification¶
Use these checks when you need the current burst lane truth rather than the original deployment proof:
hyops show module platform/k8s/argocd-bootstrap#gke_burst_gitops --env dev
KUBECONFIG="$HOME/.hybridops/envs/dev/state/kubeconfigs/gke-burst.yaml" \
kubectl -n showcase-burst get ingress,deploy,pods
curl -fsS https://burst.hybridops.tech/__burst/status \
| jq '{status,desired,burst_weight_pct,route_ready}'
Expected current signals:
- the GitOps root is
status=ok - the
showcase-burstdeployment is healthy - the public burst status endpoint reports
status=live-ok
For the observability and decision-control surfaces behind this lane, use the edge control-plane runbook:
Notes¶
- This baseline proves cluster bring-up, public-workload GitOps handoff, and cloud-native secret delivery.
platform/gcp/gke-kubeconfignow fails early if the cluster project is billing-blocked or if the public control-plane endpoint is not reachable from the current execution surface.- Do not strip the naming-context inputs from env overlays when replaying this blueprint.
platform/gcp/gke-clustercomposes the real cluster identity fromname_prefix + context_id + cluster_name. Ifname_prefixorcontext_iddrop to empty values, Terraform will plan a cluster replacement instead of reconciling the existing burst lane. - It does not yet establish the full burst application surface or a decision-service automation loop.
- The next layer is workload expansion. Private runtime payloads should be bridged into the cluster through
platform/k8s/runtime-bundle-secret, not by pushing that logic into the public workloads repo.