Add Helm chart with full component support and docs#45
Conversation
Adds deployment, service, and serviceaccount templates for the GitHub adapter, disabled by default. When enabled, mounts GitHub App credentials from an existing secret and connects to the API internal port. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…m-values page - Add Hugo frontmatter to README.md.gotmpl so generated README works as a Hugo page - Create symlink docs/setup/helm-values.md → charts/shepherd/README.md - Add values-quickstart.yaml with 1 replica, NodePort extraObjects for Kind - Rewrite quickstart to use Helm + released images (removed ko/Go/Node.js prereqs) - Rewrite deployment guide as Helm-based, remove all kustomize content Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
| {{- toYaml . | nindent 4 }} | ||
| {{- end }} | ||
| spec: | ||
| replicas: {{ .Values.api.replicas }} |
There was a problem hiding this comment.
If hpa enabled we shouldn't say replicas.
| - name: api | ||
| securityContext: | ||
| {{- toYaml .Values.api.securityContext | nindent 12 }} | ||
| image: {{ include "shepherd.image" (dict "service" .Values.api.image "global" .Values.global.image "defaultVersion" .Chart.AppVersion) }} |
There was a problem hiding this comment.
Do we build repo and registry? If not we should
| {{- end }} | ||
| volumeMounts: | ||
| - name: nginx-config | ||
| mountPath: /etc/nginx/conf.d/nginx.default.conf |
There was a problem hiding this comment.
Is it really /etc since we are running rootless image from chainguard?
| - name: nginx-tmp | ||
| mountPath: /var/lib/nginx/tmp | ||
| - name: nginx-run | ||
| mountPath: /var/run |
There was a problem hiding this comment.
I assume this is needed due to not allowing to write to root. Are we sure that is how chainguard works + is path correct?
| # values-quickstart.yaml — Local Kind development only. DO NOT use in production. | ||
| # | ||
| # Usage: | ||
| # Part 1 (no GitHub): |
There was a problem hiding this comment.
Nit why is part 1 without GitHub? Call it no GitHub or similar, don't mention part
| pdb: | ||
| # -- Enable PodDisruptionBudget for the API | ||
| enabled: false | ||
| # -- Minimum available pods (mutually exclusive with maxUnavailable) |
There was a problem hiding this comment.
Add a note that hpa/replica count always have to be +1 compared to minimum pdb. Or stuff will hang
| nodes: | ||
| - role: control-plane | ||
| extraPortMappings: | ||
| - containerPort: 30080 |
There was a problem hiding this comment.
We should have a nodeport for GitHub as well, the majority of users want to have it
| ``` | ||
|
|
||
| The test overlay deploys all Shepherd components with NodePort services and **no GitHub App requirement**. This is the fastest way to explore the system. | ||
| Install Shepherd without the GitHub adapter: |
There was a problem hiding this comment.
Show how to do it with GitHub adapter
| --- | ||
|
|
||
| This guide covers deploying Shepherd to a Kubernetes cluster. If you're looking to run locally for development, see the [Quickstart](../../getting-started/quickstart/) instead. | ||
| This guide covers deploying Shepherd to a Kubernetes cluster with Helm. If you're looking to run locally for development, see the [Quickstart](../../getting-started/quickstart/) instead. |
There was a problem hiding this comment.
For a quick test. For development they should read contributing
|
|
||
| ```bash | ||
| kubectl apply -f config/samples/sandbox-template-runner.yaml -n shepherd-system | ||
| EOF |
There was a problem hiding this comment.
We should add info that it's possible to do warm agent as well
…arnings - Omit spec.replicas when HPA is enabled to prevent scale fights on helm upgrade - Fix Chainguard nginx mount paths: /var/run → /run (pid), add /var/log/nginx - Add PDB minAvailable + replicas warning to all three component sections - Add GitHub adapter NodePort (30082) to quickstart values and Kind config - Show helm install with GitHub adapter in quickstart docs - Rename Part 1/Part 2 to descriptive headings (no GitHub / with GitHub) - Fix deployment guide: quick test vs development (link to CONTRIBUTING.md) - Add warm sandbox callout to deployment guide Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Summary
ghcr.io/nissessenap/helm-charts/shepherd)templates/withhelm.sh/resource-policy: keepso they upgrade with the chart but survive uninstallgithubAdapter.enabled: falseby default) with full secret mounting and callback configurationextraObjectsfor arbitrary additional resourcesvalues-quickstart.yamlfor local Kind development with NodePort services (30080/30081) and 1 replicahelm installwith released OCI images instead of kustomize/koREADME.mdDetails
Chart structure
Documentation changes
helm installfrom OCI registrydocs/content/docs/setup/helm-values.mdto the generated chart README with Hugo frontmatterTest plan
helm template test charts/shepherd/renders without errorshelm template test charts/shepherd/ -f charts/shepherd/values-quickstart.yaml --set githubAdapter.enabled=falserenders NodePort services, no adapterhelm template test charts/shepherd/ -f charts/shepherd/values-quickstart.yamlrenders all components including adapterhugo --minifyindocs/builds successfully with the new symlinked pagemake helm-docsregenerates README.md with frontmattervalues-quickstart.yamland verify pods come up🤖 Generated with Claude Code