Skip to content
This repository was archived by the owner on Apr 17, 2026. It is now read-only.

feature: helm chart ingestor#61

Merged
george-lhj merged 3 commits into
mainfrom
new-helm
Sep 14, 2025
Merged

feature: helm chart ingestor#61
george-lhj merged 3 commits into
mainfrom
new-helm

Conversation

@george-lhj
Copy link
Copy Markdown
Contributor

overall, the entire helm goal is a bit ambiguous and difficult, so I'm trying to create small PR's and agents and get immediate feedback.

this first agent takes in a github helm url, and then turns the helm chart into structured, json structured metadata.

Example:

input: https://github.com/Qiskit/qiskit-serverless/tree/main/charts/qiskit-serverless
output:

{'meta': {'repo': 'Qiskit/qiskit-serverless', 'ref': 'main', 'chartRoot': 'charts/qiskit-serverless', 'chartName': 'qiskit-serverless', 'version': '0.25.4'}, 'defaults': {'global': {'version': '0.25.4'}, 'platform': 'default', 'nginxIngressControllerEnable': False, 'nginx-ingress-controller': {'nameOverride': 'nginx-ingress-controller', 'fullnameOverride': 'nginx-ingress-controller'}, 'ingress': {'className': 'nginx', 'annotations': {'nginx.ingress.kubernetes.io/proxy-buffers-number': '4', 'nginx.ingress.kubernetes.io/proxy-buffer-size': '512k', 'nginx.ingress.kubernetes.io/proxy-body-size': '50m'}, 'tls': [], 'hosts': []}, 'gatewayEnable': True, 'gateway': {'nameOverride': 'gateway', 'fullnameOverride': 'gateway', 'useCertManager': False, 'image': {'repository': 'icr.io/quantum-public/qiskit-serverless/gateway', 'pullPolicy': 'IfNotPresent', 'tag': '0.25.4'}, 'application': {'siteHost': 'http://gateway:8000', 'rayHost': 'http://kuberay-head-svc:8265', 'auth': {'mechanism': 'mock_token'}, 'superuser': {'enable': True}, 'service': {'type': 'ClusterIP', 'port': 8000}, 'ray': {'nodeImage': 'icr.io/quantum-public/qiskit-serverless/ray-node:0.25.4', 'opensslImage': 'registry.access.redhat.com/ubi8/openssl:8.9-13', 'kubectlImage': 'alpine/k8s:1.33.4', 'gpuJobsConfig': '/tmp/gpujobs/gpu-jobs.json'}, 'limits': {'maxJobsPerUser': 2, 'maxComputeResources': 4}, 'nodeSelector': {'cpu': 'has-cpu: cpu', 'gpu': 'has-gpu: gpu'}, 'dependencies': {'dynamicDependencies': 'requirements-dynamic-dependencies.txt'}}, 'cos': {'claimName': 'gateway-claim'}, 'secrets': {'secretKey': {'create': True, 'name': 'gateway-secret-key', 'key': 'django-secret-key', 'value': 'CHANGE_ME'}, 'servicePsql': {'create': True, 'name': 'service-psql-binding', 'key': {'adminPassword': 'admin-password', 'databaseName': 'database-name', 'databasePassword': 'database-password', 'host': 'database-host', 'port': 'database-port', 'userName': 'user-name'}, 'value': {'databaseName': 'serverlessdb', 'databasePassword': 'serverlesspassword', 'host': 'postgresql', 'port': 5432, 'userName': 'serverlessuser'}}, 'superuser': {'create': True, 'name': 'gateway-superuser', 'key': {'name': 'name', 'password': 'password', 'email': 'email'}, 'value': {'name': 'admin', 'password': 'passw0rd', 'email': 'admin@examplemail.io'}}}}, 'kuberayOperatorEnable': True, 'kuberay-operator': {'image': {'repository': 'quay.io/kuberay/operator', 'tag': 'v1.3.2', 'pullPolicy': 'IfNotPresent'}}, 'postgresqlEnable': True, 'postgresql': {'nameOverride': 'postgresql', 'fullnameOverride': 'postgresql', 'auth': {'enablePostgresUser': False, 'database': 'serverlessdb', 'username': 'serverlessuser', 'password': 'serverlesspassword'}}, 'createPvc': True, 'storageClassName': 'manual', 'claimName': 'gateway-claim', 'cos': {'bucket': 'BUCKETNAME-CHANGEME', 'endpoint': 'ENDPOINT-CHANGEME', 'secretName': 'SECRETNAME-CHANGEME', 'storageSize': '10Gi'}}, 'schema': None, 'discoveredKeys': ['claimName', 'cos.bucket', 'cos.endpoint', 'cos.secretName', 'cos.storageSize', 'createPvc', 'gateway.application.ray.nodeImage', 'ingress.annotations', 'ingress.hosts', 'ingress.tls', 'platform', 'storageClassName'], 'requiredHints': [], 'docs': None}

@george-lhj
Copy link
Copy Markdown
Contributor Author

would appreciate any feedback regarding the output strucutre, if im missing anything regarding helm chart logic itself.

Current Gap - The raw output is comprehensive but not actionable. We have all the chart data, but it's not organized in a way that downstream automation can easily use.

my next step if this is approved:

HelmSchemaResolver Agent
Goal: Transform the raw chart data into a clean, typed field catalog
Input: ChartBundle JSON (what we have now)
Output: Normalized field definitions with types, defaults, and requirements

@george-lhj george-lhj self-assigned this Sep 12, 2025
@george-lhj george-lhj added the enhancement New feature or request label Sep 12, 2025
@george-lhj george-lhj requested a review from planetf1 September 12, 2025 06:00
@george-lhj george-lhj requested a review from psschwei September 12, 2025 06:00
Copy link
Copy Markdown
Member

@psschwei psschwei left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is fine. At some point though you probably want to see if some of this can be moved down to the LLM (or maybe as a tool for an LLM)

@george-lhj george-lhj merged commit 310c79a into main Sep 14, 2025
1 check passed
@george-lhj george-lhj deleted the new-helm branch September 14, 2025 00:14
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants