Files
loops-helm/chart/templates/infrastructure.yaml
T
feedc0de 3795736e5e
Validate, publish and promote loops chart / publish (push) Successful in 2s
Validate, publish and promote loops chart / validate (push) Successful in 1s
Package loops Kubernetes deployment
2026-10-22 17:39:25 +02:00

270 lines
7.3 KiB
YAML

apiVersion: v1
kind: Service
metadata:
name: mysql
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: mysql
app.kubernetes.io/part-of: loops
spec:
clusterIP: None
selector:
app.kubernetes.io/name: mysql
app.kubernetes.io/part-of: loops
ports:
- name: mysql
port: 3306
targetPort: mysql
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mysql
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: mysql
app.kubernetes.io/part-of: loops
spec:
serviceName: mysql
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: mysql
app.kubernetes.io/part-of: loops
template:
metadata:
labels:
app.kubernetes.io/name: mysql
app.kubernetes.io/part-of: loops
spec:
terminationGracePeriodSeconds: 120
securityContext:
fsGroup: 999
fsGroupChangePolicy: OnRootMismatch
containers:
- name: mysql
image: mysql:8.4.11
imagePullPolicy: IfNotPresent
args:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --innodb-file-per-table=1
ports:
- name: mysql
containerPort: 3306
env:
- name: MYSQL_DATABASE
value: loops
- name: MYSQL_USER
value: loops
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
name: {{ .Values.mysql.authSecret }}
key: password
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: {{ .Values.mysql.authSecret }}
key: root-password
readinessProbe:
exec:
command:
- sh
- -ec
- mysqladmin ping -h 127.0.0.1 -u root -p"$MYSQL_ROOT_PASSWORD" --silent
initialDelaySeconds: 10
periodSeconds: 5
timeoutSeconds: 5
livenessProbe:
exec:
command:
- sh
- -ec
- mysqladmin ping -h 127.0.0.1 -u root -p"$MYSQL_ROOT_PASSWORD" --silent
initialDelaySeconds: 600
periodSeconds: 10
timeoutSeconds: 5
resources:
requests:
cpu: 250m
memory: 768Mi
limits:
cpu: "2"
memory: 2Gi
volumeMounts:
- name: data
mountPath: /var/lib/mysql
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes:
- ReadWriteOnce
storageClassName: {{ .Values.mysql.storageClass | quote }}
resources:
requests:
storage: {{ .Values.mysql.storageSize }}
---
apiVersion: v1
kind: Service
metadata:
name: valkey
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: valkey
app.kubernetes.io/part-of: loops
spec:
clusterIP: None
selector:
app.kubernetes.io/name: valkey
app.kubernetes.io/part-of: loops
ports:
- name: valkey
port: 6379
targetPort: valkey
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: valkey
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: valkey
app.kubernetes.io/part-of: loops
spec:
serviceName: valkey
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: valkey
app.kubernetes.io/part-of: loops
template:
metadata:
labels:
app.kubernetes.io/name: valkey
app.kubernetes.io/part-of: loops
spec:
terminationGracePeriodSeconds: 60
securityContext:
runAsNonRoot: true
runAsUser: 999
runAsGroup: 999
fsGroup: 999
fsGroupChangePolicy: OnRootMismatch
containers:
- name: valkey
image: valkey/valkey-bundle:9.0.6-alpine
imagePullPolicy: IfNotPresent
command:
- sh
- -ec
- exec valkey-server --loadmodule /usr/lib/valkey/libvalkey_bloom.so --appendonly yes --appendfsync everysec --requirepass "$VALKEY_PASSWORD"
env:
- name: VALKEY_PASSWORD
valueFrom:
secretKeyRef:
name: {{ .Values.valkey.authSecret }}
key: password
ports:
- name: valkey
containerPort: 6379
readinessProbe:
exec:
command:
- sh
- -ec
- valkey-cli --no-auth-warning -a "$VALKEY_PASSWORD" ping | grep -qx PONG
initialDelaySeconds: 3
periodSeconds: 5
timeoutSeconds: 3
livenessProbe:
exec:
command:
- sh
- -ec
- valkey-cli --no-auth-warning -a "$VALKEY_PASSWORD" ping | grep -qx PONG
initialDelaySeconds: 20
periodSeconds: 10
timeoutSeconds: 5
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
cpu: "1"
memory: 1Gi
volumeMounts:
- name: data
mountPath: /data
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes:
- ReadWriteOnce
storageClassName: {{ .Values.valkey.storageClass | quote }}
resources:
requests:
storage: {{ .Values.valkey.storageSize }}
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: app-data
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/part-of: loops
spec:
accessModes:
- ReadWriteMany
storageClassName: {{ .Values.persistence.storageClass | quote }}
resources:
requests:
storage: {{ .Values.persistence.storageSize }}
{{- if .Values.s3BucketJob.enabled }}
---
apiVersion: batch/v1
kind: Job
metadata:
name: create-media-bucket
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: create-media-bucket
app.kubernetes.io/part-of: loops
spec:
ttlSecondsAfterFinished: 300
backoffLimit: 5
template:
metadata:
labels:
app.kubernetes.io/name: create-media-bucket
app.kubernetes.io/part-of: loops
spec:
restartPolicy: OnFailure
containers:
- name: aws-cli
image: amazon/aws-cli:2.28.22
command:
- /bin/sh
- -ec
- >-
aws --endpoint-url "$S3_ENDPOINT" s3api head-bucket --bucket {{ .Values.s3BucketJob.bucket }} >/dev/null 2>&1 ||
aws --endpoint-url "$S3_ENDPOINT" s3api create-bucket --bucket {{ .Values.s3BucketJob.bucket }} >/dev/null
env:
- name: S3_ENDPOINT
value: {{ .Values.s3BucketJob.endpoint | quote }}
- name: AWS_DEFAULT_REGION
value: {{ .Values.s3BucketJob.region | quote }}
- name: AWS_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: {{ .Values.s3BucketJob.secretName }}
key: access-key-id
- name: AWS_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: {{ .Values.s3BucketJob.secretName }}
key: secret-access-key
{{- end }}