diff --git a/docker/services/frontend/search.conf b/docker/services/frontend/search.conf index 46fc79a76d6ae6e0ee7d8e09c1a94cb254770583..aa83f2624cb5f9939c794a8b46cb565322666bc1 100644 --- a/docker/services/frontend/search.conf +++ b/docker/services/frontend/search.conf @@ -4,6 +4,7 @@ directory=/obs/src/api stdout_logfile=/obs/src/api/log/%(program_name)s-stdout.log redirect_stderr=true autostart=true +autorestart=true stopsignal=KILL killasgroup=true stopasgroup=true diff --git a/helm/open-build-service/.helmignore b/helm/open-build-service/.helmignore new file mode 100644 index 0000000000000000000000000000000000000000..0e8a0eb36f4ca2c939201c0d54b5d82a1ea34778 --- /dev/null +++ b/helm/open-build-service/.helmignore @@ -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/ diff --git a/helm/open-build-service/Chart.lock b/helm/open-build-service/Chart.lock new file mode 100644 index 0000000000000000000000000000000000000000..cb15473b6d8cdc1a15ca28735e092ceadcd5e27f --- /dev/null +++ b/helm/open-build-service/Chart.lock @@ -0,0 +1,9 @@ +dependencies: +- name: frontend + repository: "" + version: x.x.x +- name: backend + repository: "" + version: x.x.x +digest: sha256:c5faf90e435b1f01602084bc06fc933ca6f436f63a6669ad6aadbe29e6033c18 +generated: "2022-04-13T22:01:53.992970003+02:00" diff --git a/helm/open-build-service/Chart.yaml b/helm/open-build-service/Chart.yaml new file mode 100644 index 0000000000000000000000000000000000000000..9ac45f1a1fe35001b7a89a1d4ac531efecc958a7 --- /dev/null +++ b/helm/open-build-service/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +name: open-build-service +description: Open Build Service + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "2.10.11" + +dependencies: + - name: frontend + version: x.x.x + - name: backend + version: x.x.x diff --git a/helm/open-build-service/charts/backend/.helmignore b/helm/open-build-service/charts/backend/.helmignore new file mode 100644 index 0000000000000000000000000000000000000000..0e8a0eb36f4ca2c939201c0d54b5d82a1ea34778 --- /dev/null +++ b/helm/open-build-service/charts/backend/.helmignore @@ -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/ diff --git a/helm/open-build-service/charts/backend/Chart.yaml b/helm/open-build-service/charts/backend/Chart.yaml new file mode 100644 index 0000000000000000000000000000000000000000..285b21b114c76b094d70e3e83948a8ffa66cff96 --- /dev/null +++ b/helm/open-build-service/charts/backend/Chart.yaml @@ -0,0 +1,24 @@ +apiVersion: v2 +name: backend +description: Open Build Service (backend) + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "2.10.11" diff --git a/helm/open-build-service/charts/backend/templates/NOTES.txt b/helm/open-build-service/charts/backend/templates/NOTES.txt new file mode 100644 index 0000000000000000000000000000000000000000..a308698eb8fb4fa2ed64469562e4e3939307a814 --- /dev/null +++ b/helm/open-build-service/charts/backend/templates/NOTES.txt @@ -0,0 +1,6 @@ +1. Get the application URL by running these commands: + + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "backend.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:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT diff --git a/helm/open-build-service/charts/backend/templates/_helpers.tpl b/helm/open-build-service/charts/backend/templates/_helpers.tpl new file mode 100644 index 0000000000000000000000000000000000000000..b2345ebfe0cfa803939a99be57489860a2c96f9f --- /dev/null +++ b/helm/open-build-service/charts/backend/templates/_helpers.tpl @@ -0,0 +1,71 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "backend.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 "backend.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 "backend.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "backend.labels" -}} +helm.sh/chart: {{ include "backend.chart" . }} +{{ include "backend.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "backend.selectorLabels" -}} +app.kubernetes.io/name: {{ include "backend.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "backend.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "backend.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- 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). +*/}} +{{- define "frontend.hostname" -}} +{{- coalesce (index .Values "global" "frontend" "host") (printf "%s-%s" .Release.Name "frontend" | trunc 63 | trimSuffix "-") -}} +{{- end -}} + diff --git a/helm/open-build-service/charts/backend/templates/configmap.yaml b/helm/open-build-service/charts/backend/templates/configmap.yaml new file mode 100644 index 0000000000000000000000000000000000000000..5eb34bb34976137d47f9940072f596e8ddbf526f --- /dev/null +++ b/helm/open-build-service/charts/backend/templates/configmap.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "backend.fullname" . }}-config +data: + BSConfig.local.pm: {{ + printf "%s\n%s\n1;\n" "$ipaccess->{\".*\"} = \"rw,worker\";" ( + default "" .Values.global.backend.extraConfig + ) | quote + }} diff --git a/helm/open-build-service/charts/backend/templates/deployment.yaml b/helm/open-build-service/charts/backend/templates/deployment.yaml new file mode 100644 index 0000000000000000000000000000000000000000..8fc777d0a0683e94be5a1c8ece573c7f31a8dbcb --- /dev/null +++ b/helm/open-build-service/charts/backend/templates/deployment.yaml @@ -0,0 +1,129 @@ +{{- $arches := default + (list "x86_64" "i586" "armv7hl" "aarch64") + .Values.global.backend.architectures +-}} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "backend.fullname" . }} + labels: + {{- include "backend.labels" . | nindent 4 }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + {{- include "backend.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "backend.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "backend.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + env: + - name: OBS_BACKEND_HOST + value: {{ include "backend.fullname" . | quote }} + - name: OBS_FRONTEND_HOST + value: {{ include "frontend.hostname" . | quote }} + - name: OBS_ARCHES + value: {{ $arches | join " " | quote }} + ports: + - name: repserver + containerPort: 5252 + protocol: TCP + - name: srcserver + containerPort: 5352 + protocol: TCP + livenessProbe: + httpGet: + path: / + port: repserver + httpGet: + path: / + port: srcserver + readinessProbe: + httpGet: + path: / + port: repserver + httpGet: + path: / + port: srcserver + resources: + {{- toYaml .Values.resources | nindent 12 }} + volumeMounts: + - name: backend + mountPath: /srv/obs + subPath: data + - name: backend + mountPath: /etc/obs + subPath: config + - name: backend-logs + mountPath: /srv/obs/log + - name: backend-extraconfig + mountPath: /etc/obs/BSConfig.local.pm + subPath: BSConfig.local.pm + {{- $logs := list + "dispatcher" + "dodup" + "publisher" + "rep_server" + "src_server" + "warden" + -}} + {{- range $arch := $arches -}} + {{- $logs = append $logs (printf "scheduler_%s" $arch) -}} + {{- end -}} + {{- range $service := $logs }} + - name: {{ $.Chart.Name }}-{{ $service | kebabcase }}-log + image: busybox + args: + - sh + - -c + - tail -n+1 -F /srv/obs/log/{{ $service }}.log + volumeMounts: + - name: backend-logs + mountPath: /srv/obs/log + {{- end }} + volumes: + - name: backend + {{- if .Values.persistence.enabled }} + persistentVolumeClaim: + claimName: {{ .Values.persistence.existingClaim | default (printf "%s-storage" (include "backend.fullname" .)) }} + {{- else }} + emptyDir: {} + {{- end }} + - name: backend-logs + emptyDir: {} + - name: backend-extraconfig + configMap: + name: {{ include "backend.fullname" . }}-config + optional: true + {{- 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/helm/open-build-service/charts/backend/templates/hpa.yaml b/helm/open-build-service/charts/backend/templates/hpa.yaml new file mode 100644 index 0000000000000000000000000000000000000000..fe4dba97328fba77f51e76d9533d34b996e3a402 --- /dev/null +++ b/helm/open-build-service/charts/backend/templates/hpa.yaml @@ -0,0 +1,28 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2beta1 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "backend.fullname" . }} + labels: + {{- include "backend.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "backend.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/helm/open-build-service/charts/backend/templates/pvc.yaml b/helm/open-build-service/charts/backend/templates/pvc.yaml new file mode 100644 index 0000000000000000000000000000000000000000..420e9347ae31a542c8f92d73000fedf109134abd --- /dev/null +++ b/helm/open-build-service/charts/backend/templates/pvc.yaml @@ -0,0 +1,16 @@ +{{- if (and .Values.persistence.enabled (not .Values.persistence.existingClaim)) }} +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: {{ include "backend.fullname" . }}-storage + labels: + {{- include "backend.labels" . | nindent 4 }} +spec: + accessModes: + {{- range .Values.persistence.accessModes }} + - {{ . | quote }} + {{- end }} + resources: + requests: + storage: {{ .Values.persistence.size | quote }} +{{- end }} diff --git a/helm/open-build-service/charts/backend/templates/service.yaml b/helm/open-build-service/charts/backend/templates/service.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ca22b4a803d019093501ce9209f90ef2c6ed95a7 --- /dev/null +++ b/helm/open-build-service/charts/backend/templates/service.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "backend.fullname" . }} + labels: + {{- include "backend.labels" . | nindent 4 }} +spec: + type: ClusterIP + ports: + - port: 5252 + targetPort: repserver + protocol: TCP + name: repserver + - port: 5352 + targetPort: srcserver + protocol: TCP + name: srcserver + selector: + {{- include "backend.selectorLabels" . | nindent 4 }} diff --git a/helm/open-build-service/charts/backend/templates/serviceaccount.yaml b/helm/open-build-service/charts/backend/templates/serviceaccount.yaml new file mode 100644 index 0000000000000000000000000000000000000000..a43e94250853413124c12023d9c9400b5c419839 --- /dev/null +++ b/helm/open-build-service/charts/backend/templates/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "backend.serviceAccountName" . }} + labels: + {{- include "backend.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/helm/open-build-service/charts/backend/templates/tests/test-connection.yaml b/helm/open-build-service/charts/backend/templates/tests/test-connection.yaml new file mode 100644 index 0000000000000000000000000000000000000000..52d1df1bee61b97119b76d3a50d062b481ed8b3c --- /dev/null +++ b/helm/open-build-service/charts/backend/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "backend.fullname" . }}-test-connection" + labels: + {{- include "backend.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "backend.fullname" . }}:5252'] + restartPolicy: Never diff --git a/helm/open-build-service/charts/backend/values.yaml b/helm/open-build-service/charts/backend/values.yaml new file mode 100644 index 0000000000000000000000000000000000000000..243ae48b464f3f1631dfced9423c133c77772d38 --- /dev/null +++ b/helm/open-build-service/charts/backend/values.yaml @@ -0,0 +1,86 @@ +# Default values for open-build-service-backend. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +image: + repository: registry.gitlab.collabora.com/obs/open-build-service/backend + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: latest + +global: + frontend: {} + # host: frontend + backend: {} + # architectures: ["x86_64", "aarch64"] + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +podAnnotations: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +nodeSelector: {} + +tolerations: [] + +affinity: {} + +## Enable persistence using Persistent Volume Claims +## ref: https://kubernetes.io/docs/user-guide/persistent-volumes/ +## +persistence: + ## @param persistence.enabled Enable persistence using Persistent Volume Claims + ## + enabled: true + ## @param persistence.existingClaim The name of an existing PVC to use for persistence + ## + existingClaim: "" + ## @param persistence.accessModes Persistent Volume Access Modes + ## + accessModes: + - ReadWriteOnce + ## @param persistence.size Size of data volume + ## + size: 8Gi diff --git a/helm/open-build-service/charts/frontend/.helmignore b/helm/open-build-service/charts/frontend/.helmignore new file mode 100644 index 0000000000000000000000000000000000000000..0e8a0eb36f4ca2c939201c0d54b5d82a1ea34778 --- /dev/null +++ b/helm/open-build-service/charts/frontend/.helmignore @@ -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/ diff --git a/helm/open-build-service/charts/frontend/Chart.lock b/helm/open-build-service/charts/frontend/Chart.lock new file mode 100644 index 0000000000000000000000000000000000000000..531659ee686ca0ea18c7503436f8ded5d51b517c --- /dev/null +++ b/helm/open-build-service/charts/frontend/Chart.lock @@ -0,0 +1,9 @@ +dependencies: +- name: mariadb + repository: https://charts.bitnami.com/bitnami + version: 10.0.3 +- name: memcached + repository: https://charts.bitnami.com/bitnami + version: 6.0.14 +digest: sha256:dff66f6416ad3e3df2d7c70c1f5f835679c6ebb4cf289826b02a1649b34e6f60 +generated: "2022-04-14T15:07:25.590867379+02:00" diff --git a/helm/open-build-service/charts/frontend/Chart.yaml b/helm/open-build-service/charts/frontend/Chart.yaml new file mode 100644 index 0000000000000000000000000000000000000000..9dfa58cc6a6484abfa908123a0f7937932783ce3 --- /dev/null +++ b/helm/open-build-service/charts/frontend/Chart.yaml @@ -0,0 +1,32 @@ +apiVersion: v2 +name: frontend +description: Open Build Service (frontend) + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "2.10.11" + +dependencies: + - name: mariadb + repository: https://charts.bitnami.com/bitnami + version: ~10.0 + - name: memcached + repository: https://charts.bitnami.com/bitnami + version: ~6.0 diff --git a/helm/open-build-service/charts/frontend/charts/mariadb-10.0.3.tgz b/helm/open-build-service/charts/frontend/charts/mariadb-10.0.3.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4017b988cd13f3e617ed1fb77ac0b05d88e5537f Binary files /dev/null and b/helm/open-build-service/charts/frontend/charts/mariadb-10.0.3.tgz differ diff --git a/helm/open-build-service/charts/frontend/charts/memcached-6.0.14.tgz b/helm/open-build-service/charts/frontend/charts/memcached-6.0.14.tgz new file mode 100644 index 0000000000000000000000000000000000000000..d9724b66c6ddae2d4841d86ebbb2214e35f88cc7 Binary files /dev/null and b/helm/open-build-service/charts/frontend/charts/memcached-6.0.14.tgz differ diff --git a/helm/open-build-service/charts/frontend/templates/NOTES.txt b/helm/open-build-service/charts/frontend/templates/NOTES.txt new file mode 100644 index 0000000000000000000000000000000000000000..81b558334427811a8779b5601c30d3f0068cdc81 --- /dev/null +++ b/helm/open-build-service/charts/frontend/templates/NOTES.txt @@ -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 "frontend.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 the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "frontend.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "frontend.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 "frontend.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:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} diff --git a/helm/open-build-service/charts/frontend/templates/_helpers.tpl b/helm/open-build-service/charts/frontend/templates/_helpers.tpl new file mode 100644 index 0000000000000000000000000000000000000000..179333d618289b09048b0e3a9bae89bd7b63b144 --- /dev/null +++ b/helm/open-build-service/charts/frontend/templates/_helpers.tpl @@ -0,0 +1,86 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "frontend.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 "frontend.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 "frontend.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "frontend.labels" -}} +helm.sh/chart: {{ include "frontend.chart" . }} +{{ include "frontend.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "frontend.selectorLabels" -}} +app.kubernetes.io/name: {{ include "frontend.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "frontend.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "frontend.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- 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). +*/}} +{{- define "frontend.mariadb.fullname" -}} +{{- printf "%s-%s" .Release.Name "mariadb" | 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). +*/}} +{{- define "frontend.memcached.fullname" -}} +{{- printf "%s-%s" .Release.Name "memcached" | 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). +*/}} +{{- define "backend.hostname" -}} +{{- coalesce (index .Values "global" "backend" "host") (printf "%s-%s" .Release.Name "backend" | trunc 63 | trimSuffix "-") -}} +{{- end -}} diff --git a/helm/open-build-service/charts/frontend/templates/deployment.yaml b/helm/open-build-service/charts/frontend/templates/deployment.yaml new file mode 100644 index 0000000000000000000000000000000000000000..9d01829bd5f047b61b68c0d492cb3c5861765b67 --- /dev/null +++ b/helm/open-build-service/charts/frontend/templates/deployment.yaml @@ -0,0 +1,145 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "frontend.fullname" . }} + labels: + {{- include "frontend.labels" . | nindent 4 }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + {{- include "frontend.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "frontend.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "frontend.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + env: + - name: OBS_BACKEND_HOST + value: {{ include "backend.hostname" . | quote }} + {{- if .Values.global.frontend }} + - name: OBS_FRONTEND_WORKERS + value: {{ default 4 .Values.global.frontend.workers | quote }} + {{- end }} + - name: OBS_MEMCACHE_HOST + value: {{ include "frontend.memcached.fullname" . | quote }} + - name: DB_PORT + value: "3306" + - name: DB_HOST + value: {{ include "frontend.mariadb.fullname" . | quote }} + - name: DB_NAME + value: {{ .Values.mariadb.auth.database | quote }} + - name: DB_USER + value: {{ .Values.mariadb.auth.username | quote }} + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "frontend.mariadb.fullname" . | quote }} + key: mariadb-password + - name: DB_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "frontend.mariadb.fullname" . | quote}} + key: mariadb-root-password + ports: + - name: http + containerPort: 3000 + protocol: TCP + startupProbe: + httpGet: + path: / + port: http + initialDelaySeconds: 20 + periodSeconds: 20 + failureThreshold: 30 + livenessProbe: + httpGet: + path: / + port: http + failureThreshold: 1 + readinessProbe: + httpGet: + path: / + port: http + resources: + {{- toYaml .Values.resources | nindent 12 }} + volumeMounts: + - name: tmp-scratch + mountPath: /tmp + - name: frontend-logs + mountPath: /obs/src/api/log + - name: {{ .Chart.Name }}-weblog + image: busybox + args: + - sh + - -c + - tail -n+1 -F /obs/src/api/log/web-stdout.log + volumeMounts: + - name: frontend-logs + mountPath: /obs/src/api/log + initContainers: + - name: {{ .Chart.Name }}-initbackend + image: busybox + command: + - sh + - -c + - | + until wget --spider {{ include "backend.hostname" . }}:5252 + do + echo waiting for the backend to become ready + sleep 2 + done + echo the backend is ready + - name: {{ .Chart.Name }}-initdb + image: busybox + command: + - sh + - -c + - | + until nslookup {{ include "frontend.mariadb.fullname" . }} + do + echo waiting for the database to start + sleep 5 + done + until nc {{ include "frontend.mariadb.fullname" . }} 3306 -e /bin/true < /dev/null + do + echo waiting for the database to become ready + sleep 2 + done + echo the database is ready + volumes: + - name: tmp-scratch + emptyDir: {} + - name: frontend-logs + emptyDir: {} + {{- 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/helm/open-build-service/charts/frontend/templates/hpa.yaml b/helm/open-build-service/charts/frontend/templates/hpa.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f1ffdc14ad66f1192ef1642dc38ae19d5728495f --- /dev/null +++ b/helm/open-build-service/charts/frontend/templates/hpa.yaml @@ -0,0 +1,28 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2beta1 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "frontend.fullname" . }} + labels: + {{- include "frontend.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "frontend.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/helm/open-build-service/charts/frontend/templates/ingress.yaml b/helm/open-build-service/charts/frontend/templates/ingress.yaml new file mode 100644 index 0000000000000000000000000000000000000000..410043aaa3bea4e532cbedcd8f53b46512ce1620 --- /dev/null +++ b/helm/open-build-service/charts/frontend/templates/ingress.yaml @@ -0,0 +1,61 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "frontend.fullname" . -}} +{{- $svcPort := .Values.service.port -}} +{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "frontend.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- 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 }} + {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} + pathType: {{ .pathType }} + {{- end }} + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/helm/open-build-service/charts/frontend/templates/service.yaml b/helm/open-build-service/charts/frontend/templates/service.yaml new file mode 100644 index 0000000000000000000000000000000000000000..708b0eda39d0be1751808f770f896b28c67de467 --- /dev/null +++ b/helm/open-build-service/charts/frontend/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "frontend.fullname" . }} + labels: + {{- include "frontend.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "frontend.selectorLabels" . | nindent 4 }} diff --git a/helm/open-build-service/charts/frontend/templates/serviceaccount.yaml b/helm/open-build-service/charts/frontend/templates/serviceaccount.yaml new file mode 100644 index 0000000000000000000000000000000000000000..cc6490911855c0c32ab29b270b3ba1119d7fd8ca --- /dev/null +++ b/helm/open-build-service/charts/frontend/templates/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "frontend.serviceAccountName" . }} + labels: + {{- include "frontend.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/helm/open-build-service/charts/frontend/templates/tests/test-connection.yaml b/helm/open-build-service/charts/frontend/templates/tests/test-connection.yaml new file mode 100644 index 0000000000000000000000000000000000000000..372ac5eba9f3100b6644a4e3aa575df8f7380d1c --- /dev/null +++ b/helm/open-build-service/charts/frontend/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "frontend.fullname" . }}-test-connection" + labels: + {{- include "frontend.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "frontend.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never diff --git a/helm/open-build-service/charts/frontend/values.yaml b/helm/open-build-service/charts/frontend/values.yaml new file mode 100644 index 0000000000000000000000000000000000000000..5d7c343a5a0b605dc82354f4a930d26c84b0b5da --- /dev/null +++ b/helm/open-build-service/charts/frontend/values.yaml @@ -0,0 +1,95 @@ +# Default values for open-build-service-frontend. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +image: + repository: registry.gitlab.collabora.com/obs/open-build-service/frontend + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: latest + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +global: + frontend: {} + # workers: 8 + backend: {} + # host: backend + +mariadb: + auth: + username: obs-api + # password: someobs + # rootPassword: someobs + database: obsapi + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +podAnnotations: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + type: ClusterIP + port: 3000 + +ingress: + enabled: false + className: "" + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: chart-example.local + paths: + - path: / + pathType: ImplementationSpecific + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +nodeSelector: {} + +tolerations: [] + +affinity: {} diff --git a/helm/open-build-service/templates/NOTES.txt b/helm/open-build-service/templates/NOTES.txt new file mode 100644 index 0000000000000000000000000000000000000000..81b558334427811a8779b5601c30d3f0068cdc81 --- /dev/null +++ b/helm/open-build-service/templates/NOTES.txt @@ -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 "frontend.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 the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "frontend.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "frontend.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 "frontend.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:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} diff --git a/helm/open-build-service/templates/_helpers.tpl b/helm/open-build-service/templates/_helpers.tpl new file mode 100644 index 0000000000000000000000000000000000000000..6466a8a832fd231c9e6619368d1ca6f6ec6aca68 --- /dev/null +++ b/helm/open-build-service/templates/_helpers.tpl @@ -0,0 +1,69 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "open-build-service.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 "open-build-service.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 "open-build-service.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "open-build-service.labels" -}} +helm.sh/chart: {{ include "open-build-service.chart" . }} +{{ include "open-build-service.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "open-build-service.selectorLabels" -}} +app.kubernetes.io/name: {{ include "open-build-service.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "open-build-service.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "open-build-service.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} + +{{/* +Returns the image repository depending on the chart name. +*/}} +{{- define "image.repository" -}} +{{/* index .Values "globals" "images" .Chart.Name "repository" */}} +{{- end -}} diff --git a/helm/open-build-service/values.yaml b/helm/open-build-service/values.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e8c1f8e7f082d4ee1e7a3c8514e4bd9f9ce2a182 --- /dev/null +++ b/helm/open-build-service/values.yaml @@ -0,0 +1,101 @@ +# Default values for open-build-service. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +backend: + image: + repository: registry.gitlab.collabora.com/obs/open-build-service/backend + tag: collabora-staging + +frontend: + image: + repository: registry.gitlab.collabora.com/obs/open-build-service/frontend + tag: collabora-staging + mariadb: + primary: + persistence: + enabled: true + # size: 8Gi + # existingClaim: "" + +global: + frontend: + workers: 4 + # host: frontend + backend: {} + # host: backend + # extraConfig: | + # $ipaccess->{"10.*"} = "rw"; + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +podAnnotations: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + type: ClusterIP + port: 80 + +ingress: + enabled: false + className: "" + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: chart-example.local + paths: + - path: / + pathType: ImplementationSpecific + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +nodeSelector: {} + +tolerations: [] + +affinity: {}