# balajinatarajan-dev/gke-observability-poc architecture

> Architecture diagram of the GitHub repository balajinatarajan-dev/gke-observability-poc, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/balajinatarajan-dev/gke-observability-poc
- Repository: https://github.com/balajinatarajan-dev/gke-observability-poc

## Overview

This repository describes a GKE observability proof of concept, not application source code: it configures a sample web app on two clusters, multi-cluster ingress with failover, and a logging-to-visualization pipeline. The main user flow is HTTPS traffic through the global load balancer to a cluster backend; operational data flows from Cloud Logging to BigQuery and Grafana. Grafana also displays Cloud Monitoring latency percentiles. Relationships are based on the README; no source excerpts were provided, so implementation details beyond the documented configuration are omitted.

Main entry points: [`k8s/mcs-service.yaml`](https://github.com/balajinatarajan-dev/gke-observability-poc/blob/main/k8s/mcs-service.yaml) (Backend Service), [`grafana/dashboard.json`](https://github.com/balajinatarajan-dev/gke-observability-poc/blob/main/grafana/dashboard.json) (Dashboard panels), [`k8s/mci.yaml`](https://github.com/balajinatarajan-dev/gke-observability-poc/blob/main/k8s/mci.yaml) (MultiClusterIngress), [`k8s/mcs.yaml`](https://github.com/balajinatarajan-dev/gke-observability-poc/blob/main/k8s/mcs.yaml) (MultiClusterService)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_traffic["Traffic and routing"]
  node_https_lb["Global HTTPS LB"]
  node_mci["MultiClusterIngress<br/>[mci.yaml]"]
  node_mcs["MultiClusterService<br/>[mcs.yaml]"]
  node_backend_service["Backend Service<br/>[mcs-service.yaml]"]
end

subgraph group_clusters["Cluster workloads"]
  node_cluster_standard["Standard cluster"]
  node_cluster_autopilot["Autopilot cluster"]
  node_app_deployment["Sample app deployment"]
end

subgraph group_observability["Logging and metrics"]
  node_cloud_logging["Cloud Logging"]
  node_bigquery[("BigQuery logs")]
  node_cloud_monitoring["Cloud Monitoring"]
end

subgraph group_visualization["Visualization"]
  node_grafana["Self-hosted Grafana"]
  node_dashboard["Dashboard panels<br/>[dashboard.json]"]
  node_queries["Dashboard queries<br/>[sample_queries.sql]"]
end

node_user(("Web user"))

node_user -->|"sends HTTPS"| node_https_lb
node_https_lb -->|"routes traffic"| node_mci
node_mci -->|"routes to"| node_mcs
node_mcs -->|"selects backend"| node_backend_service
node_backend_service -->|"serves app"| node_cluster_standard
node_backend_service -->|"serves app"| node_cluster_autopilot
node_cluster_standard -->|"runs deployment"| node_app_deployment
node_cluster_autopilot -->|"runs deployment"| node_app_deployment
node_cluster_standard -->|"sends logs"| node_cloud_logging
node_cluster_autopilot -->|"sends logs"| node_cloud_logging
node_cloud_logging -->|"exports logs"| node_bigquery
node_bigquery -->|"queried by"| node_queries
node_grafana -->|"displays"| node_dashboard
node_dashboard -->|"reads panels"| node_bigquery
node_cloud_monitoring -->|"provides latency"| node_dashboard

click node_mci "https://github.com/balajinatarajan-dev/gke-observability-poc/blob/main/k8s/mci.yaml"
click node_mcs "https://github.com/balajinatarajan-dev/gke-observability-poc/blob/main/k8s/mcs.yaml"
click node_backend_service "https://github.com/balajinatarajan-dev/gke-observability-poc/blob/main/k8s/mcs-service.yaml"
click node_app_deployment "https://github.com/balajinatarajan-dev/gke-observability-poc/blob/main/k8s/app-deployment.yaml"
click node_dashboard "https://github.com/balajinatarajan-dev/gke-observability-poc/blob/main/grafana/dashboard.json"
click node_queries "https://github.com/balajinatarajan-dev/gke-observability-poc/blob/main/bigquery/sample_queries.sql"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_https_lb,node_mci,node_mcs,node_backend_service,node_user toneBlue
class node_cluster_standard,node_cluster_autopilot,node_app_deployment toneAmber
class node_cloud_logging,node_bigquery,node_cloud_monitoring toneMint
class node_grafana,node_dashboard,node_queries toneRose
```

## Components

### Traffic and routing

- **Global HTTPS LB**
- [MultiClusterIngress](https://github.com/balajinatarajan-dev/gke-observability-poc/blob/main/k8s/mci.yaml): `k8s/mci.yaml`
- [MultiClusterService](https://github.com/balajinatarajan-dev/gke-observability-poc/blob/main/k8s/mcs.yaml): `k8s/mcs.yaml`
- [Backend Service](https://github.com/balajinatarajan-dev/gke-observability-poc/blob/main/k8s/mcs-service.yaml): `k8s/mcs-service.yaml`

### Cluster workloads

- **Standard cluster**
- **Autopilot cluster**
- [Sample app deployment](https://github.com/balajinatarajan-dev/gke-observability-poc/blob/main/k8s/app-deployment.yaml): `k8s/app-deployment.yaml`

### Logging and metrics

- **Cloud Logging**
- **BigQuery logs**
- **Cloud Monitoring**

### Visualization

- **Self-hosted Grafana**
- [Dashboard panels](https://github.com/balajinatarajan-dev/gke-observability-poc/blob/main/grafana/dashboard.json): `grafana/dashboard.json`
- [Dashboard queries](https://github.com/balajinatarajan-dev/gke-observability-poc/blob/main/bigquery/sample_queries.sql): `bigquery/sample_queries.sql`

### Other components

- **Web user**

## Connections

- Web user → Global HTTPS LB: sends HTTPS (evidence: `README.md`)
- Global HTTPS LB → MultiClusterIngress: routes traffic (evidence: `README.md`)
- MultiClusterIngress → MultiClusterService: routes to (evidence: `README.md`)
- MultiClusterService → Backend Service: selects backend (evidence: `README.md`)
- Backend Service → Standard cluster: serves app (evidence: `README.md`)
- Backend Service → Autopilot cluster: serves app (evidence: `README.md`)
- Standard cluster → Sample app deployment: runs deployment (evidence: `README.md`)
- Autopilot cluster → Sample app deployment: runs deployment (evidence: `README.md`)
- Standard cluster → Cloud Logging: sends logs (evidence: `README.md`)
- Autopilot cluster → Cloud Logging: sends logs (evidence: `README.md`)
- Cloud Logging → BigQuery logs: exports logs (evidence: `README.md`)
- BigQuery logs → Dashboard queries: queried by (evidence: `README.md`)
- Self-hosted Grafana → Dashboard panels: displays (evidence: `README.md`)
- Dashboard panels → BigQuery logs: reads panels (evidence: `README.md`)
- Cloud Monitoring → Dashboard panels: provides latency (evidence: `README.md`)
