Skip to content

Introduce the Helm Chart - #288

Open
brunobritorj wants to merge 1 commit into
fescobar:masterfrom
brunobritorj:master
Open

Introduce the Helm Chart#288
brunobritorj wants to merge 1 commit into
fescobar:masterfrom
brunobritorj:master

Conversation

@brunobritorj

Copy link
Copy Markdown

Summary

Adds a Helm chart to enable deploying allure-docker-service on Kubernetes clusters.

Changes

  • Added charts/allure-docker-service/ with a fully functional Helm chart including:
    • Deployments for both the API and UI components
    • Services, Ingress, and HTTPRoute templates
    • PersistentVolumeClaim for report storage
    • Secrets management template
    • ServiceAccount support
    • _helpers.tpl with reusable template definitions
    • values.yaml with sensible defaults
    • NOTES.txt with post-install usage instructions

Motivation

This makes it easier to deploy allure-docker-service in Kubernetes environments without having to manually craft manifests, and enables configuration via Helm values.

Copilot AI review requested due to automatic review settings April 29, 2026 18:53

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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.yaml defining 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.

Comment on lines +75 to +79
path: /
port: http
readinessProbe:
httpGet:
path: /

Copilot AI Apr 29, 2026

Copy link

Choose a reason for hiding this comment

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

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).

Suggested change
path: /
port: http
readinessProbe:
httpGet:
path: /
path: /version
port: http
readinessProbe:
httpGet:
path: /version

Copilot uses AI. Check for mistakes.
Comment thread charts/allure-docker-service/templates/ui-deployment.yaml

1. API endpoint:
{{- if .Values.api.ingress.enabled }}
http{{ if .Values.api.ingress.tls }}s{{ end }}://{{ (first .Values.api.ingress.hosts).host }}

Copilot AI Apr 29, 2026

Copy link

Choose a reason for hiding this comment

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

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.

Suggested change
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 }}

Copilot uses AI. Check for mistakes.
Comment on lines +63 to +68
spec:
{{- with .Values.global.image.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ include "allure-docker-service.serviceAccountName" . }}

Copilot AI Apr 29, 2026

Copy link

Choose a reason for hiding this comment

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

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).

Copilot uses AI. Check for mistakes.
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ include "allure-docker-service.serviceAccountName" . }}

Copilot AI Apr 29, 2026

Copy link

Choose a reason for hiding this comment

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

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).

Suggested change
serviceAccountName: {{ include "allure-docker-service.serviceAccountName" . }}
serviceAccountName: {{ include "allure-docker-service.serviceAccountName" . }}
automountServiceAccountToken: {{ .Values.global.serviceAccount.automount }}

Copilot uses AI. Check for mistakes.
Comment thread charts/allure-docker-service/values.yaml
- matches:
- path:
type: PathPrefix
value: /

Copilot AI Apr 29, 2026

Copy link

Choose a reason for hiding this comment

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

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.

Suggested change
value: /
value: /
backendRefs:
- name: allure-docker-service-ui
port: 80

Copilot uses AI. Check for mistakes.
- matches:
- path:
type: PathPrefix
value: /api

Copilot AI Apr 29, 2026

Copy link

Choose a reason for hiding this comment

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

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.

Suggested change
value: /api
value: /allure-docker-service

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants