Repository navigation
feat(nemoclaw-openshell-kubernetes): add Kubernetes and OpenShift Helm recipe - #166
Conversation
Signed-off-by: Anurag Guda <[email protected]>
apurvvkumaria
left a comment
There was a problem hiding this comment.
Thanks for the substantial remediation. The earlier request-path, package-size, and third-party provenance concerns are resolved at da0aac833b8381903a2ae7279773beabff27fa64, and all current checks are green.
Approval is still blocked by the inline default-runtime, retained-state, teardown, classification/name, and catalog-metadata findings.
Please also update the Documentation Writer Review record: passed is not one of the template values (docs-updated, no-docs-needed, or blocked); the evidence should name the changed documentation paths; and the Reviewer field should clearly identify the final documentation reviewer.
Resolves scripts/tests/test_example_stack_facts.py by taking main's version and raising the unconfirmed count to 8 for the Kubernetes recipe this branch carries. Co-Authored-By: Claude Fable 5.1 <[email protected]>
Signed-off-by: Anurag Guda <[email protected]>
First install stalls with WaitForFirstConsumer storageI hit a first-install deadlock on Helm In I unblocked installation by running the unchanged preparation Pod spec in an additional Job. The PVC bound and the original hooks completed, with Could preparation run before Helm's resource wait, with bootstrap explicitly waiting for it to succeed? A |
K3s issuer-discovery prerequisiteOn K3s K3s defaults to In the disposable cluster, I kept the binding and added an Could the profile document this prerequisite, supported versions, and how to preserve existing authentication settings? The current bootstrap check runs after Helm waits for the gateway, too late for this failure. An earlier credential-free, TLS-verified check of discovery and the advertised JWKS URL would help. OpenShell #3332 already improves the error message; this is about the recipe prerequisite, not another parsing-error report. |
…nto codex/fix-pr166-autoheal Signed-off-by: Apurv Kumaria <[email protected]> # Conflicts: # examples/README.md # examples/tools/README.md
Signed-off-by: Apurv Kumaria <[email protected]>
apurvvkumaria
left a comment
There was a problem hiding this comment.
Reviewed and fixed the two auto-heal findings at 1ea40df: file-backed API credentials reload before each request, and failed-Pod cleanup is limited to the approved finding. Ten new regressions pass. Full local verification passed: 94 deployer tests, 53 recipe/runtime tests, 74 repository Python tests, 14 Node tests, both platform renders, catalog validation, SPDX, taxonomy, and whitespace checks. Required GitHub checks are green. The seven earlier review threads have been rechecked and resolved with supporting notes. The tool/recipe split and current artifact names are accepted in this maintainer review. Original attribution is preserved and published history was not rewritten. No new live cluster, inference, installation, or teardown run was performed; contributor-reported live evidence and the documented verification limits remain distinct from these local checks.
Related Issue
N/A — this contribution adds a Kubernetes deployment tool and a separate NVIDIA SRE recipe.
Description
Adds two Helm entry points:
examples/tools/kubernetes-deployer: deploys the official, digest-pinned NemoClaw-managed Hermes image behind an OpenShell gateway on Kubernetes or OpenShift. It provides dashboard, API, and terminal access without invoking the NemoClaw CLI or bootstrap.examples/recipes/nvidia/kubernetes-sre-assistant: layers the SRE skill, authenticated cluster API proxy, scoped RBAC, and optional model operations onto the deployer. The optional auto-heal controller is disabled by default; remediation requires explicit acknowledgement.The deployer includes an explicit anonymous OIDC-discovery decision and startup probe, retained-state ownership checks before mutation, cert-generation hook cleanup, and an authenticated Helm-driven Sandbox teardown. Both examples declare
NemoClaw: N/Aand retain the managed-image version in their provenance sections.Model API keys remain in referenced Kubernetes Secrets. The documented defaults and acknowledgements preserve the boundaries for cluster access, dashboard exposure, broader operations, and model deletion. No custom image build is required.
Maintainer Follow-up
mainwithout rewriting published history; regenerate the catalog indexes to resolve conflicts and update the catalog-count regression for the two new examples.Original contribution and authorship remain credited to Anurag Guda.
Verification
Maintainer verification of the updated revision:
python3.12 -m unittest tests/test_chart.py— 94 passed.python3.12 -m unittest discover -s tests -p 'test_*.py'— 53 passed, including the ten new runtime regressions. The test fixture rebuilds the sibling Helm dependency.python -m unittest discover -s scripts/tests -p 'test_*.py'— 74 passed.node --test scripts/tests/*.test.mjs— 14 passed.python scripts/build_catalog.py --check— 24 examples across seven groups passed.python3.12 -S scripts/check_license_headers.py --check— 859 checked source files passed.python3.12 scripts/check_label_taxonomy.py --check— 63 labels passed.git diff --checkand staged whitespace checks passed.Catalog commands and repository tests used
uv run --no-project --python 3.12 --with-requirements scripts/catalog-requirements.txt. One initial repository test run found a stale catalog-count expectation after mergingmain; the updated expectation and complete rerun passed.The example READMEs retain the contributor-reported OpenShift and standard-Kubernetes live evidence and its limits. The maintainer follow-up used local regression tests; it did not contact a cluster, run model inference, or repeat live token rotation, cleanup, installation, or teardown. Broader access, model deployment, metrics, and deletion retain their documented local/static verification limits.
Documentation Writer Review
docs-updated.Release And Compliance
Signed-off-by: Anurag Guda [email protected]
Signed-off-by: Apurv Kumaria [email protected]