How kundhan-v6/gcp-gke-observability-assessment works
This repository deploys two stateless Flask applications across regional GKE clusters, exposing them through global HTTPS and providing centralized observability and disaster recovery. The principal workflow is DNS resolution, protected global ingress, Kubernetes service routing, then application response; Application A also demonstrates a traced call to Application B. The graph combines sampled application code with README-documented infrastructure and analytics capabilities; unsampled Terraform and manifest details are represented at their documented scope.
Main entry points: apps.yaml Workload manifests · app-a/app.py Application A · app-b/app.py Application B · gke.tf GKE clusters
Components 23
Traffic and applications
- Cloud DNS
terraform/https-dns.tf - Global HTTPS LB
terraform/global-lb.tf - MultiClusterIngress
kubernetes/multicluster-ingress.yaml - HTTPS redirect
kubernetes/frontend-config.yaml - MultiClusterService
kubernetes/apps.yaml - Workload manifests
kubernetes/apps.yaml - Application A
apps/app-a/app.py - Application B
apps/app-b/app.py
Cloud platform
- GKE clusters
terraform/gke.tf - Artifact Registry
terraform/artifact-registry.tf
Observability and analytics
- Cloud Logging
terraform/observability-bigquery.tf - Cloud Monitoring
grafana/gke-multicluster-observability.json - Cloud Trace
apps/app-a/app.py - Cloud Profiler
apps/app-a/app.py - Error Reporting
apps/app-a/app.py - BigQuery analytics
bigquery/sample_queries.sql - Grafana dashboard
grafana/gke-multicluster-observability.json
Security and recovery
- Cloud Armor
terraform/cloud-armor.tf - Secret Manager
terraform/secret-manager.tf - Backup and restore
terraform/gke-backup.tf - Workload Identity
terraform/app-runtime-identity.tf
Other components
- User
- Google Cloud
Connections 29
- User → Cloud DNS: resolves hostname
README.md - Cloud DNS → Global HTTPS LB: resolves to IP
README.md - Global HTTPS LB → HTTPS redirect: redirects HTTP
README.md - Global HTTPS LB → Cloud Armor: protects traffic
README.md - Cloud Armor → MultiClusterIngress: forwards traffic
README.md - MultiClusterIngress → MultiClusterService: routes traffic
README.md - MultiClusterService → Workload manifests: selects workloads
README.md - Workload manifests → GKE clusters: deploys workloads
README.md - Workload manifests → Application A: deploys service
README.md - Workload manifests → Application B: deploys service
README.md - Application A → Application B: calls slow endpoint
apps/app-a/app.py - Application A → Cloud Trace: exports traces
apps/app-a/app.py - Application B → Cloud Trace: exports traces
apps/app-b/app.py - Application A → Cloud Profiler: profiles service
apps/app-a/app.py - Application B → Cloud Profiler: profiles service
apps/app-b/app.py - Application A → Error Reporting: reports exceptions
apps/app-a/app.py - Application B → Error Reporting: reports exceptions
apps/app-b/app.py - Application A → Cloud Logging: emits structured logs
README.md - Application B → Cloud Logging: emits structured logs
README.md - GKE clusters → Cloud Logging: exports workload logs
README.md - Cloud Logging → BigQuery analytics: exports selected logs
README.md - Cloud Monitoring → Grafana dashboard: visualizes metrics
README.md - BigQuery analytics → Grafana dashboard: provides log analytics
README.md - GKE clusters → Backup and restore: backs up workloads
README.md - Backup and restore → GKE clusters: restores workloads
README.md - Workload manifests → Secret Manager: mounts runtime secrets
README.md - Workload manifests → Workload Identity: authenticates workloads
README.md - Artifact Registry → GKE clusters: supplies images
- Google Cloud → GKE clusters: hosts infrastructure
README.md