feat: add turbinia
This commit is contained in:
parent
449079fd4b
commit
f1892da689
13 changed files with 590 additions and 0 deletions
1
charts/turbinia/.helmignore
Normal file
1
charts/turbinia/.helmignore
Normal file
|
@ -0,0 +1 @@
|
||||||
|
*/configs/*
|
18
charts/turbinia/Chart.yaml
Normal file
18
charts/turbinia/Chart.yaml
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
apiVersion: v2
|
||||||
|
name: turbinia
|
||||||
|
description: |
|
||||||
|
Automation and Scaling of Digital Forensics Tools
|
||||||
|
appVersion: "20240510"
|
||||||
|
type: application
|
||||||
|
version: 0.1.1
|
||||||
|
maintainers:
|
||||||
|
- name: Tommy Skaug
|
||||||
|
email: tommy@skaug.me
|
||||||
|
keywords:
|
||||||
|
- forensics
|
||||||
|
- google
|
||||||
|
- scale
|
||||||
|
- automation
|
||||||
|
sources:
|
||||||
|
- https://github.com/google/turbinia
|
||||||
|
- https://github.com/google/osdfir-infrastructure
|
8
charts/turbinia/README.md
Normal file
8
charts/turbinia/README.md
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
|
||||||
|
|
||||||
|
## Debugging
|
||||||
|
|
||||||
|
```sh
|
||||||
|
task flux:sync
|
||||||
|
kubectl annotate es turbina-conf force-sync=$(date +%s) --overwrite -n sec-forensics
|
||||||
|
```
|
45
charts/turbinia/templates/_helpers.tpl
Normal file
45
charts/turbinia/templates/_helpers.tpl
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
{{/*
|
||||||
|
Expand the name of the chart.
|
||||||
|
*/}}
|
||||||
|
{{- define "turbinia.name" -}}
|
||||||
|
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- define "turbinia.fullname" -}}
|
||||||
|
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create chart name and version as used by the chart label.
|
||||||
|
*/}}
|
||||||
|
{{- define "turbinia.chart" -}}
|
||||||
|
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Common labels
|
||||||
|
*/}}
|
||||||
|
{{- define "turbinia.labels" -}}
|
||||||
|
helm.sh/chart: {{ include "turbinia.chart" . }}
|
||||||
|
{{ include "turbinia.selectorLabels" . }}
|
||||||
|
{{- if .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||||
|
{{- end }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
|
date: "{{ now | htmlDate }}"
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Selector labels
|
||||||
|
*/}}
|
||||||
|
{{- define "turbinia.selectorLabels" -}}
|
||||||
|
app.kubernetes.io/name: {{ include "turbinia.name" . }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create the upload path.
|
||||||
|
*/}}
|
||||||
|
{{- define "turbinia.uploadPath" -}}
|
||||||
|
{{- printf "/data/upload" }}
|
||||||
|
{{- end }}
|
85
charts/turbinia/templates/deployment-api.yaml
Normal file
85
charts/turbinia/templates/deployment-api.yaml
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{ include "turbinia.fullname" . }}-api
|
||||||
|
namespace: {{ .Release.Namespace | quote }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/component: api
|
||||||
|
{{- include "turbinia.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/component: api
|
||||||
|
{{- include "turbinia.selectorLabels" . | nindent 6 }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
# Have Deployment restart after each upgrade
|
||||||
|
roll: {{ randAlphaNum 5 | quote }}
|
||||||
|
prometheus.io/port: {{ .Values.metrics.port | quote }}
|
||||||
|
prometheus.io/scrape: "true"
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/component: api
|
||||||
|
{{- include "turbinia.selectorLabels" . | nindent 8 }}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: {{ include "turbinia.fullname" . }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.api.podSecurityContext | nindent 8 }}
|
||||||
|
containers:
|
||||||
|
- name: api
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.api.securityContext | nindent 12 }}
|
||||||
|
image: "{{ .Values.api.image.repository }}:{{ .Values.api.image.tag | default .Chart.AppVersion }}"
|
||||||
|
imagePullPolicy: {{ .Values.api.image.pullPolicy }}
|
||||||
|
livenessProbe:
|
||||||
|
exec:
|
||||||
|
command: ['sh', '-c', "ps aux | grep api_server | grep -v grep"]
|
||||||
|
initialDelaySeconds: 5
|
||||||
|
periodSeconds: 5
|
||||||
|
env:
|
||||||
|
- name: TURBINIA_EXTRA_ARGS
|
||||||
|
value: "-d"
|
||||||
|
- name: NODE_NAME
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: spec.nodeName
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /mnt/evidence
|
||||||
|
name: evidence
|
||||||
|
- mountPath: /mnt/turbiniavolume
|
||||||
|
name: turbinia
|
||||||
|
- mountPath: /etc/turbinia
|
||||||
|
name: turbinia-conf
|
||||||
|
ports:
|
||||||
|
{{- if .Values.metrics.enabled }}
|
||||||
|
- containerPort: {{ .Values.metrics.port }}
|
||||||
|
{{- end }}
|
||||||
|
- containerPort: 8000
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.api.resources | nindent 12 }}
|
||||||
|
volumes:
|
||||||
|
- name: turbinia
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: {{ include "turbinia.fullname" . }}
|
||||||
|
readOnly: false
|
||||||
|
- name: evidence
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: {{ include "turbinia.fullname" . }}-evidence
|
||||||
|
readOnly: false
|
||||||
|
- name: turbinia-conf
|
||||||
|
secret:
|
||||||
|
secretName: {{ include "turbinia.fullname" . }}-conf
|
||||||
|
defaultMode: 0744
|
||||||
|
{{- with .Values.api.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.api.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.api.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
82
charts/turbinia/templates/deployment-controller.yaml
Normal file
82
charts/turbinia/templates/deployment-controller.yaml
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{ include "turbinia.fullname" . }}-controller
|
||||||
|
namespace: {{ .Release.Namespace | quote }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/component: controller
|
||||||
|
{{- include "turbinia.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/component: controller
|
||||||
|
{{- include "turbinia.selectorLabels" . | nindent 6 }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
prometheus.io/port: {{ .Values.metrics.port | quote }}
|
||||||
|
prometheus.io/scrape: "true"
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/component: controller
|
||||||
|
{{- include "turbinia.selectorLabels" . | nindent 8 }}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: {{ include "turbinia.fullname" . }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.controller.podSecurityContext | nindent 8 }}
|
||||||
|
containers:
|
||||||
|
- name: controller
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.controller.securityContext | nindent 12 }}
|
||||||
|
image: "{{ .Values.controller.image.repository }}:{{ .Values.controller.image.tag | default .Chart.AppVersion }}"
|
||||||
|
imagePullPolicy: {{ .Values.controller.image.pullPolicy }}
|
||||||
|
lifecycle:
|
||||||
|
preStop:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- "/bin/sh"
|
||||||
|
- "-c"
|
||||||
|
- "touch /tmp/turbinia-to-scaledown.lock && sleep 5 && /usr/bin/python3 /home/turbinia/check-lockfile.py"
|
||||||
|
env:
|
||||||
|
- name: TURBINIA_EXTRA_ARGS
|
||||||
|
value: "-d"
|
||||||
|
- name: NODE_NAME
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: spec.nodeName
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /mnt/evidence
|
||||||
|
name: evidence
|
||||||
|
- mountPath: /mnt/turbiniavolume
|
||||||
|
name: turbinia
|
||||||
|
- mountPath: /etc/turbinia
|
||||||
|
name: turbinia-conf
|
||||||
|
ports:
|
||||||
|
- containerPort: {{ .Values.metrics.port }}
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.controller.resources | nindent 12 }}
|
||||||
|
volumes:
|
||||||
|
- name: turbinia
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: {{ include "turbinia.fullname" . }}
|
||||||
|
readOnly: false
|
||||||
|
- name: evidence
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: {{ include "turbinia.fullname" . }}-evidence
|
||||||
|
readOnly: false
|
||||||
|
- name: turbinia-conf
|
||||||
|
secret:
|
||||||
|
secretName: {{ include "turbinia.fullname" . }}-conf
|
||||||
|
defaultMode: 0744
|
||||||
|
{{- with .Values.controller.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.controller.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.controller.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
86
charts/turbinia/templates/deployment-server.yaml
Normal file
86
charts/turbinia/templates/deployment-server.yaml
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{ include "turbinia.fullname" . }}-server
|
||||||
|
namespace: {{ .Release.Namespace | quote }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/component: server
|
||||||
|
{{- include "turbinia.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/component: server
|
||||||
|
{{- include "turbinia.selectorLabels" . | nindent 6 }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
# Have Deployment restart after each upgrade
|
||||||
|
roll: {{ randAlphaNum 5 | quote }}
|
||||||
|
prometheus.io/port: {{ .Values.metrics.port | quote }}
|
||||||
|
prometheus.io/scrape: "true"
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/component: server
|
||||||
|
{{- include "turbinia.selectorLabels" . | nindent 8 }}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: {{ include "turbinia.fullname" . }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.server.podSecurityContext | nindent 8 }}
|
||||||
|
initContainers:
|
||||||
|
- name: init-permissions
|
||||||
|
image: busybox
|
||||||
|
command: ['sh', '-c', 'chmod go+w /mnt/evidence && chmod go+w /mnt/turbiniavolume && mkdir -p /etc/turbinia']
|
||||||
|
volumeMounts:
|
||||||
|
- name: turbinia
|
||||||
|
mountPath: /mnt/turbiniavolume
|
||||||
|
- name: evidence
|
||||||
|
mountPath: /mnt/evidence
|
||||||
|
containers:
|
||||||
|
- name: server
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.server.securityContext | nindent 12 }}
|
||||||
|
image: "{{ .Values.server.image.repository }}:{{ .Values.server.image.tag | default .Chart.AppVersion }}"
|
||||||
|
imagePullPolicy: {{ .Values.server.image.pullPolicy }}
|
||||||
|
env:
|
||||||
|
- name: TURBINIA_EXTRA_ARGS
|
||||||
|
value: "-d"
|
||||||
|
- name: NODE_NAME
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: spec.nodeName
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /mnt/evidence
|
||||||
|
name: evidence
|
||||||
|
- mountPath: /mnt/turbiniavolume
|
||||||
|
name: turbinia
|
||||||
|
- mountPath: /etc/turbinia
|
||||||
|
name: turbinia-conf
|
||||||
|
ports:
|
||||||
|
- containerPort: {{ .Values.metrics.port }}
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.server.resources | nindent 12 }}
|
||||||
|
volumes:
|
||||||
|
- name: turbinia
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: {{ include "turbinia.fullname" . }}
|
||||||
|
readOnly: false
|
||||||
|
- name: evidence
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: {{ include "turbinia.fullname" . }}-evidence
|
||||||
|
readOnly: false
|
||||||
|
- name: turbinia-conf
|
||||||
|
secret:
|
||||||
|
secretName: {{ include "turbinia.fullname" . }}-conf
|
||||||
|
defaultMode: 0744
|
||||||
|
{{- with .Values.server.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.server.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.server.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
95
charts/turbinia/templates/deployment-worker.yaml
Normal file
95
charts/turbinia/templates/deployment-worker.yaml
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{ include "turbinia.fullname" . }}-worker
|
||||||
|
namespace: {{ .Release.Namespace | quote }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/component: worker
|
||||||
|
{{- include "turbinia.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/component: worker
|
||||||
|
{{- include "turbinia.selectorLabels" . | nindent 6 }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
# Have Deployment restart after each upgrade
|
||||||
|
roll: {{ randAlphaNum 5 | quote }}
|
||||||
|
prometheus.io/port: {{ .Values.metrics.port | quote }}
|
||||||
|
prometheus.io/scrape: "true"
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/component: worker
|
||||||
|
{{- include "turbinia.selectorLabels" . | nindent 8 }}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: {{ include "turbinia.fullname" . }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.worker.podSecurityContext | nindent 8 }}
|
||||||
|
# The grace period needs to be set to the largest task timeout as
|
||||||
|
# set in the turbinia configuration file.
|
||||||
|
terminationGracePeriodSeconds: 86400
|
||||||
|
initContainers:
|
||||||
|
- name: init-permissions
|
||||||
|
image: busybox
|
||||||
|
command: ['sh', '-c', 'chmod go+w /mnt/evidence && chmod go+w /mnt/turbiniavolume && mkdir -p /etc/turbinia']
|
||||||
|
volumeMounts:
|
||||||
|
- name: turbinia
|
||||||
|
mountPath: /mnt/turbiniavolume
|
||||||
|
- name: evidence
|
||||||
|
mountPath: /mnt/evidence
|
||||||
|
containers:
|
||||||
|
- name: worker
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.worker.securityContext | nindent 12 }}
|
||||||
|
image: "{{ .Values.worker.image.repository }}:{{ .Values.worker.image.tag | default .Chart.AppVersion }}"
|
||||||
|
imagePullPolicy: {{ .Values.worker.image.pullPolicy }}
|
||||||
|
lifecycle:
|
||||||
|
preStop:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- "/bin/sh"
|
||||||
|
- "-c"
|
||||||
|
- "touch /tmp/turbinia-to-scaledown.lock && sleep 5 && /usr/bin/python3 /home/turbinia/check-lockfile.py"
|
||||||
|
env:
|
||||||
|
- name: TURBINIA_EXTRA_ARGS
|
||||||
|
value: "-d"
|
||||||
|
- name: NODE_NAME
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: spec.nodeName
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /mnt/evidence
|
||||||
|
name: evidence
|
||||||
|
- mountPath: /mnt/turbiniavolume
|
||||||
|
name: turbinia
|
||||||
|
- mountPath: /etc/turbinia
|
||||||
|
name: turbinia-conf
|
||||||
|
ports:
|
||||||
|
- containerPort: {{ .Values.metrics.port }}
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.worker.resources | nindent 12 }}
|
||||||
|
volumes:
|
||||||
|
- name: turbinia
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: {{ include "turbinia.fullname" . }}
|
||||||
|
readOnly: false
|
||||||
|
- name: evidence
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: {{ include "turbinia.fullname" . }}-evidence
|
||||||
|
readOnly: false
|
||||||
|
- name: turbinia-conf
|
||||||
|
secret:
|
||||||
|
secretName: {{ include "turbinia.fullname" . }}-conf
|
||||||
|
defaultMode: 0744
|
||||||
|
{{- with .Values.worker.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.worker.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.worker.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
14
charts/turbinia/templates/hpa.yaml
Normal file
14
charts/turbinia/templates/hpa.yaml
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
apiVersion: autoscaling/v1
|
||||||
|
kind: HorizontalPodAutoscaler
|
||||||
|
metadata:
|
||||||
|
name: {{ include "turbinia.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "turbinia.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
scaleTargetRef:
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
name: {{ include "turbinia.fullname" . }}-worker
|
||||||
|
minReplicas: {{ .Values.worker.autoscaling.minReplicas }}
|
||||||
|
maxReplicas: {{ .Values.worker.autoscaling.maxReplicas }}
|
||||||
|
targetCPUUtilizationPercentage: {{ .Values.worker.autoscaling.targetCPUUtilizationPercentage }}
|
41
charts/turbinia/templates/pvc.yaml
Normal file
41
charts/turbinia/templates/pvc.yaml
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
---
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: {{ include "turbinia.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "turbinia.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- {{ .Values.persistence.general.accessMode | quote }}
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: {{ .Values.persistence.general.size | quote }}
|
||||||
|
{{- if .Values.persistence.general.storageClass }}
|
||||||
|
{{- if (eq "-" .Values.persistence.general.storageClass) }}
|
||||||
|
storageClassName: ""
|
||||||
|
{{- else }}
|
||||||
|
storageClassName: "{{ .Values.persistence.general.storageClass }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
---
|
||||||
|
---
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: {{ include "turbinia.fullname" . }}-evidence
|
||||||
|
labels:
|
||||||
|
{{- include "turbinia.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- {{ .Values.persistence.evidence.accessMode | quote }}
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: {{ .Values.persistence.evidence.size | quote }}
|
||||||
|
{{- if .Values.persistence.evidence.storageClass }}
|
||||||
|
{{- if (eq "-" .Values.persistence.evidence.storageClass) }}
|
||||||
|
storageClassName: ""
|
||||||
|
{{- else }}
|
||||||
|
storageClassName: "{{ .Values.persistence.evidence.storageClass }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
16
charts/turbinia/templates/service.yaml
Normal file
16
charts/turbinia/templates/service.yaml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "turbinia.fullname" . }}
|
||||||
|
namespace: {{ .Release.Namespace | quote }}
|
||||||
|
labels:
|
||||||
|
{{- include "turbinia.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
ports:
|
||||||
|
- port: 8000
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 8000
|
||||||
|
selector:
|
||||||
|
app.kubernetes.io/component: server
|
||||||
|
{{- include "turbinia.selectorLabels" . | nindent 4 }}
|
6
charts/turbinia/templates/serviceaccount.yaml
Normal file
6
charts/turbinia/templates/serviceaccount.yaml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: {{ include "turbinia.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "turbinia.labels" . | nindent 4 }}
|
93
charts/turbinia/values.yaml
Normal file
93
charts/turbinia/values.yaml
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
config:
|
||||||
|
externalUrl: https://turbinia.example.com/
|
||||||
|
|
||||||
|
persistence:
|
||||||
|
general:
|
||||||
|
storageClass: ceph-filesystem
|
||||||
|
accessMode: ReadWriteMany
|
||||||
|
size: 2Gi
|
||||||
|
evidence:
|
||||||
|
storageClass: ceph-filesystem
|
||||||
|
accessMode: ReadWriteMany
|
||||||
|
size: 2Gi
|
||||||
|
|
||||||
|
server:
|
||||||
|
image:
|
||||||
|
repository: us-docker.pkg.dev/osdfir-registry/turbinia/release/turbinia-server
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
tag: "20240510"
|
||||||
|
podSecurityContext: {}
|
||||||
|
securityContext: {}
|
||||||
|
nodeSelector: {}
|
||||||
|
tolerations: []
|
||||||
|
affinity: {}
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 500m
|
||||||
|
memory: 1Gi
|
||||||
|
requests:
|
||||||
|
cpu: 50m
|
||||||
|
memory: 128Mi
|
||||||
|
|
||||||
|
worker:
|
||||||
|
image:
|
||||||
|
repository: us-docker.pkg.dev/osdfir-registry/turbinia/release/turbinia-worker
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
tag: "20240510"
|
||||||
|
podSecurityContext: {}
|
||||||
|
securityContext:
|
||||||
|
# Due to Turbinia attaching and detaching disks, a privileged container is required for the worker container.
|
||||||
|
privileged: true
|
||||||
|
nodeSelector: {}
|
||||||
|
tolerations: []
|
||||||
|
affinity: {}
|
||||||
|
autoscaling:
|
||||||
|
minReplicas: 1
|
||||||
|
maxReplicas: 2
|
||||||
|
targetCPUUtilizationPercentage: 50
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 500m
|
||||||
|
memory: 1Gi
|
||||||
|
requests:
|
||||||
|
cpu: 50m
|
||||||
|
memory: 128Mi
|
||||||
|
|
||||||
|
api:
|
||||||
|
image:
|
||||||
|
repository: us-docker.pkg.dev/osdfir-registry/turbinia/release/turbinia-api-server
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
tag: "20240510"
|
||||||
|
podSecurityContext: {}
|
||||||
|
securityContext: {}
|
||||||
|
nodeSelector: {}
|
||||||
|
tolerations: []
|
||||||
|
affinity: {}
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 500m
|
||||||
|
memory: 1Gi
|
||||||
|
requests:
|
||||||
|
cpu: 50m
|
||||||
|
memory: 128Mi
|
||||||
|
|
||||||
|
controller:
|
||||||
|
image:
|
||||||
|
repository: us-docker.pkg.dev/osdfir-registry/turbinia/release/turbinia-controller
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
tag: "20240510"
|
||||||
|
podSecurityContext: {}
|
||||||
|
securityContext: {}
|
||||||
|
nodeSelector: {}
|
||||||
|
tolerations: []
|
||||||
|
affinity: {}
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 500m
|
||||||
|
memory: 1Gi
|
||||||
|
requests:
|
||||||
|
cpu: 50m
|
||||||
|
memory: 128Mi
|
||||||
|
|
||||||
|
metrics:
|
||||||
|
port: 9001
|
Loading…
Reference in a new issue