Introduce the Helm Chart - #288
Conversation
There was a problem hiding this comment.
Pull request overview
Introduces a new Helm chart (charts/allure-docker-service) to deploy the Allure Docker Service API and UI onto Kubernetes via configurable Helm values.
Changes:
- Added
Chart.yaml+values.yamldefining default configuration for API/UI images, services, ingress/HTTPRoute, persistence, and security settings. - Added Helm templates for API/UI Deployments and Services, plus optional Ingress and Gateway API HTTPRoute resources.
- Added templates for API credential Secret generation, optional PVC for report storage, optional ServiceAccount, and install-time
NOTES.txt.
Reviewed changes
Copilot reviewed 15 out of 15 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| charts/allure-docker-service/Chart.yaml | Defines the new Helm chart metadata (name/version/appVersion). |
| charts/allure-docker-service/values.yaml | Provides default values for enabling components, networking, persistence, probes, and credentials. |
| charts/allure-docker-service/templates/_helpers.tpl | Adds naming/label helpers and image reference helpers for API/UI. |
| charts/allure-docker-service/templates/api-deployment.yaml | Deploys the API component, wires env vars + secret refs, and optionally mounts PVC. |
| charts/allure-docker-service/templates/api-service.yaml | Exposes the API via a Kubernetes Service. |
| charts/allure-docker-service/templates/api-ingress.yaml | Optional Kubernetes Ingress for the API. |
| charts/allure-docker-service/templates/api-httproute.yaml | Optional Gateway API HTTPRoute for the API. |
| charts/allure-docker-service/templates/api-pvc.yaml | Optional PVC for API report storage. |
| charts/allure-docker-service/templates/api-secrets.yaml | Creates/preserves credentials in a managed Secret (unless using an existing Secret). |
| charts/allure-docker-service/templates/ui-deployment.yaml | Deploys the UI component and sets default public API URL env vars. |
| charts/allure-docker-service/templates/ui-service.yaml | Exposes the UI via a Kubernetes Service. |
| charts/allure-docker-service/templates/ui-ingress.yaml | Optional Kubernetes Ingress for the UI. |
| charts/allure-docker-service/templates/ui-httproute.yaml | Optional Gateway API HTTPRoute for the UI. |
| charts/allure-docker-service/templates/serviceaccount.yaml | Optional ServiceAccount creation. |
| charts/allure-docker-service/templates/NOTES.txt | Post-install guidance for connecting and retrieving credentials. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| path: / | ||
| port: http | ||
| readinessProbe: | ||
| httpGet: | ||
| path: / |
There was a problem hiding this comment.
api.livenessProbe/api.readinessProbe default to httpGet.path: /, but the API doesn’t expose a / route (it will return 404), causing probes to fail and pods to restart/not become Ready. Consider defaulting these probes to a real unauthenticated endpoint like /version (and, if you expect URL_PREFIX usage, ensure the chosen path still works).
| path: / | |
| port: http | |
| readinessProbe: | |
| httpGet: | |
| path: / | |
| path: /version | |
| port: http | |
| readinessProbe: | |
| httpGet: | |
| path: /version |
|
|
||
| 1. API endpoint: | ||
| {{- if .Values.api.ingress.enabled }} | ||
| http{{ if .Values.api.ingress.tls }}s{{ end }}://{{ (first .Values.api.ingress.hosts).host }} |
There was a problem hiding this comment.
The Ingress case prints only http(s)://<host> but the default API ingress path in values.yaml is /allure-docker-service. The NOTES output will mislead users into hitting the wrong URL. Consider including the first configured ingress path (or documenting the path separately) when printing the API endpoint.
| http{{ if .Values.api.ingress.tls }}s{{ end }}://{{ (first .Values.api.ingress.hosts).host }} | |
| {{- $apiIngressHost := first .Values.api.ingress.hosts }} | |
| http{{ if .Values.api.ingress.tls }}s{{ end }}://{{ $apiIngressHost.host }}{{ (first $apiIngressHost.paths).path }} |
| spec: | ||
| {{- with .Values.global.image.imagePullSecrets }} | ||
| imagePullSecrets: | ||
| {{- toYaml . | nindent 8 }} | ||
| {{- end }} | ||
| serviceAccountName: {{ include "allure-docker-service.serviceAccountName" . }} |
There was a problem hiding this comment.
global.serviceAccount.automount is only applied to the ServiceAccount object, but the pods don’t set automountServiceAccountToken. When global.serviceAccount.create is false (default), this setting has no effect and pods will still mount the default SA token. Consider setting automountServiceAccountToken on the Pod spec (and/or clarifying that automount only applies when creating the ServiceAccount).
| imagePullSecrets: | ||
| {{- toYaml . | nindent 8 }} | ||
| {{- end }} | ||
| serviceAccountName: {{ include "allure-docker-service.serviceAccountName" . }} |
There was a problem hiding this comment.
global.serviceAccount.automount is only applied to the ServiceAccount object, but the pods don’t set automountServiceAccountToken. When global.serviceAccount.create is false (default), this setting has no effect and pods will still mount the default SA token. Consider setting automountServiceAccountToken on the Pod spec (and/or clarifying that automount only applies when creating the ServiceAccount).
| serviceAccountName: {{ include "allure-docker-service.serviceAccountName" . }} | |
| serviceAccountName: {{ include "allure-docker-service.serviceAccountName" . }} | |
| automountServiceAccountToken: {{ .Values.global.serviceAccount.automount }} |
| - matches: | ||
| - path: | ||
| type: PathPrefix | ||
| value: / |
There was a problem hiding this comment.
The default ui.httpRoute.rules example is missing backendRefs, so if a user enables ui.httpRoute.enabled without also overriding rules, Helm will render an invalid HTTPRoute that Kubernetes will reject. Consider either providing a complete default rule (including a backendRef to the UI Service + port) or generating the default rule in the template so the service name stays in sync with the release name.
| value: / | |
| value: / | |
| backendRefs: | |
| - name: allure-docker-service-ui | |
| port: 80 |
| - matches: | ||
| - path: | ||
| type: PathPrefix | ||
| value: /api |
There was a problem hiding this comment.
api.httpRoute.rules defaults to matching the /api prefix, but the API endpoints are served at /... and /allure-docker-service/... (with URL_PREFIX defaulting to empty). With the chart defaults, enabling HTTPRoute as-is would route /api/* to the service but the backend will 404 unless additional rewrite/URL_PREFIX config is applied. Consider defaulting the match to /allure-docker-service (to mirror the Ingress defaults) or documenting the required URL_PREFIX/rewrite configuration alongside the example.
| value: /api | |
| value: /allure-docker-service |
Summary
Adds a Helm chart to enable deploying
allure-docker-serviceon Kubernetes clusters.Changes
charts/allure-docker-service/with a fully functional Helm chart including:_helpers.tplwith reusable template definitionsvalues.yamlwith sensible defaultsNOTES.txtwith post-install usage instructionsMotivation
This makes it easier to deploy allure-docker-service in Kubernetes environments without having to manually craft manifests, and enables configuration via Helm values.