{
  "repo": "tidbcloud/aws-shared-provider",
  "binary": "gateway-controller",
  "binary_path": "cmd/gateway-controller/main.go",
  "surface_kind": "controller_service",
  "type": "controller_service",
  "extensions": {},
  "services": [
    {
      "name": "HealthService",
      "type": "http",
      "methods": [
        {
          "name": "GET /healthz",
          "name_key": "HTTP GET /healthz",
          "description": "Health check endpoint"
        },
        {
          "name": "GET /readyz",
          "name_key": "HTTP GET /readyz",
          "description": "Readiness check endpoint"
        }
      ],
      "endpoints": [
        {
          "path": "/healthz",
          "method": "GET",
          "description": "Health check endpoint",
          "port": 8081
        },
        {
          "path": "/readyz",
          "method": "GET",
          "description": "Readiness check endpoint",
          "port": 8081
        }
      ]
    },
    {
      "name": "MetricsService",
      "type": "http",
      "methods": [
        {
          "name": "GET /metrics",
          "name_key": "HTTP GET /metrics",
          "description": "Prometheus metrics endpoint"
        }
      ],
      "endpoints": [
        {
          "path": "/metrics",
          "method": "GET",
          "description": "Prometheus metrics endpoint"
        }
      ]
    },
    {
      "name": "GatewayReconciler",
      "type": "kubernetes_controller",
      "description": "Reconciles Gateway CRD resources",
      "methods": [
        {
          "name": "Reconcile",
          "name_key": "Runtime GatewayReconciler.Reconcile",
          "description": "Manage gateway deployment and configuration based on traffic metrics"
        }
      ],
      "watches": [
        {
          "kind": "Gateway",
          "group": "gateway.tidbcloud.com",
          "version": "v1alpha1"
        },
        {
          "kind": "Deployment",
          "group": "apps",
          "version": "v1"
        },
        {
          "kind": "HorizontalPodAutoscaler",
          "group": "autoscaling",
          "version": "v2"
        },
        {
          "kind": "Service",
          "group": "",
          "version": "v1"
        },
        {
          "kind": "ServiceMonitor",
          "group": "monitoring.coreos.com",
          "version": "v1"
        },
        {
          "kind": "TCP",
          "group": "haproxy.ingress.io",
          "version": "v1"
        }
      ],
      "actions": [
        {
          "name": "Reconcile",
          "description": "Manage gateway deployment and configuration based on traffic metrics"
        }
      ]
    },
    {
      "name": "PodAnnotationReconciler",
      "type": "kubernetes_controller",
      "description": "Manages pod annotations for gateway routing",
      "methods": [
        {
          "name": "Reconcile",
          "name_key": "Runtime PodAnnotationReconciler.Reconcile",
          "description": "Update pod annotations for cluster-autoscaler and zr labels"
        }
      ],
      "watches": [
        {
          "kind": "Pod",
          "group": "",
          "version": "v1"
        }
      ],
      "actions": [
        {
          "name": "Reconcile",
          "description": "Update pod annotations for cluster-autoscaler and zr labels"
        }
      ]
    }
  ]
}
