Skip to content
Helm chart values

Helm chart values

gitlab-achievements-chart

Version: 0.7.1 Type: application AppVersion: 0.6.0

Event-driven achievement awarder for self-hosted GitLab instances

Homepage: https://github.com/BoxBoxJason/gitlab-achievements

Maintainers

NameEmailUrl
BoxBoxJasonhttps://github.com/BoxBoxJason

Source Code

Values

KeyTypeDefaultDescription
affinityobject{}Affinity rules for pod scheduling.
backfillJob.affinityobject{}Affinity rules of the Job’s pod.
backfillJob.backoffLimitint3Retries before the Job is marked failed.
backfillJob.enabledboolfalseRun the historical walk as its own one-off Job, for instances big enough that the cold start shouldn’t happen in the serving pod. Set config.backfill.mode to off with it. The Job is not a Helm hook: it runs once, and re-running means deleting it and upgrading.
backfillJob.forceboolfalseWalk history again even if a previous walk finished.
backfillJob.nodeSelectorobject{}Node selector of the Job’s pod.
backfillJob.podAnnotationsobject{}Annotations added to the Job’s pod.
backfillJob.resourcesobject{}Resource requests and limits of the Job’s pod.
backfillJob.tolerationslist[]Tolerations of the Job’s pod.
backfillJob.ttlSecondsAfterFinishedint86400Seconds a finished Job is kept before cleanup.
config.achievementsNamespacestring""Full path of the namespace that owns the achievement definitions.
config.api.allowedGroupstring""Full path of a GitLab group whose members (and instance admins) may use the API. Empty admits any GitLab user.
config.api.authstring"none"API authentication: none, or gitlab to verify a GitLab token on every request.
config.api.authCacheTTLstring"1m"How long a verified GitLab credential is trusted before GitLab is asked again, which is also how long a revoked token keeps working. 0s disables the cache.
config.api.oauthClientIdstring""Client ID of a hand-registered OAuth application; empty self-registers.
config.api.oauthClientIdRefobject{}{name, key} of a Secret holding the OAuth client ID; wins over oauthClientId.
config.api.returnOriginslist[]Origins besides publicUrl a login may send the browser back to, e.g. a page of your own on another host.
config.api.sessionLifetimestring"168h"How long a browser stays signed in. Sessions renew their GitLab token as it runs out, so this is how often people log in again.
config.backfill.modestring"auto"Cold-start history walk: auto, off or force. Use off when running it as the separate backfillJob rather than in the serving pod.
config.backfill.rateint5Requests per second the historical walk may issue. It also caps the reconciliation sync, as both are instance-wide read sweeps.
config.backfill.sincestring""How far back history is walked: a date (2024-01-01) or a duration (720h). Empty walks everything.
config.exclusions.allowOptOutbooltrueLet users opt themselves out through the API. Needs config.api.auth: gitlab, since the API has to know who is asking.
config.exclusions.botsbooltrueLeave out accounts GitLab flags as bots: access token users, service accounts and GitLab’s own bots.
config.exclusions.usernamePatternstring""Regular expression (RE2); matching usernames are left out.
config.exclusions.userslist[]Usernames or GitLab user IDs to leave out.
config.extraEnvlist[]Extra environment variables, appended last so they override anything above. Standard Kubernetes env entries, so valueFrom works.
config.gitlabUrlstring""Base URL of the GitLab instance to mirror, e.g. https://gitlab.example.com.
config.hookRateint20Groups or projects per second the webhook registration sweep works through.
config.hookScopestring"auto"Webhook scope: auto, group or project. auto picks group hooks where the license allows.
config.logLevelstring"info"Log level: debug, info, warn or error.
config.publicUrlstring""Externally reachable base URL of this app, used for GitLab OAuth redirects.
config.webhookUrlstring""Base URL GitLab uses to deliver webhooks. Empty defaults to publicUrl; set it to a cluster-internal Service URL when GitLab can reach the cluster.
config.reconcile.intervalstring"24h"How often recent activity is re-read.
config.reconcile.lookbackstring"48h"How far back each pass reaches. Must exceed the interval so consecutive windows overlap; the app refuses to start otherwise.
config.reconcile.modestring"auto"Periodic re-read of recent activity, healing webhook deliveries GitLab never made. auto runs it in the serving pod; off disables it, for when you schedule gitlab-achievements reconcile from outside the chart.
deployment.annotationsobject{}Annotations for the deployment
extraVolumeMountslist[]Extra volume mounts added to the app container of the Deployment and of the Jobs. To trust a private CA, mount it and point SSL_CERT_DIR at it through config.extraEnv: Go then trusts it in addition to the image’s bundle (SSL_CERT_FILE would replace the bundle).
extraVolumeslist[]Extra volumes added to the pod of the Deployment and of the backfill and uninstall Jobs, e.g. a ConfigMap holding a private CA. Standard Kubernetes volume entries.
fullnameOverridestring""Overrides the full object name prefix; empty derives it from the release name.
image.pullPolicystring"IfNotPresent"Image pull policy.
image.repositorystring"ghcr.io/boxboxjason/gitlab-achievements"Container image repository.
image.tagstring""Image tag; pin a released version in production, empty uses the chart’s appVersion. A digest may be appended, e.g. 0.3.0@sha256:47c8....
imagePullSecretslist[]Secrets used to pull the image from a private registry.
ingress.annotationsobject{}Ingress annotations.
ingress.classNamestring""IngressClass name.
ingress.enabledboolfalseCreate an Ingress.
ingress.hostslist[{"host":"achievements.example.com","paths":[{"path":"/","pathType":"Prefix"}]}]Hosts and paths the Ingress routes to the app.
ingress.tlslist[]TLS configuration.
livenessProbe.enabledbooltrueEnable the liveness probe.
livenessProbe.failureThresholdint3Failed probes before the container is restarted.
livenessProbe.periodSecondsint10Seconds between probes.
livenessProbe.timeoutSecondsint3Seconds before a probe times out.
metrics.enabledbooltrueServe Prometheus metrics on a port of their own, on a ClusterIP Service of their own, so neither the Ingress nor a LoadBalancer/NodePort app Service ever exposes them. See docs/content/docs/metrics.md.
metrics.portint9464Port the metrics are served on.
metrics.serviceMonitor.enabledboolfalseCreate a ServiceMonitor; requires the Prometheus Operator’s CRDs.
metrics.serviceMonitor.intervalstring"30s"Scrape interval.
metrics.serviceMonitor.labelsobject{}Extra labels, e.g. the release label your Prometheus selects on.
metrics.serviceMonitor.scrapeTimeoutstring"10s"Scrape timeout.
nameOverridestring"gitlab-achievements"Overrides the chart name used in object names and labels.
nodeSelectorobject{}Node selector for pod scheduling.
persistence.accessModestring"ReadWriteOnce"Access mode of the volume.
persistence.enabledbooltrueCreate a PVC for the default SQLite database; disable when the database DSN points elsewhere.
persistence.existingClaimstring""Use an existing claim instead of creating one.
persistence.mountPathstring"/data"Directory the volume is mounted at. The default SQLite DSN points inside it.
persistence.sizestring"1Gi"Size of the volume.
persistence.storageClassNamestring""StorageClass of the volume; empty uses the cluster default.
podAnnotationsobject{}Annotations added to the pod.
podLabelsobject{}Labels added to the pod.
podSecurityContext.fsGroupint1000Group that owns mounted volumes.
podSecurityContext.runAsGroupint1000GID the container runs as.
podSecurityContext.runAsNonRootbooltrueRefuse to start containers running as root.
podSecurityContext.runAsUserint1000UID the container runs as.
podSecurityContext.seccompProfile.typestring"RuntimeDefault"Seccomp profile type.
priorityClassNamestring""PriorityClass of the pod.
readinessProbe.enabledbooltrueEnable the readiness probe.
readinessProbe.failureThresholdint3Failed probes before the pod is marked unready.
readinessProbe.periodSecondsint10Seconds between probes.
readinessProbe.timeoutSecondsint5Seconds before a probe times out.
replicaCountint1Number of replicas. The app is a singleton by design: one process registers the instance’s webhooks, runs the hourly reconciliation sweeps and walks history, so a second replica would duplicate all three against the same GitLab instance.
resources.limits.memorystring"512Mi"Memory limit.
resources.requests.cpustring"50m"CPU request.
resources.requests.memorystring"128Mi"Memory request.
secrets.existingSecretstring""Name of a Secret loaded with envFrom. Keys must be GITLAB_READ_TOKEN, GITLAB_WRITE_TOKEN, WEBHOOK_SECRET, DATABASE_DSN, and OAUTH_CLIENT_SECRET / SESSION_SECRET if used.
secrets.refsobject{}Per-credential {name, key} of any Secret; wins over existingSecret. Keys: gitlabReadToken, gitlabWriteToken, webhookSecret, databaseDsn, oauthClientSecret, sessionSecret (required when config.api.auth is gitlab).
securityContext.allowPrivilegeEscalationboolfalseForbid gaining more privileges than the parent process.
securityContext.capabilities.droplist["ALL"]Linux capabilities to drop.
securityContext.privilegedboolfalseRun the container privileged.
securityContext.readOnlyRootFilesystembooltrueMount the root filesystem read-only.
service.annotationsobject{}Service annotations.
service.portint8080Service port.
service.typestring"ClusterIP"Service type.
serviceAccount.annotationsobject{}ServiceAccount annotations.
serviceAccount.automountServiceAccountTokenboolfalseMount the API token into pods; the app never talks to the Kubernetes API.
serviceAccount.createbooltrueCreate a ServiceAccount.
serviceAccount.namestring""ServiceAccount name; empty derives it from the release name.
startupProbe.enabledbooltrueEnable the startup probe.
startupProbe.failureThresholdint60Failed probes before the container is restarted.
startupProbe.periodSecondsint10Seconds between probes.
startupProbe.timeoutSecondsint3Seconds before a probe times out.
strategyobject{"type":"Recreate"}Deployment strategy; Recreate so two pods never overlap during a rollout.
terminationGracePeriodSecondsint60Seconds granted on shutdown to drain webhook deliveries GitLab was already told succeeded.
tolerationslist[]Tolerations for pod scheduling.
uninstallJob.affinityobject{}Affinity rules of the Job’s pod.
uninstallJob.backoffLimitint3Retries before the Job is marked failed.
uninstallJob.dryRunboolfalseReport what would be removed and call nothing; worth a run of its own first.
uninstallJob.enabledboolfalseRun the Job that removes the app’s webhooks and achievements from GitLab. Read the comment above in values.yaml before enabling.
uninstallJob.keepAchievementsboolfalseRemove only the webhooks, leaving people the badges they earned.
uninstallJob.nodeSelectorobject{}Node selector of the Job’s pod.
uninstallJob.podAnnotationsobject{}Annotations added to the Job’s pod.
uninstallJob.resourcesobject{}Resource requests and limits of the Job’s pod.
uninstallJob.sweepboolfalseAlso enumerate the instance for hooks and achievements the app has no record of, for a lost or restored database. Walks every group or project, so it is not the default.
uninstallJob.tolerationslist[]Tolerations of the Job’s pod.
uninstallJob.ttlSecondsAfterFinishedint86400Seconds a finished Job is kept. Keep it long enough to read the logs, the only report of what was removed and what was left behind.