diff --git a/.vscode/sourcebot.code-workspace b/.vscode/sourcebot.code-workspace index 1031ea086..71d830764 100644 --- a/.vscode/sourcebot.code-workspace +++ b/.vscode/sourcebot.code-workspace @@ -5,6 +5,9 @@ }, { "path": "../vendor/zoekt" + }, + { + "path": "../../sourcebot-helm-chart" } ], "settings": { diff --git a/kubernetes/chart/.helmignore b/kubernetes/chart/.helmignore deleted file mode 100644 index 0e8a0eb36..000000000 --- a/kubernetes/chart/.helmignore +++ /dev/null @@ -1,23 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/kubernetes/chart/Chart.lock b/kubernetes/chart/Chart.lock deleted file mode 100644 index a16ac8f4e..000000000 --- a/kubernetes/chart/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: postgresql - repository: https://charts.bitnami.com/bitnami - version: 16.7.27 -digest: sha256:ab3541612e8857c2d08d46f83cab79fa87b6ae6148e2d64d7d2b06729a520ce1 -generated: "2025-09-25T12:57:56.528976+01:00" diff --git a/kubernetes/chart/Chart.yaml b/kubernetes/chart/Chart.yaml deleted file mode 100644 index 81682c8e2..000000000 --- a/kubernetes/chart/Chart.yaml +++ /dev/null @@ -1,20 +0,0 @@ -apiVersion: v2 -type: application -name: sourcebot -version: 0.1.0 -appVersion: v4.5.1 -description: The open source Sourcegraph alternative. Sourcebot gives you a powerful interface to search though all your repos and branches across multiple code hosts. -icon: https://raw.githubusercontent.com/sourcebot-dev/sourcebot/ebf6721836b8f878d42bb8c1e844bdc7867a74fe/packages/web/public/logo_512.png -keywords: - - code-search - - code-intelligence - - sourcebot -home: https://sourcebot.dev/ -sources: - - https://github.com/sourcebot-dev/sourcebot - - https://github.com/sourcebot-dev/sourcebot/kubernetes/chart -dependencies: - - name: postgresql - version: 16.7.27 - repository: https://charts.bitnami.com/bitnami - condition: postgresql.enabled diff --git a/kubernetes/chart/README.md b/kubernetes/chart/README.md deleted file mode 100644 index 60da92662..000000000 --- a/kubernetes/chart/README.md +++ /dev/null @@ -1,92 +0,0 @@ -# sourcebot - -![Version: 0.1.0](https://img.shields.io/badge/Version-0.1.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v4.5.1](https://img.shields.io/badge/AppVersion-v4.5.1-informational?style=flat-square) - -The open source Sourcegraph alternative. Sourcebot gives you a powerful interface to search though all your repos and branches across multiple code hosts. - -**Homepage:** - -## Source Code - -* -* - -## Requirements - -| Repository | Name | Version | -|------------|------|---------| -| https://charts.bitnami.com/bitnami | postgresql | 16.7.27 | - -## Values - -| Key | Type | Default | Description | -|-----|------|---------|-------------| -| additionalLabels | object | `{}` | Add extra labels to all resources. | -| affinity | object | `{}` | Set affinity rules for pod scheduling. Defaults to soft anti-affinity if not set. See: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ | -| args | list | `[]` | Override the default arguments of the container. | -| command | list | `[]` | Override the default command of the container. | -| config | object | `{"$schema":"https://raw.githubusercontent.com/sourcebot-dev/sourcebot/main/schemas/v3/index.json","connections":{},"settings":{}}` | Configure Sourcebot-specific application settings. | -| containerSecurityContext | object | `{}` | Set the container-level security context. | -| database | object | `{}` | Configure the database secret by providing database.secretName and database.secretKey to use a Kubernetes secret. | -| envSecrets | list | `[]` | Set environment variables from Kubernetes secrets. | -| envs | list | `[]` | Set additional environment variables. | -| fullnameOverride | string | `""` | Override the full name of the chart. | -| image | object | `{"pullPolicy":"IfNotPresent","repository":"ghcr.io/sourcebot-dev/sourcebot"}` | Configure the container image. | -| image.pullPolicy | string | `"IfNotPresent"` | Image pull policy. | -| image.repository | string | `"ghcr.io/sourcebot-dev/sourcebot"` | Container image repository. | -| imagePullSecrets | list | `[]` | Configure image pull secrets for private registries. | -| ingress | object | `{"annotations":{},"className":"","enabled":false,"hosts":[],"tls":[]}` | Configure ingress for Sourcebot. | -| ingress.annotations | object | `{}` | Ingress annotations. | -| ingress.className | string | `""` | Ingress class name. | -| ingress.enabled | bool | `false` | Enable or disable ingress. | -| ingress.hosts | list | `[]` | List of hostnames and paths for ingress rules. The first host will be used as the default host. | -| ingress.tls | list | `[]` | TLS settings for ingress. | -| initContainers | list | `[]` | Configure init containers to run before the main container. | -| license | object | `{}` | Configure the enterprise license key secret by providing license.secretName and license.secretKey to use a Kubernetes secret. | -| livenessProbe | object | `{"failureThreshold":5,"httpGet":{"path":"/","port":"http"},"initialDelaySeconds":10,"periodSeconds":10}` | Liveness probe to check if the container is alive. | -| livenessProbe.failureThreshold | int | `5` | Number of consecutive failures before marking the container as unhealthy. | -| livenessProbe.httpGet | object | `{"path":"/","port":"http"}` | Http GET request to check if the container is alive. | -| livenessProbe.httpGet.path | string | `"/"` | Path to check. | -| livenessProbe.httpGet.port | string | `"http"` | Port to check. | -| livenessProbe.initialDelaySeconds | int | `10` | Initial delay before the first probe. | -| livenessProbe.periodSeconds | int | `10` | Frequency of the probe. | -| nameOverride | string | `""` | Override the name of the chart. | -| nodeSelector | object | `{}` | Set node selector constraints. See: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector | -| podAnnotations | object | `{}` | Add annotations to the pod metadata. | -| podDisruptionBudget | object | `{"enabled":true,"maxUnavailable":1,"minAvailable":1}` | Configure Pod Disruption Budget. | -| podDisruptionBudget.enabled | bool | `true` | Enable Pod Disruption Budget. | -| podDisruptionBudget.maxUnavailable | int | `1` | Maximum number of pods that can be unavailable. | -| podDisruptionBudget.minAvailable | int | `1` | Minimum number of pods that must be available. | -| podSecurityContext | object | `{}` | Set the pod-level security context. | -| postgresql | object | `{"enabled":false}` | Configure the Bitnami PostgreSQL sub-chart. See: https://artifacthub.io/packages/helm/bitnami/postgresql | -| priorityClassName | string | `""` | Set the priority class name for pods. See: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/ | -| readinessProbe | object | `{"failureThreshold":5,"httpGet":{"path":"/","port":"http"},"initialDelaySeconds":10,"periodSeconds":10}` | Readiness probe to check if the container is ready to serve traffic. | -| readinessProbe.failureThreshold | int | `5` | Number of consecutive failures before marking the container as not ready. | -| readinessProbe.httpGet | object | `{"path":"/","port":"http"}` | Http GET request to check if the container is ready. | -| readinessProbe.httpGet.path | string | `"/"` | Path to check. | -| readinessProbe.httpGet.port | string | `"http"` | Port to check. | -| readinessProbe.initialDelaySeconds | int | `10` | Initial delay before the first probe. | -| readinessProbe.periodSeconds | int | `10` | Frequency of the probe. | -| redis | object | `{}` | Configure the Redis secret by providing redis.secretName and redis.secretKey to use a Kubernetes secret. | -| replicaCount | int | `1` | Set the number of replicas for the deployment. | -| resources | object | `{}` | Configure resource requests and limits for the container. | -| service | object | `{"annotations":{},"containerPort":3000,"port":3000,"type":"ClusterIP"}` | Configure the Sourcebot Kubernetes service. | -| service.annotations | object | `{}` | Service annotations. | -| service.containerPort | int | `3000` | Internal container port. | -| service.port | int | `3000` | External service port. | -| service.type | string | `"ClusterIP"` | Type of the Kubernetes service (e.g., ClusterIP, NodePort, LoadBalancer). | -| serviceAccount | object | `{"annotations":{},"automount":false,"create":true,"name":""}` | Configure the ServiceAccount. | -| serviceAccount.annotations | object | `{}` | Add annotations to the ServiceAccount. | -| serviceAccount.automount | bool | `false` | Enable or disable automatic ServiceAccount mounting. | -| serviceAccount.create | bool | `true` | Create a new ServiceAccount. | -| serviceAccount.name | string | `""` | Use an existing ServiceAccount (if set). | -| startupProbe | object | `{"failureThreshold":30,"httpGet":{"path":"/","port":"http"},"periodSeconds":30}` | Startup probe to check if the container has started successfully. | -| startupProbe.failureThreshold | int | `30` | Number of seconds to wait before starting the probe. | -| startupProbe.httpGet | object | `{"path":"/","port":"http"}` | Http GET request to check if the container has started. | -| startupProbe.httpGet.path | string | `"/"` | Path to check. | -| startupProbe.httpGet.port | string | `"http"` | Port to check. | -| startupProbe.periodSeconds | int | `30` | Initial delay before the first probe. | -| tolerations | list | `[]` | Set tolerations for pod scheduling. See: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ | -| volumeMounts | list | `[]` | Define volume mounts for the container. See: https://kubernetes.io/docs/concepts/storage/volumes/ | -| volumes | list | `[]` | Define additional volumes. See: https://kubernetes.io/docs/concepts/storage/volumes/ | - diff --git a/kubernetes/chart/templates/NOTES.txt b/kubernetes/chart/templates/NOTES.txt deleted file mode 100644 index 2adfa79c2..000000000 --- a/kubernetes/chart/templates/NOTES.txt +++ /dev/null @@ -1,22 +0,0 @@ -1. Get the application URL by running these commands: -{{- if $.Values.ingress.enabled }} -{{- range $host := $.Values.ingress.hosts }} - {{- range .paths }} - http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} - {{- end }} -{{- end }} -{{- else if contains "NodePort" $.Values.service.type }} - export NODE_PORT=$(kubectl get --namespace {{ $.Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "sourcebot.fullname" $ }}) - export NODE_IP=$(kubectl get nodes --namespace {{ $.Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") - echo http://$NODE_IP:$NODE_PORT -{{- else if contains "LoadBalancer" $.Values.service.type }} - NOTE: It may take a few minutes for the LoadBalancer IP to be available. - You can watch its status by running 'kubectl get --namespace {{ $.Release.Namespace }} svc -w {{ include "sourcebot.fullname" $ }}' - export SERVICE_IP=$(kubectl get svc --namespace {{ $.Release.Namespace }} {{ include "sourcebot.fullname" $ }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") - echo http://$SERVICE_IP:{{ $.Values.service.port }} -{{- else if contains "ClusterIP" $.Values.service.type }} - export POD_NAME=$(kubectl get pods --namespace {{ $.Release.Namespace }} -l "app.kubernetes.io/name={{ include "sourcebot.name" $ }},app.kubernetes.io/instance={{ $.Release.Name }}" -o jsonpath="{.items[0].metadata.name}") - export CONTAINER_PORT=$(kubectl get pod --namespace {{ $.Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") - echo "Visit http://127.0.0.1:3000 to use Sourcebot after forwarding" - kubectl --namespace {{ $.Release.Namespace }} port-forward $POD_NAME 3000:$CONTAINER_PORT -{{- end }} diff --git a/kubernetes/chart/templates/_helpers.tpl b/kubernetes/chart/templates/_helpers.tpl deleted file mode 100644 index 7ff85c01a..000000000 --- a/kubernetes/chart/templates/_helpers.tpl +++ /dev/null @@ -1,78 +0,0 @@ -{{/* -Expand the name of the chart. -*/}} -{{- define "sourcebot.name" -}} -{{- default $.Chart.Name $.Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "sourcebot.fullname" -}} -{{- if $.Values.fullnameOverride }} -{{- $.Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- $name := default $.Chart.Name $.Values.nameOverride }} -{{- if contains $name $.Release.Name }} -{{- $.Release.Name | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- printf "%s-%s" $.Release.Name $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "sourcebot.chart" -}} -{{- printf "%s-%s" $.Chart.Name $.Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "sourcebot.labels" -}} -helm.sh/chart: {{ include "sourcebot.chart" $ }} -{{ include "sourcebot.selectorLabels" $ }} -{{- if $.Chart.AppVersion }} -app.kubernetes.io/version: {{ $.Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ $.Release.Service }} -{{- with $.Values.additionalLabels }} -{{ toYaml . }} -{{- end }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "sourcebot.selectorLabels" -}} -app.kubernetes.io/name: {{ include "sourcebot.name" $ }} -app.kubernetes.io/instance: {{ $.Release.Name }} -{{- end }} - -{{/* -Create the image to use for the container. -*/}} -{{- define "sourcebot.image" -}} -{{- if $.Values.image.digest -}} -"{{ $.Values.image.repository }}@{{ $.Values.image.digest }}" -{{- else if $.Values.image.tag -}} -"{{ $.Values.image.repository }}:{{ $.Values.image.tag }}" -{{- else -}} -"{{ $.Values.image.repository }}:{{ $.Chart.AppVersion }}" -{{- end -}} -{{- end }} - -{{/* -Create the name of the service account to use -*/}} -{{- define "sourcebot.serviceAccountName" -}} -{{- if $.Values.serviceAccount.create }} -{{- default (include "sourcebot.fullname" $) $.Values.serviceAccount.name }} -{{- else }} -{{- default "default" $.Values.serviceAccount.name }} -{{- end }} -{{- end }} diff --git a/kubernetes/chart/templates/config.yaml b/kubernetes/chart/templates/config.yaml deleted file mode 100644 index 43cbf16e6..000000000 --- a/kubernetes/chart/templates/config.yaml +++ /dev/null @@ -1,10 +0,0 @@ ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "sourcebot.fullname" $ }} - labels: - {{- include "sourcebot.labels" $ | nindent 4 }} -data: - config.json: | - {{- toJson $.Values.config | nindent 4 }} diff --git a/kubernetes/chart/templates/deployment.yaml b/kubernetes/chart/templates/deployment.yaml deleted file mode 100644 index 2efd55f91..000000000 --- a/kubernetes/chart/templates/deployment.yaml +++ /dev/null @@ -1,142 +0,0 @@ ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "sourcebot.fullname" $ }} - labels: - {{- include "sourcebot.labels" $ | nindent 4 }} -spec: - replicas: {{ $.Values.replicaCount }} - selector: - matchLabels: - {{- include "sourcebot.selectorLabels" $ | nindent 6 }} - template: - metadata: - {{- with $.Values.podAnnotations }} - annotations: - {{- toYaml . | nindent 8 }} - {{- end }} - labels: - {{- include "sourcebot.labels" $ | nindent 8 }} - {{- with $.Values.podLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - spec: - {{- with $.Values.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: {{ include "sourcebot.serviceAccountName" $ }} - {{- with $.Values.podSecurityContext }} - securityContext: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $.Values.initContainers }} - initContainers: - {{- toYaml . | nindent 8 }} - {{- end }} - containers: - - name: {{ .Chart.Name }} - {{- with $.Values.containerSecurityContext }} - securityContext: - {{- toYaml . | nindent 12 }} - {{- end }} - image: {{ include "sourcebot.image" $ }} - imagePullPolicy: {{ $.Values.image.pullPolicy }} - {{- with $.Values.command }} - command: {{ toYaml . | nindent 12 }} - {{- end }} - {{- with $.Values.args }} - args: {{ toYaml . | nindent 12 }} - {{- end }} - env: - {{- if and $.Values.ingress.enabled (gt len ($.Values.ingress.hosts) 0) }} - - name: AUTH_URL - value: {{ (index $.Values.ingress.hosts 0).host | printf "https://%s" }} - {{- end }} - - name: CONFIG_PATH - value: /etc/sourcebot/config.json - {{- if $.Values.license }} - - name: SOURCEBOT_EE_LICENSE_KEY - valueFrom: - secretKeyRef: - name: {{ $.Values.license.secretName }} - key: {{ $.Values.license.secretKey }} - {{- end }} - {{- if $.Values.database }} - - name: DATABASE_URL - valueFrom: - secretKeyRef: - name: {{ $.Values.database.secretName }} - key: {{ $.Values.database.secretKey }} - {{- end }} - {{- if $.Values.redis }} - - name: REDIS_URL - valueFrom: - secretKeyRef: - name: {{ $.Values.redis.secretName }} - key: {{ $.Values.redis.secretKey }} - {{- end }} - {{- range $.Values.envSecrets }} - - name: {{ .envName }} - valueFrom: - secretKeyRef: - name: {{ .secretName }} - key: {{ .secretKey }} - {{- end }} - {{- with $.Values.envs }} - {{- toYaml . | nindent 12 }} - {{- end }} - ports: - - name: http - containerPort: {{ $.Values.service.containerPort }} - protocol: TCP - {{- with $.Values.livenessProbe }} - livenessProbe: - {{- toYaml . | nindent 12 }} - {{- end }} - {{- with $.Values.readinessProbe }} - readinessProbe: - {{- toYaml . | nindent 12 }} - {{- end }} - {{- with $.Values.startupProbe }} - startupProbe: - {{- toYaml . | nindent 12 }} - {{- end }} - {{- with $.Values.resources }} - resources: - {{- toYaml . | nindent 12 }} - {{- end }} - volumeMounts: - - name: sourcebot-config - mountPath: /etc/sourcebot/config.json - subPath: config.json - readOnly: true - {{- with $.Values.volumeMounts }} - {{- toYaml . | nindent 12 }} - {{- end }} - {{- with $.Values.priorityClassName }} - priorityClassName: {{ . }} - {{- end }} - volumes: - - name: sourcebot-config - configMap: - name: {{ include "sourcebot.fullname" $ }} - items: - - key: config.json - path: config.json - {{- with $.Values.volumes }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $.Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $.Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with $.Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/kubernetes/chart/templates/ingress.yaml b/kubernetes/chart/templates/ingress.yaml deleted file mode 100644 index e0f563e78..000000000 --- a/kubernetes/chart/templates/ingress.yaml +++ /dev/null @@ -1,44 +0,0 @@ -{{- if $.Values.ingress.enabled -}} ---- -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: {{ include "sourcebot.fullname" $ }} - labels: - {{- include "sourcebot.labels" $ | nindent 4 }} - {{- with $.Values.ingress.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - {{- with $.Values.ingress.className }} - ingressClassName: {{ . }} - {{- end }} - {{- if $.Values.ingress.tls }} - tls: - {{- range $.Values.ingress.tls }} - - hosts: - {{- range .hosts }} - - {{ . | quote }} - {{- end }} - secretName: {{ .secretName }} - {{- end }} - {{- end }} - rules: - {{- range $.Values.ingress.hosts }} - - host: {{ .host | quote }} - http: - paths: - {{- range .paths }} - - path: {{ .path }} - {{- with .pathType }} - pathType: {{ . }} - {{- end }} - backend: - service: - name: {{ include "sourcebot.fullname" $ }} - port: - number: {{ $.Values.service.port }} - {{- end }} - {{- end }} -{{- end }} diff --git a/kubernetes/chart/templates/pdb.yaml b/kubernetes/chart/templates/pdb.yaml deleted file mode 100644 index 1cc85f512..000000000 --- a/kubernetes/chart/templates/pdb.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if and $.Values.podDisruptionBudget.enabled (gt (int $.Values.replicaCount) 1) }} -apiVersion: {{ include "common.capabilities.policy.apiVersion" . }} -kind: PodDisruptionBudget -metadata: - name: {{ include "sourcebot.fullname" $ }} - labels: - {{- include "sourcebot.labels" $ | nindent 4 }} -spec: - {{- if $.Values.podDisruptionBudget.minAvailable }} - minAvailable: {{ $.Values.podDisruptionBudget.minAvailable }} - {{- end }} - {{- if $.Values.podDisruptionBudget.maxUnavailable }} - maxUnavailable: {{ $.Values.podDisruptionBudget.maxUnavailable }} - {{- end }} - selector: - matchLabels: - {{- include "sourcebot.selectorLabels" $ | nindent 6 }} -{{- end }} diff --git a/kubernetes/chart/templates/service.yaml b/kubernetes/chart/templates/service.yaml deleted file mode 100644 index 8c9c5bb0d..000000000 --- a/kubernetes/chart/templates/service.yaml +++ /dev/null @@ -1,16 +0,0 @@ ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ include "sourcebot.fullname" $ }} - labels: - {{- include "sourcebot.labels" $ | nindent 4 }} -spec: - type: {{ $.Values.service.type }} - ports: - - port: {{ $.Values.service.port }} - targetPort: http - protocol: TCP - name: http - selector: - {{- include "sourcebot.selectorLabels" $ | nindent 4 }} diff --git a/kubernetes/chart/templates/serviceaccount.yaml b/kubernetes/chart/templates/serviceaccount.yaml deleted file mode 100644 index fcf0a219b..000000000 --- a/kubernetes/chart/templates/serviceaccount.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{- if $.Values.serviceAccount.create -}} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "sourcebot.serviceAccountName" . }} - labels: - {{- include "sourcebot.labels" . | nindent 4 }} - {{- with $.Values.serviceAccount.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -automountServiceAccountToken: {{ $.Values.serviceAccount.automount }} -{{- end }} diff --git a/kubernetes/chart/values.schema.json b/kubernetes/chart/values.schema.json deleted file mode 100644 index 10832e638..000000000 --- a/kubernetes/chart/values.schema.json +++ /dev/null @@ -1,460 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Sourcebot Helm Chart Values Schema", - "additionalProperties": false, - "type": "object", - "properties": { - "nameOverride": { - "type": "string" - }, - "fullnameOverride": { - "type": "string" - }, - "replicaCount": { - "type": "integer", - "minimum": 1 - }, - "image": { - "type": "object", - "properties": { - "repository": { - "type": "string" - }, - "tag": { - "type": "string" - }, - "digest": { - "type": "string" - }, - "pullPolicy": { - "type": "string", - "enum": [ - "Always", - "IfNotPresent", - "Never" - ] - } - }, - "required": [ - "repository" - ] - }, - "imagePullSecrets": { - "type": "array", - "items": { - "type": "string" - } - }, - "command": { - "type": "array", - "items": { - "type": "string" - } - }, - "args": { - "type": "array", - "items": { - "type": "string" - } - }, - "database": { - "type": "object" - }, - "redis": { - "type": "object" - }, - "license": { - "type": "object" - }, - "envSecrets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "secretName": { - "type": "string" - }, - "secretKey": { - "type": "string" - }, - "envName": { - "type": "string" - } - }, - "required": [ - "secretName", - "secretKey", - "envName" - ] - } - }, - "envs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "name", - "value" - ] - } - }, - "config": { - "type": "object", - "properties": { - "connections": { - "type": "object" - }, - "settings": { - "type": "object" - } - } - }, - "serviceAccount": { - "type": "object", - "properties": { - "create": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "annotations": { - "type": "object" - }, - "automount": { - "type": "boolean" - } - } - }, - "podSecurityContext": { - "type": "object", - "properties": { - "runAsUser": { - "type": "integer" - }, - "runAsGroup": { - "type": "integer" - }, - "runAsNonRoot": { - "type": "boolean" - }, - "fsGroup": { - "type": "integer" - } - } - }, - "containerSecurityContext": { - "type": "object", - "properties": { - "allowPrivilegeEscalation": { - "type": "boolean" - }, - "privileged": { - "type": "boolean" - }, - "readOnlyRootFilesystem": { - "type": "boolean" - }, - "runAsUser": { - "type": "integer" - }, - "runAsGroup": { - "type": "integer" - }, - "capabilities": { - "type": "object", - "properties": { - "drop": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "seccompProfile": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "RuntimeDefault", - "Unconfined", - "Localhost" - ] - } - } - } - } - }, - "service": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "ClusterIP", - "NodePort", - "LoadBalancer", - "ExternalName" - ] - }, - "containerPort": { - "type": "integer" - }, - "port": { - "type": "integer" - }, - "annotations": { - "type": "object" - } - } - }, - "ingress": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean" - }, - "className": { - "type": "string" - }, - "annotations": { - "type": "object" - }, - "hosts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "host": { - "type": "string" - }, - "paths": { - "type": "array", - "items": { - "type": "object", - "properties": { - "path": { - "type": "string" - }, - "pathType": { - "type": "string", - "enum": [ - "ImplementationSpecific", - "Exact", - "Prefix" - ] - } - } - } - } - } - }, - "tls": { - "type": "object", - "properties": { - "secretName": { - "type": "string" - }, - "hosts": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "secretName", - "hosts" - ] - } - } - } - }, - "initContainers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "image": { - "type": "string" - }, - "args": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - "resources": { - "type": "object", - "properties": { - "limits": { - "type": "object", - "properties": { - "cpu": { - "type": "string" - }, - "memory": { - "type": "string" - } - } - }, - "requests": { - "type": "object", - "properties": { - "cpu": { - "type": "string" - }, - "memory": { - "type": "string" - } - } - } - } - }, - "livenessProbe": { - "$ref": "#/definitions/probe" - }, - "readinessProbe": { - "$ref": "#/definitions/probe" - }, - "startupProbe": { - "$ref": "#/definitions/probe" - }, - "volumes": { - "type": "array", - "items": { - "type": "object" - } - }, - "volumeMounts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "mountPath": { - "type": "string" - }, - "readOnly": { - "type": "boolean" - } - } - } - }, - "podDisruptionBudget": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean" - }, - "minAvailable": { - "type": [ - "integer", - "string" - ] - }, - "maxUnavailable": { - "type": [ - "integer", - "string" - ] - } - } - }, - "podAnnotations": { - "type": "object" - }, - "additionalLabels": { - "type": "object" - }, - "nodeSelector": { - "type": "object" - }, - "tolerations": { - "type": "array", - "items": { - "type": "object" - } - }, - "affinity": { - "type": "object" - }, - "priorityClassName": { - "type": "string" - }, - "postgresql": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean" - } - }, - "required": [ - "enabled" - ] - } - }, - "definitions": { - "probe": { - "type": "object", - "properties": { - "httpGet": { - "type": "object", - "properties": { - "path": { - "type": "string" - }, - "port": { - "type": [ - "string", - "integer" - ] - } - }, - "required": [ - "path", - "port" - ] - }, - "initialDelaySeconds": { - "type": "integer", - "minimum": 0 - }, - "periodSeconds": { - "type": "integer", - "minimum": 1 - }, - "timeoutSeconds": { - "type": "integer", - "minimum": 1 - }, - "successThreshold": { - "type": "integer", - "minimum": 1 - }, - "failureThreshold": { - "type": "integer", - "minimum": 1 - } - } - } - } -} diff --git a/kubernetes/chart/values.yaml b/kubernetes/chart/values.yaml deleted file mode 100644 index e095fc9bf..000000000 --- a/kubernetes/chart/values.yaml +++ /dev/null @@ -1,260 +0,0 @@ -# -- Sourcebot Helm Chart Values - -# -- Override the name of the chart. -nameOverride: "" - -# -- Override the full name of the chart. -fullnameOverride: "" - -# -- Set the number of replicas for the deployment. -replicaCount: 1 - -# -- Configure the container image. -image: - # -- Container image repository. - repository: ghcr.io/sourcebot-dev/sourcebot - # -- Container image tag. - # tag: "" - # -- Container image digest (used instead of tag if set). - # digest: "" - # -- Image pull policy. - pullPolicy: IfNotPresent - -# -- Configure image pull secrets for private registries. -imagePullSecrets: [] - -# -- Override the default command of the container. -command: [] - -# -- Override the default arguments of the container. -args: [] - -# -- Configure the database secret by providing database.secretName and database.secretKey to use a Kubernetes secret. -database: {} -# secretName: sourcebot-database-url -# secretKey: url - -# -- Configure the Redis secret by providing redis.secretName and redis.secretKey to use a Kubernetes secret. -redis: {} -# secretName: sourcebot-redis-url -# secretKey: url - -# -- Configure the enterprise license key secret by providing license.secretName and license.secretKey to use a Kubernetes secret. -license: {} -# secretName: sourcebot-ee-license-key -# secretKey: key - -# -- Set environment variables from Kubernetes secrets. -envSecrets: [] -# - secretName: sourcebot-github-token -# secretKey: token -# envName: GITHUB_TOKEN - -# -- Set additional environment variables. -envs: [] -# # Disable sourcebot telemetry. -# - name: SOURCEBOT_TELEMETRY_DISABLED -# value: "1" - -# -- Configure Sourcebot-specific application settings. -config: - # Schema version of the Sourcebot configuration. - $schema: https://raw.githubusercontent.com/sourcebot-dev/sourcebot/main/schemas/v3/index.json - connections: {} - # github-repos: - # type: github - # token: - # env: GITHUB_TOKEN - # repos: - # - sourcebot/sourcebot - # - sourcebot/sourcebot-plugins - settings: {} - # reindexIntervalMs: 86400000 - # enablePublicAccess: true - -# -- Configure the ServiceAccount. -serviceAccount: - # -- Create a new ServiceAccount. - create: true - # -- Use an existing ServiceAccount (if set). - name: "" - # -- Add annotations to the ServiceAccount. - annotations: {} - # -- Enable or disable automatic ServiceAccount mounting. - automount: false - -# -- Set the pod-level security context. -podSecurityContext: {} -# runAsUser: 1000 -# runAsGroup: 1000 -# runAsNonRoot: true -# fsGroup: 1000 - -# -- Set the container-level security context. -containerSecurityContext: {} -# allowPrivilegeEscalation: false -# privileged: false -# readOnlyRootFilesystem: true -# runAsUser: 1000 -# runAsGroup: 1000 -# capabilities: -# drop: -# - ALL -# seccompProfile: -# type: RuntimeDefault - -# -- Configure the Sourcebot Kubernetes service. -service: - # -- Type of the Kubernetes service (e.g., ClusterIP, NodePort, LoadBalancer). - type: ClusterIP - # -- Internal container port. - containerPort: 3000 - # -- External service port. - port: 3000 - # -- Service annotations. - annotations: {} - -# -- Configure ingress for Sourcebot. -ingress: - # -- Enable or disable ingress. - enabled: false - # -- Ingress class name. - className: "" - # -- Ingress annotations. - annotations: {} - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" - - # -- List of hostnames and paths for ingress rules. The first host will be used as the default host. - hosts: [] - # - host: chart-example.local - # paths: - # - path: / - # pathType: ImplementationSpecific - - # -- TLS settings for ingress. - tls: [] - # - hosts: - # - chart-example.local - # secretName: chart-example-tls - -# -- Configure init containers to run before the main container. -initContainers: [] -# - name: sleeper -# image: busybox -# args: -# - sleep -# - "10" - -# -- Configure resource requests and limits for the container. -resources: {} -## It is recommended to set resources explicitly in production environments. -# limits: -# cpu: 100m -# memory: 128Mi -# requests: -# cpu: 100m -# memory: 128Mi - -# -- Liveness probe to check if the container is alive. -livenessProbe: - # -- Http GET request to check if the container is alive. - httpGet: - # -- Path to check. - path: / - # -- Port to check. - port: http - # -- Initial delay before the first probe. - initialDelaySeconds: 10 - # -- Frequency of the probe. - periodSeconds: 10 - # -- Number of consecutive failures before marking the container as unhealthy. - failureThreshold: 5 - -# -- Readiness probe to check if the container is ready to serve traffic. -readinessProbe: - # -- Http GET request to check if the container is ready. - httpGet: - # -- Path to check. - path: / - # -- Port to check. - port: http - # -- Initial delay before the first probe. - initialDelaySeconds: 10 - # -- Frequency of the probe. - periodSeconds: 10 - # -- Number of consecutive failures before marking the container as not ready. - failureThreshold: 5 - -# -- Startup probe to check if the container has started successfully. -startupProbe: - # -- Http GET request to check if the container has started. - httpGet: - # -- Path to check. - path: / - # -- Port to check. - port: http - # -- Number of seconds to wait before starting the probe. - failureThreshold: 30 - # -- Initial delay before the first probe. - periodSeconds: 30 - -# -- Define additional volumes. -# See: https://kubernetes.io/docs/concepts/storage/volumes/ -volumes: [] -# - name: foo -# secret: -# secretName: mysecret -# optional: false - -# -- Define volume mounts for the container. -# See: https://kubernetes.io/docs/concepts/storage/volumes/ -volumeMounts: [] -# - name: foo -# mountPath: "/etc/foo" -# readOnly: true - -# -- Configure Pod Disruption Budget. -podDisruptionBudget: - # -- Enable Pod Disruption Budget. - enabled: true - # -- Minimum number of pods that must be available. - minAvailable: 1 - # -- Maximum number of pods that can be unavailable. - maxUnavailable: 1 - -# -- Add annotations to the pod metadata. -podAnnotations: {} -# prometheus.io/scrape: "true" -# prometheus.io/path: "/metrics" -# prometheus.io/port: "9102" - -# -- Add extra labels to all resources. -additionalLabels: {} -# team: sourcebot - -# -- Set node selector constraints. -# See: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector -nodeSelector: {} - -# -- Set tolerations for pod scheduling. -# See: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ -tolerations: [] -# - effect: NoSchedule -# key: "key" -# operator: Equal -# value: "value" - -# -- Set affinity rules for pod scheduling. -# Defaults to soft anti-affinity if not set. -# See: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ -affinity: {} - -# -- Set the priority class name for pods. -# See: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/ -priorityClassName: "" - -# -- Configure the Bitnami PostgreSQL sub-chart. -# See: https://artifacthub.io/packages/helm/bitnami/postgresql -postgresql: - enabled: false