mirror of
https://github.com/sourcebot-dev/sourcebot.git
synced 2025-12-16 14:25:22 +00:00
feat: add helm chart
Signed-off-by: Andre Nogueira <andre.nogueira@mollie.com>
This commit is contained in:
parent
8060adee73
commit
4439beed3d
14 changed files with 1235 additions and 0 deletions
23
kubernetes/chart/.helmignore
Normal file
23
kubernetes/chart/.helmignore
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
# 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/
|
||||||
15
kubernetes/chart/Chart.yaml
Normal file
15
kubernetes/chart/Chart.yaml
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
apiVersion: v2
|
||||||
|
type: application
|
||||||
|
name: sourcebot
|
||||||
|
version: 0.1.0
|
||||||
|
appVersion: ""
|
||||||
|
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
|
||||||
92
kubernetes/chart/README.md
Normal file
92
kubernetes/chart/README.md
Normal file
|
|
@ -0,0 +1,92 @@
|
||||||
|
# sourcebot
|
||||||
|
|
||||||
|
 
|
||||||
|
|
||||||
|
The open source Sourcegraph alternative. Sourcebot gives you a powerful interface to search though all your repos and branches across multiple code hosts.
|
||||||
|
|
||||||
|
**Homepage:** <https://sourcebot.dev/>
|
||||||
|
|
||||||
|
## Source Code
|
||||||
|
|
||||||
|
* <https://github.com/sourcebot-dev/sourcebot>
|
||||||
|
* <https://github.com/sourcebot-dev/sourcebot/kubernetes/chart>
|
||||||
|
|
||||||
|
## 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. |
|
||||||
|
| autoscaling | object | `{"enabled":false,"maxReplicas":3,"minReplicas":1,"targetCPUUtilizationPercentage":80,"targetMemoryUtilizationPercentage":80}` | Configure Horizontal Pod Autoscaler. |
|
||||||
|
| autoscaling.enabled | bool | `false` | Enable or disable Horizontal Pod Autoscaler. |
|
||||||
|
| autoscaling.maxReplicas | int | `3` | Maximum number of replicas. |
|
||||||
|
| autoscaling.minReplicas | int | `1` | Minimum number of replicas. |
|
||||||
|
| autoscaling.targetCPUUtilizationPercentage | int | `80` | Target CPU utilization percentage for autoscaling. |
|
||||||
|
| autoscaling.targetMemoryUtilizationPercentage | int | `80` | Target memory utilization percentage for autoscaling. |
|
||||||
|
| 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. |
|
||||||
|
| 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":"Always","repository":"ghcr.io/sourcebot-dev/sourcebot","tag":"latest"}` | Configure the container image. |
|
||||||
|
| image.pullPolicy | string | `"Always"` | Image pull policy. |
|
||||||
|
| image.repository | string | `"ghcr.io/sourcebot-dev/sourcebot"` | Container image repository. |
|
||||||
|
| image.tag | string | `"latest"` | Container image tag. |
|
||||||
|
| 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. |
|
||||||
|
| 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. |
|
||||||
|
| 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. |
|
||||||
|
| 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. |
|
||||||
|
| 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. |
|
||||||
|
| volumes | list | `[]` | Define additional volumes. |
|
||||||
|
|
||||||
22
kubernetes/chart/templates/NOTES.txt
Normal file
22
kubernetes/chart/templates/NOTES.txt
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
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 }}
|
||||||
78
kubernetes/chart/templates/_helpers.tpl
Normal file
78
kubernetes/chart/templates/_helpers.tpl
Normal file
|
|
@ -0,0 +1,78 @@
|
||||||
|
{{/*
|
||||||
|
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 }}
|
||||||
10
kubernetes/chart/templates/config.yaml
Normal file
10
kubernetes/chart/templates/config.yaml
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: {{ include "sourcebot.fullname" $ }}
|
||||||
|
labels:
|
||||||
|
{{- include "sourcebot.labels" $ | nindent 4 }}
|
||||||
|
data:
|
||||||
|
config.json: |
|
||||||
|
{{- toJson $.Values.config | nindent 4 }}
|
||||||
136
kubernetes/chart/templates/deployment.yaml
Normal file
136
kubernetes/chart/templates/deployment.yaml
Normal file
|
|
@ -0,0 +1,136 @@
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{ include "sourcebot.fullname" $ }}
|
||||||
|
labels:
|
||||||
|
{{- include "sourcebot.labels" $ | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
{{- if not $.Values.autoscaling.enabled }}
|
||||||
|
replicas: {{ $.Values.replicaCount }}
|
||||||
|
{{- end }}
|
||||||
|
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 }}
|
||||||
|
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:
|
||||||
|
- 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 }}
|
||||||
33
kubernetes/chart/templates/hpa.yaml
Normal file
33
kubernetes/chart/templates/hpa.yaml
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
{{- if $.Values.autoscaling.enabled }}
|
||||||
|
---
|
||||||
|
apiVersion: autoscaling/v2
|
||||||
|
kind: HorizontalPodAutoscaler
|
||||||
|
metadata:
|
||||||
|
name: {{ include "sourcebot.fullname" $ }}
|
||||||
|
labels:
|
||||||
|
{{- include "sourcebot.labels" $ | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
scaleTargetRef:
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
name: {{ include "sourcebot.fullname" $ }}
|
||||||
|
minReplicas: {{ $.Values.autoscaling.minReplicas }}
|
||||||
|
maxReplicas: {{ $.Values.autoscaling.maxReplicas }}
|
||||||
|
metrics:
|
||||||
|
{{- if $.Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||||
|
- type: Resource
|
||||||
|
resource:
|
||||||
|
name: cpu
|
||||||
|
target:
|
||||||
|
type: Utilization
|
||||||
|
averageUtilization: {{ $.Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if $.Values.autoscaling.targetMemoryUtilizationPercentage }}
|
||||||
|
- type: Resource
|
||||||
|
resource:
|
||||||
|
name: memory
|
||||||
|
target:
|
||||||
|
type: Utilization
|
||||||
|
averageUtilization: {{ $.Values.autoscaling.targetMemoryUtilizationPercentage }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
44
kubernetes/chart/templates/ingress.yaml
Normal file
44
kubernetes/chart/templates/ingress.yaml
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
{{- 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 }}
|
||||||
18
kubernetes/chart/templates/pdb.yaml
Normal file
18
kubernetes/chart/templates/pdb.yaml
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
{{- 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 }}
|
||||||
16
kubernetes/chart/templates/service.yaml
Normal file
16
kubernetes/chart/templates/service.yaml
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
---
|
||||||
|
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 }}
|
||||||
14
kubernetes/chart/templates/serviceaccount.yaml
Normal file
14
kubernetes/chart/templates/serviceaccount.yaml
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
{{- 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 }}
|
||||||
469
kubernetes/chart/values.schema.json
Normal file
469
kubernetes/chart/values.schema.json
Normal file
|
|
@ -0,0 +1,469 @@
|
||||||
|
{
|
||||||
|
"$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"
|
||||||
|
},
|
||||||
|
"autoscaling": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"enabled": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"minReplicas": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"maxReplicas": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"targetCPUUtilizationPercentage": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"targetMemoryUtilizationPercentage": {
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
265
kubernetes/chart/values.yaml
Normal file
265
kubernetes/chart/values.yaml
Normal file
|
|
@ -0,0 +1,265 @@
|
||||||
|
# -- 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: latest
|
||||||
|
# -- Container image digest (used instead of tag if set).
|
||||||
|
# digest: ""
|
||||||
|
# -- Image pull policy.
|
||||||
|
pullPolicy: Always
|
||||||
|
|
||||||
|
# -- 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.
|
||||||
|
database: {}
|
||||||
|
# secretName: sourcebot-database-url
|
||||||
|
# secretKey: url
|
||||||
|
|
||||||
|
# -- Configure the Redis secret.
|
||||||
|
redis: {}
|
||||||
|
# secretName: sourcebot-redis-url
|
||||||
|
# secretKey: url
|
||||||
|
|
||||||
|
# -- Configure the enterprise license key 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: []
|
||||||
|
# - name: FOO
|
||||||
|
# value: bar
|
||||||
|
|
||||||
|
# -- 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.
|
||||||
|
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
|
||||||
|
|
||||||
|
# -- Configure Horizontal Pod Autoscaler.
|
||||||
|
autoscaling:
|
||||||
|
# -- Enable or disable Horizontal Pod Autoscaler.
|
||||||
|
enabled: false
|
||||||
|
# -- Minimum number of replicas.
|
||||||
|
minReplicas: 1
|
||||||
|
# -- Maximum number of replicas.
|
||||||
|
maxReplicas: 3
|
||||||
|
# -- Target CPU utilization percentage for autoscaling.
|
||||||
|
targetCPUUtilizationPercentage: 80
|
||||||
|
# -- Target memory utilization percentage for autoscaling.
|
||||||
|
targetMemoryUtilizationPercentage: 80
|
||||||
|
|
||||||
|
# -- Define additional volumes.
|
||||||
|
volumes: []
|
||||||
|
# - name: foo
|
||||||
|
# secret:
|
||||||
|
# secretName: mysecret
|
||||||
|
# optional: false
|
||||||
|
|
||||||
|
# -- Define volume mounts for the container.
|
||||||
|
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: ""
|
||||||
Loading…
Reference in a new issue