feat(yeti): add it
This commit is contained in:
parent
6dd85fc5b0
commit
5ad5613ea0
13 changed files with 671 additions and 0 deletions
20
charts/yeti/Chart.yaml
Normal file
20
charts/yeti/Chart.yaml
Normal file
|
@ -0,0 +1,20 @@
|
|||
apiVersion: v2
|
||||
name: yeti
|
||||
version: 1.0.2
|
||||
description: A Helm chart for Yeti Kubernetes deployments.
|
||||
keywords:
|
||||
- yeti
|
||||
- dfir
|
||||
- security
|
||||
home: "https://yeti-platform.io/"
|
||||
maintainers:
|
||||
- name: Tommy Skaug
|
||||
email: tommy@skaug.me
|
||||
url: https://github.com/tommy-skaug/charts
|
||||
sources:
|
||||
- https://github.com/yeti-platform/yeti
|
||||
- https://github.com/google/osdfir-infrastructure
|
||||
appVersion: "latest"
|
||||
annotations:
|
||||
category: Security
|
||||
licenses: Apache-2.0
|
1
charts/yeti/README.org
Normal file
1
charts/yeti/README.org
Normal file
|
@ -0,0 +1 @@
|
|||
* TODO figure out what the pvc was used for and if we can do without it
|
71
charts/yeti/templates/_env.tpl
Normal file
71
charts/yeti/templates/_env.tpl
Normal file
|
@ -0,0 +1,71 @@
|
|||
{{/*
|
||||
Init Container for when a Timesketch pod starts. To prevent duplicate code,
|
||||
this file has been created which then applies to both the Timesketch Web and
|
||||
Worker pod upon startup.
|
||||
*/}}
|
||||
{{- define "yeti.envs" -}}
|
||||
- name: YETI_REDIS_HOST
|
||||
value: {{ .Values.redis.host }}
|
||||
- name: YETI_REDIS_PORT
|
||||
value: "{{ .Values.redis.port }}"
|
||||
- name: YETI_REDIS_DATABASE
|
||||
value: "0"
|
||||
- name: YETI_ARANGODB_HOST
|
||||
value: {{ .Values.arangodb.host }}
|
||||
- name: YETI_ARANGODB_PORT
|
||||
value: {{ .Values.arangodb.port | quote }}
|
||||
- name: YETI_ARANGODB_DATABASE
|
||||
value: {{ .Values.arangodb.database | quote }}
|
||||
- name: YETI_ARANGODB_USERNAME
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ .Values.existingSecret }}
|
||||
key: YETI_ARANGODB_USERNAME
|
||||
- name: YETI_ARANGODB_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ .Values.existingSecret }}
|
||||
key: YETI_ARANGODB_PASSWORD
|
||||
- name: YETI_AUTH_SECRET_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ .Values.existingSecret }}
|
||||
key: YETI_AUTH_SECRET_KEY
|
||||
- name: YETI_AUTH_ALGORITHM
|
||||
value: HS256
|
||||
- name: YETI_AUTH_ACCESS_TOKEN_EXPIRE_MINUTES
|
||||
value: "30"
|
||||
- name: YETI_AUTH_ENABLED
|
||||
value: "True"
|
||||
- name: YETI_SYSTEM_PLUGINS_PATH
|
||||
value: "./plugins"
|
||||
- name: YETI_USER_USERNAME
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ .Values.existingSecret }}
|
||||
key: YETI_USER
|
||||
- name: YETI_USER_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ .Values.existingSecret }}
|
||||
key: YETI_USER_PASSWORD
|
||||
- name: YETI_API_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ .Values.existingSecret }}
|
||||
key: YETI_API_KEY
|
||||
{{- if .Values.timesketch.enabled }}
|
||||
- name: YETI_TIMESKETCH_ENDPOINT
|
||||
value: {{ .Values.timesketch.endpoint }}
|
||||
- name: YETI_TIMESKETCH_USERNAME
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ .Values.existingSecret }}
|
||||
key: YETI_TIMESKETCH_USERNAME
|
||||
- name: YETI_TIMESKETCH_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ .Values.existingSecret }}
|
||||
key: YETI_TIMESKETCH_PASSWORD
|
||||
{{- end }}
|
||||
{{- end }}
|
45
charts/yeti/templates/_helpers.tpl
Normal file
45
charts/yeti/templates/_helpers.tpl
Normal file
|
@ -0,0 +1,45 @@
|
|||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "yeti.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
*/}}
|
||||
{{- define "yeti.fullname" -}}
|
||||
{{- if contains .Chart.Name .Release.Name }}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- printf "%s-%s" .Release.Name "yeti" | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "yeti.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Common labels
|
||||
*/}}
|
||||
{{- define "yeti.labels" -}}
|
||||
helm.sh/chart: {{ include "yeti.chart" . }}
|
||||
{{ include "yeti.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 "yeti.selectorLabels" -}}
|
||||
app.kubernetes.io/name: {{ include "yeti.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end }}
|
181
charts/yeti/templates/config.yaml
Normal file
181
charts/yeti/templates/config.yaml
Normal file
|
@ -0,0 +1,181 @@
|
|||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ include "timesketch.fullname" . }}-init-configmap
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
{{- include "timesketch.labels" . | nindent 4 }}
|
||||
data:
|
||||
yeti.conf: |
|
||||
[system]
|
||||
|
||||
##
|
||||
## Basic system settings
|
||||
##
|
||||
|
||||
# if export_path is not set, then the default value is /tmp
|
||||
export_path = /opt/yeti/exports
|
||||
logging = /var/log/yeti_user_activity.log
|
||||
plugins_path = ./plugins
|
||||
audit_logfile = /var/log/yeti_audit.log
|
||||
|
||||
# Public scheme + hostname + port for Yeti. Use it if you want to specify an
|
||||
# OIDC callback
|
||||
# for testing use also a port number, e.g. http://localhost:8000
|
||||
# webroot =
|
||||
|
||||
[auth]
|
||||
|
||||
##
|
||||
## Use these settings to configure Yeti authentication.
|
||||
##
|
||||
|
||||
# oidc, local
|
||||
module = oidc
|
||||
|
||||
# to get a stronger value run:
|
||||
# openssl rand -hex 32
|
||||
# SECRET_KEY = SECRET
|
||||
# ALGORITHM = HS256
|
||||
# ACCESS_TOKEN_EXPIRE_MINUTES = 30
|
||||
enabled = True
|
||||
|
||||
# OIDC
|
||||
#
|
||||
# Google can be used as an OIDC provider:
|
||||
# See Instructions here: https://developers.google.com/identity/protocols/oauth2
|
||||
#
|
||||
# OIDC_CLIENT_ID = LONGRANDOMSTRING.apps.googleusercontent.com
|
||||
# OIDC_CLIENT_SECRET = BLABLA-BLABLABLA
|
||||
# OIDC_DISCOVERY_URL = https://accounts.google.com/.well-known/openid-configuration
|
||||
|
||||
[tag]
|
||||
|
||||
##
|
||||
## Use these settings to configure Yeti tags.
|
||||
## If you specify default_tag_expiration = 7776000, then the tag will expire for 90 days.
|
||||
## Value must be in seconds (7776000 seconds is 90 days).
|
||||
##
|
||||
|
||||
# default_tag_expiration = 7776000
|
||||
|
||||
[arangodb]
|
||||
|
||||
##
|
||||
## Use these settings to configure how to connect to your ArangoDB database.
|
||||
## All settings are optional, with default values being the one in the comment.
|
||||
## If you do not specify a username and password, there will be no authentication.
|
||||
##
|
||||
|
||||
# host = arangodb
|
||||
# port = 8529
|
||||
# username = root
|
||||
# password =
|
||||
# database = yeti_dev
|
||||
|
||||
[redis]
|
||||
|
||||
##
|
||||
## Use these settings to configure how to connect to your redis server.
|
||||
## All settings are optional, with default values being the one in the comment.
|
||||
##
|
||||
|
||||
# host = redis
|
||||
# port = 6379
|
||||
# database = 0
|
||||
# tls = ok
|
||||
|
||||
[misp]
|
||||
|
||||
##
|
||||
## Use this setting in order to specify a comma-separated list of MISP instances
|
||||
## that should be taken into account by the MISP feed.
|
||||
##
|
||||
|
||||
# instances = misp_1
|
||||
|
||||
[misp_1]
|
||||
|
||||
##
|
||||
## For each instance in the 'misp.instances' setting, you should specify a
|
||||
## configuration block with this format, in order to specify at least the URL
|
||||
## and the auth key.
|
||||
##
|
||||
|
||||
# name = MISP_1
|
||||
# url = MISP_URL
|
||||
# key = MISP_AUTH_KEY
|
||||
# galaxy_filter = filtering_galaxy_to_drop
|
||||
# days = days_history_to_change_by_default_60_days
|
||||
# verifycert = true_or_false
|
||||
|
||||
[proxy]
|
||||
|
||||
# Format proxies like socks5://user:pass@host:port
|
||||
|
||||
http =
|
||||
https =
|
||||
|
||||
[github]
|
||||
# Generate token: https://github.com/settings/tokens
|
||||
# Select repo only
|
||||
# no token - limit 60 r/h
|
||||
# w/ token - limit 5k r/h
|
||||
# token =
|
||||
|
||||
[otx]
|
||||
key = YourOTXKey
|
||||
days = 1
|
||||
|
||||
[abuseIPDB]
|
||||
key = YourKey
|
||||
|
||||
[phishtank]
|
||||
key=
|
||||
|
||||
[vt]
|
||||
key=
|
||||
|
||||
[passivedns]
|
||||
login=
|
||||
password=
|
||||
url=
|
||||
|
||||
[circl_passivessl]
|
||||
username=
|
||||
password=
|
||||
|
||||
[circl_pdns]
|
||||
username=
|
||||
password=
|
||||
|
||||
[dnsdb]
|
||||
api_key=
|
||||
|
||||
[macaddressio]
|
||||
api_key=
|
||||
|
||||
[malshare]
|
||||
api_key=
|
||||
|
||||
[timesketch]
|
||||
endpoint =
|
||||
username =
|
||||
password =
|
||||
|
||||
[censys]
|
||||
api_key =
|
||||
secret =
|
||||
|
||||
[shodan]
|
||||
|
||||
# Set result_limit to -1 for unlimited results, default is 100
|
||||
|
||||
api_key =
|
||||
result_limit =
|
||||
|
||||
|
||||
[dfiq]
|
||||
|
||||
# Comma-separated list of additional directories to load DFIQ objects from.
|
||||
extra_dirs = /dfiq
|
25
charts/yeti/templates/configmap-frontend.yaml
Normal file
25
charts/yeti/templates/configmap-frontend.yaml
Normal file
|
@ -0,0 +1,25 @@
|
|||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ include "yeti.fullname" . }}-frontend-nginx
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
{{- include "yeti.labels" . | nindent 4 }}
|
||||
data:
|
||||
default.conf: |
|
||||
server {
|
||||
|
||||
root /www;
|
||||
|
||||
location /api/v2 {
|
||||
proxy_pass http://{{ include "yeti.fullname" . }}-api.{{ .Release.Namespace }}.svc.cluster.local:8080;
|
||||
}
|
||||
|
||||
location ~(^/docs|^/openapi.json) {
|
||||
proxy_pass http://{{ include "yeti.fullname" . }}-api.{{ .Release.Namespace }}.svc.cluster.local:8080;
|
||||
}
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
}
|
62
charts/yeti/templates/deployment-api.yaml
Normal file
62
charts/yeti/templates/deployment-api.yaml
Normal file
|
@ -0,0 +1,62 @@
|
|||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ include "yeti.fullname" . }}-api
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
app.kubernetes.io/component: api
|
||||
{{- include "yeti.labels" . | nindent 4 }}
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/component: api
|
||||
{{- include "yeti.selectorLabels" . | nindent 6 }}
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
# Have Deployment restart after each upgrade
|
||||
roll: {{ randAlphaNum 5 | quote }}
|
||||
{{- if .Values.metrics.enabled }}
|
||||
prometheus.io/port: {{ .Values.metrics.port | quote }}
|
||||
prometheus.io/scrape: "true"
|
||||
{{- end }}
|
||||
labels:
|
||||
app.kubernetes.io/component: api
|
||||
{{- include "yeti.selectorLabels" . | nindent 8 }}
|
||||
spec:
|
||||
serviceAccountName: {{ .Values.serviceAccount.name }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.backend.podSecurityContext | nindent 8 }}
|
||||
containers:
|
||||
- name: api
|
||||
securityContext:
|
||||
{{- toYaml .Values.backend.containerSecurityContext | nindent 12 }}
|
||||
image: "{{ .Values.backend.image.repository }}:{{ .Values.backend.image.tag | default .Chart.AppVersion }}"
|
||||
imagePullPolicy: {{ .Values.backend.image.pullPolicy }}
|
||||
command: ["sh", "-c", "/docker-entrypoint.sh webserver"]
|
||||
lifecycle:
|
||||
postStart:
|
||||
exec:
|
||||
command: ["sh", "-c", "poetry run python yetictl/cli.py create-user $YETI_USER_USERNAME $YETI_USER_PASSWORD --api_key $YETI_API_KEY --admin || true"]
|
||||
env:
|
||||
{{- include "yeti.envs" . | nindent 12 }}
|
||||
ports:
|
||||
{{- if .Values.metrics.enabled }}
|
||||
- containerPort: {{ .Values.metrics.port }}
|
||||
{{- end }}
|
||||
- containerPort: 8000
|
||||
resources:
|
||||
{{- toYaml .Values.backend.api.resources | nindent 12 }}
|
||||
{{- with .Values.backend.api.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.backend.api.affinity }}
|
||||
affinity:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.backend.api.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
64
charts/yeti/templates/deployment-frontend.yaml
Normal file
64
charts/yeti/templates/deployment-frontend.yaml
Normal file
|
@ -0,0 +1,64 @@
|
|||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ include "yeti.fullname" . }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
app.kubernetes.io/component: frontend
|
||||
{{- include "yeti.labels" . | nindent 4 }}
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/component: frontend
|
||||
{{- include "yeti.selectorLabels" . | nindent 6 }}
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
# Have Deployment restart after each upgrade
|
||||
roll: {{ randAlphaNum 5 | quote }}
|
||||
{{- if .Values.metrics.enabled }}
|
||||
prometheus.io/port: {{ .Values.metrics.port | quote }}
|
||||
prometheus.io/scrape: "true"
|
||||
{{- end }}
|
||||
labels:
|
||||
app.kubernetes.io/component: frontend
|
||||
{{- include "yeti.selectorLabels" . | nindent 8 }}
|
||||
spec:
|
||||
serviceAccountName: {{ .Values.serviceAccount.name }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.frontend.podSecurityContext | nindent 8 }}
|
||||
containers:
|
||||
- name: frontend
|
||||
securityContext:
|
||||
{{- toYaml .Values.frontend.containerSecurityContext | nindent 12 }}
|
||||
image: "{{ .Values.frontend.image.repository }}:{{ .Values.frontend.image.tag | default .Chart.AppVersion }}"
|
||||
imagePullPolicy: {{ .Values.frontend.image.pullPolicy }}
|
||||
ports:
|
||||
{{- if .Values.metrics.enabled }}
|
||||
- containerPort: {{ .Values.metrics.port }}
|
||||
{{- end }}
|
||||
- containerPort: 80
|
||||
resources:
|
||||
{{- toYaml .Values.frontend.resources | nindent 12 }}
|
||||
volumeMounts:
|
||||
- mountPath: /etc/nginx/conf.d/default.conf
|
||||
subPath: default.conf
|
||||
name: nginx-config
|
||||
readOnly: true
|
||||
volumes:
|
||||
- name: nginx-config
|
||||
configMap:
|
||||
name: {{ include "yeti.fullname" . }}-frontend-nginx
|
||||
{{- with .Values.frontend.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.frontend.affinity }}
|
||||
affinity:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.frontend.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
57
charts/yeti/templates/deployment-tasks.yaml
Normal file
57
charts/yeti/templates/deployment-tasks.yaml
Normal file
|
@ -0,0 +1,57 @@
|
|||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ include "yeti.fullname" . }}-tasks
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
app.kubernetes.io/component: tasks
|
||||
{{- include "yeti.labels" . | nindent 4 }}
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/component: tasks
|
||||
{{- include "yeti.selectorLabels" . | nindent 6 }}
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
# Have Deployment restart after each upgrade
|
||||
roll: {{ randAlphaNum 5 | quote }}
|
||||
{{- if .Values.metrics.enabled }}
|
||||
prometheus.io/port: {{ .Values.metrics.port | quote }}
|
||||
prometheus.io/scrape: "true"
|
||||
{{- end }}
|
||||
labels:
|
||||
app.kubernetes.io/component: tasks
|
||||
{{- include "yeti.selectorLabels" . | nindent 8 }}
|
||||
spec:
|
||||
serviceAccountName: {{ .Values.serviceAccount.name }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.backend.podSecurityContext | nindent 8 }}
|
||||
containers:
|
||||
- name: tasks
|
||||
securityContext:
|
||||
{{- toYaml .Values.backend.tasks.containerSecurityContext | nindent 12 }}
|
||||
image: "{{ .Values.backend.image.repository }}:{{ .Values.backend.image.tag | default .Chart.AppVersion }}"
|
||||
imagePullPolicy: {{ .Values.backend.image.pullPolicy }}
|
||||
command: ["sh", "-c", "echo sleeping && sleep 75 && /docker-entrypoint.sh tasks"]
|
||||
env:
|
||||
{{- include "yeti.envs" . | nindent 12 }}
|
||||
ports:
|
||||
{{- if .Values.metrics.enabled }}
|
||||
- containerPort: {{ .Values.metrics.port }}
|
||||
{{- end }}
|
||||
resources:
|
||||
{{- toYaml .Values.backend.tasks.resources | nindent 12 }}
|
||||
{{- with .Values.backend.tasks.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.backend.tasks.affinity }}
|
||||
affinity:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.backend.tasks.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
33
charts/yeti/templates/service-server.yaml
Normal file
33
charts/yeti/templates/service-server.yaml
Normal file
|
@ -0,0 +1,33 @@
|
|||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ include "yeti.fullname" . }}-frontend
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
{{- include "yeti.labels" . | nindent 4 }}
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 8080
|
||||
protocol: TCP
|
||||
targetPort: 80
|
||||
selector:
|
||||
app.kubernetes.io/component: frontend
|
||||
{{- include "yeti.selectorLabels" . | nindent 4 }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ include "yeti.fullname" . }}-api
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
{{- include "yeti.labels" . | nindent 4 }}
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 8080
|
||||
protocol: TCP
|
||||
targetPort: 8000
|
||||
selector:
|
||||
app.kubernetes.io/component: api
|
||||
{{- include "yeti.selectorLabels" . | nindent 4 }}
|
10
charts/yeti/templates/serviceaccount.yaml
Normal file
10
charts/yeti/templates/serviceaccount.yaml
Normal file
|
@ -0,0 +1,10 @@
|
|||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ .Values.serviceAccount.name }}
|
||||
labels:
|
||||
{{- include "yeti.labels" . | nindent 4 }}
|
||||
{{- with .Values.serviceAccount.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
31
charts/yeti/tests/values.yaml
Normal file
31
charts/yeti/tests/values.yaml
Normal file
|
@ -0,0 +1,31 @@
|
|||
config:
|
||||
externalUrl: https://cache.example.com/
|
||||
|
||||
persistence:
|
||||
existingClaim: attic
|
||||
|
||||
initContainers:
|
||||
dbInit:
|
||||
image:
|
||||
repository: ghcr.io/onedr0p/postgres-init
|
||||
tag: "16"
|
||||
envFrom:
|
||||
- secretRef:
|
||||
name: attic-secret
|
||||
|
||||
envFromSecret: attic-secret
|
||||
|
||||
image:
|
||||
repository: ghcr.io/zhaofengli/attic
|
||||
tag: 4dbdbee45728d8ce5788db6461aaaa89d98081f0
|
||||
|
||||
postgres:
|
||||
secretName: attic-secret
|
||||
|
||||
resources:
|
||||
limits:
|
||||
memory: "3Gi"
|
||||
cpu: "1000m"
|
||||
# requests:
|
||||
# cpu: 100m
|
||||
# memory: 250Mi
|
71
charts/yeti/values.yaml
Normal file
71
charts/yeti/values.yaml
Normal file
|
@ -0,0 +1,71 @@
|
|||
existingSecret: yeti-secret
|
||||
|
||||
frontend:
|
||||
image:
|
||||
repository: yetiplatform/yeti-frontend
|
||||
tag: 2.1.6
|
||||
pullPolicy: IfNotPresent
|
||||
podSecurityContext: {}
|
||||
containerSecurityContext: {}
|
||||
nodeSelector: {}
|
||||
affinity: {}
|
||||
tolerations: {}
|
||||
resources:
|
||||
requests:
|
||||
memory: "100Mi"
|
||||
cpu: "50m"
|
||||
limits:
|
||||
memory: "2Gi"
|
||||
cpu: "1000m"
|
||||
|
||||
backend:
|
||||
image:
|
||||
repository: yetiplatform/yeti
|
||||
tag: 2.1.6
|
||||
pullPolicy: IfNotPresent
|
||||
podSecurityContext: {}
|
||||
api:
|
||||
containerSecurityContext: {}
|
||||
nodeSelector: {}
|
||||
affinity: {}
|
||||
tolerations: {}
|
||||
resources:
|
||||
requests:
|
||||
memory: "100Mi"
|
||||
cpu: "50m"
|
||||
limits:
|
||||
memory: "2Gi"
|
||||
cpu: "1000m"
|
||||
tasks:
|
||||
containerSecurityContext: {}
|
||||
nodeSelector: {}
|
||||
affinity: {}
|
||||
tolerations: {}
|
||||
resources:
|
||||
requests:
|
||||
memory: "100Mi"
|
||||
cpu: "50m"
|
||||
limits:
|
||||
memory: "2Gi"
|
||||
cpu: "1000m"
|
||||
|
||||
redis:
|
||||
host: dragonfly.databases.svc.cluster.local
|
||||
port: 6397
|
||||
|
||||
arangodb:
|
||||
database: yeti
|
||||
host: arango-dfir-cluster-ea.databases.svc.cluster.local
|
||||
port: 8529
|
||||
|
||||
timesketch:
|
||||
enabled: false
|
||||
endpoint: ""
|
||||
|
||||
serviceAccount:
|
||||
name: "yeti"
|
||||
annotations: {}
|
||||
|
||||
metrics:
|
||||
enabled: true
|
||||
port: 9001
|
Loading…
Reference in a new issue