Output Format¶
component-architecture.json¶
The core output format. Contains all data extracted by the 17 extractors.
Top-level structure¶
{
"component": "my-operator",
"repo": "github.com/org/my-operator",
"extracted_at": "2026-04-14T10:30:00Z",
"analyzer_version": "0.2.0",
"crds": [],
"rbac": {},
"services": [],
"deployments": [],
"network_policies": [],
"controller_watches": {},
"dependencies": {},
"secrets_referenced": [],
"dockerfiles": [],
"helm": {},
"webhooks": [],
"configmaps": [],
"http_endpoints": [],
"ingress_routing": [],
"external_connections": [],
"feature_gates": [],
"cache_config": {}
}
Key types¶
CRD¶
{
"group": "datasciencecluster.opendatahub.io",
"version": "v1",
"kind": "DataScienceCluster",
"scope": "Cluster",
"field_count": 42,
"cel_rules": 3,
"source_file": "config/crd/bases/datasciencecluster.yaml"
}
RBAC¶
{
"cluster_roles": [
{
"name": "manager-role",
"rules": [
{
"api_groups": [""],
"resources": ["secrets"],
"verbs": ["get", "list", "watch"]
}
],
"source": "config/rbac/role.yaml"
}
],
"role_bindings": [],
"kubebuilder_markers": []
}
Controller Watches¶
{
"controllers": [
{
"name": "DSCController",
"file": "controllers/dsc_controller.go",
"for": {
"group": "datasciencecluster.opendatahub.io",
"version": "v1",
"kind": "DataScienceCluster"
},
"owns": [
{ "group": "apps", "version": "v1", "kind": "Deployment" }
],
"watches": [
{ "group": "", "version": "v1", "kind": "ConfigMap" }
]
}
]
}
Dependencies¶
{
"go_version": "1.25",
"toolchain": "go1.25.0",
"go_modules": [
{ "module": "sigs.k8s.io/controller-runtime", "version": "v0.23.3" }
],
"replace_directives": [
{
"original": "github.com/org/old-module",
"replacement": "github.com/org/new-module",
"version": "v1.2.0"
}
],
"internal_odh": [
{
"component": "opendatahub-operator",
"interaction": "Go module dependency: github.com/opendatahub-io/opendatahub-operator/v2"
}
]
}
External Connections¶
[
{
"type": "database",
"service": "postgres",
"target": "postgres://***@db.example.com:5432/mydb",
"source": "pkg/storage/db.go:42",
"function": "NewStore"
},
{
"type": "messaging",
"service": "kafka",
"target": "",
"source": "pkg/events/producer.go:18",
"function": "InitProducer"
}
]
Feature Gates¶
[
{
"name": "PipelineReuse",
"default": true,
"pre_release": "Beta",
"source": "pkg/features/gates.go:15"
},
{
"name": "ExperimentalAPI",
"default": false,
"pre_release": "Alpha",
"source": "pkg/features/gates.go:16"
},
{
"name": "DebugMode",
"default": true,
"source": "cmd/main.go:42",
"runtime_set": true
}
]
Cache Config¶
{
"scope": "cluster",
"filtered_types": ["ConfigMap", "Secret"],
"disabled_types": [],
"implicit_informers": [
{
"type": "Namespace",
"source": "controllers/dsc_controller.go:145",
"reason": "client.Get call for unwatched type"
}
],
"gomemlimit": "512MiB",
"container_memory_limit": "1Gi",
"default_transform": false,
"findings": [
{
"severity": "warning",
"message": "Missing DefaultTransform - managedFields consuming extra memory",
"recommendation": "Add cache.DefaultTransform to strip managedFields"
}
]
}
Security findings (JSON)¶
{
"domain": "security",
"findings": [
{
"id": "CGA-004-001",
"query": "CGA-004",
"title": "Hardcoded API key",
"severity": "high",
"file": "pkg/config/defaults.go",
"line": 23,
"evidence": "String literal matches API key pattern: 'sk-...'",
"recommendation": "Use environment variable or secret mount"
}
]
}
Security findings (SARIF)¶
Standard SARIF 2.1.0 format compatible with GitHub Code Scanning:
{
"$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json",
"version": "2.1.0",
"runs": [
{
"tool": {
"driver": {
"name": "architecture-analyzer",
"version": "0.2.0",
"rules": [...]
}
},
"results": [...]
}
]
}