first commit

This commit is contained in:
2025-07-04 19:51:51 +05:30
commit 42895beb8c
72 changed files with 2584 additions and 0 deletions

View File

@@ -0,0 +1,6 @@
apiVersion: v2
name: gitea
description: A Helm chart for Gitea
type: application
version: 0.1.0
appVersion: "1.24.2"

View File

@@ -0,0 +1,39 @@
name: gitea
namespace: prod
image:
app:
repository: gitea/gitea
tag: 1.24.2
db:
repository: postgres
tag: 15.10
env:
USER_UID: 1000
USER_GID: 1000
DB_NAME: gitea
DB_USER: gitea
secrets:
GITEA__database__PASSWD:
name: gitea-db-secret
key: password
persistence:
app:
enabled: true
existingClaim: true
claimName: longhorn-gitea
db:
enabled: true
existingClaim: true
claimName: longhorn-gitea-db
service:
app:
type: LoadBalancer
port: 3111
ssh:
type: LoadBalancer
port: 222

View File

@@ -0,0 +1,51 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: "{{ .Values.name }}-db"
namespace: {{ .Values.namespace }}
spec:
selector:
matchLabels:
app: "{{ .Values.name }}-db"
template:
metadata:
labels:
app: "{{ .Values.name }}-db"
spec:
initContainers:
- name: init-cleanup
image: busybox
command: ["rm", "-rf", "/var/lib/postgresql/data/lost+found"]
volumeMounts:
- name: db
mountPath: /var/lib/postgresql/data
containers:
- name: "{{ .Values.name }}-db"
image: "{{ .Values.image.db.repository }}:{{ .Values.image.db.tag }}"
env:
- name: POSTGRES_USER
value: "{{ .Values.env.DB_USER }}"
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: {{ .Values.secrets.GITEA__database__PASSWD.name }}
key: {{ .Values.secrets.GITEA__database__PASSWD.key }}
- name: POSTGRES_DB
value: "{{ .Values.env.DB_NAME }}"
volumeMounts:
- name: db
mountPath: /var/lib/postgresql/data
volumes:
{{- if and .Values.persistence.db.enabled .Values.persistence.db.existingClaim }}
- name: db
persistentVolumeClaim:
claimName: "{{ .Values.persistence.db.claimName }}"
{{- else if .Values.persistence.db.enabled }}
- name: db
persistentVolumeClaim:
claimName: "longhorn-{{ .Values.name }}-db"
{{- else }}
- name: db
emptyDir: {}
{{- end }}

View File

@@ -0,0 +1,35 @@
---
{{- if Values.persistence.app.enabled }}
{{- if not Values.persistence.app.existingClaim }}
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: "longhorn-{{ .Values.name }}"
namespace: {{ .Values.namespace }}
spec:
accessModes:
- ReadWriteMany
storageClassName: longhorn
resources:
requests:
storage: {{ .Values.persistence.app.size }}
{{- end }}
{{- end }}
---
{{- if Values.persistence.db.enabled }}
{{- if not Values.persistence.db.existingClaim }}
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: "longhorn-{{ .Values.name }}-db"
namespace: {{ .Values.namespace }}
spec:
accessModes:
- ReadWriteMany
storageClassName: longhorn
resources:
requests:
storage: {{ .Values.persistence.db.size }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,72 @@
---
apiVersion: v1
kind: Service
metadata:
name: "{{ .Values.name }}-service"
namespace: {{ .Values.namespace }}
spec:
{{- if .Values.service.app.type "LoadBalancer" }}
type: LoadBalancer
{{- else if .Values.service.app.type "NodePort" }}
type: NodePort
{{- end }}
selector:
app: "{{ .Values.name }}-app"
ports:
- targetPort: 3000
protocol: TCP
{{- if .Values.service.app.type "LoadBalancer" }}
port: {{ .Values.service.app.port }}
{{- else if .Values.service.app.type "NodePort" }}
nodePort: {{ .Values.service.app.nodePort }}
{{- end }}
---
apiVersion: v1
kind: Service
metadata:
name: "{{ .Values.name }}-ssh-service"
namespace: {{ .Values.namespace }}
spec:
{{- if eq .Values.service.ssh.type "LoadBalancer" }}
type: LoadBalancer
{{- else if eq .Values.service.ssh.type "NodePort" }}
type: NodePort
{{- end }}
selector:
app: "{{ .Values.name }}-app"
ports:
- targetPort: 22
{{- if eq .Values.service.ssh.type "LoadBalancer" }}
port: {{ .Values.service.ssh.port }}
{{- else if eq .Values.service.ssh.type "NodePort" }}
nodePort: {{ .Values.service.ssh.nodePort }}
{{- end }}
---
apiVersion: v1
kind: Service
metadata:
name: "{{ .Values.name }}-int-service"
namespace: {{ .Values.namespace }}
spec:
selector:
app: "{{ .Values.name }}-app"
ports:
- protocol: TCP
port: 3000
targetPort: 3000
---
apiVersion: v1
kind: Service
metadata:
name: "{{ .Values.name }}-db-service"
namespace: {{ .Values.namespace }}
spec:
selector:
app: "{{ .Values.name }}-db"
ports:
- protocol: TCP
port: 5432
targetPort: 5432

View File

@@ -0,0 +1,77 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: "{{ .Values.name }}-app"
namespace: {{ .Values.namespace }}
spec:
replicas: 1
selector:
matchLabels:
app: "{{ .Values.name }}-app"
template:
metadata:
labels:
app: "{{ .Values.name }}-app"
spec:
initContainers:
- name: wait-for-db
image: busybox
command:
- sh
- -c
- |
until nc -z -v -w30 "{{ .Values.name }}-db-service" 5432; do
echo "Waiting for psql database to be ready"
sleep 2
done
containers:
- name: "{{ .Values.name }}-app"
image: "{{ .Values.image.app.repository }}:{{ .Values.image.app.tag }}"
env:
- name: USER_UID
value: "{{ .Values.env.USER_UID }}"
- name: USER_GID
value: "{{ .Values.env.USER_GID }}"
- name: GITEA__database__DB_TYPE
value: "postgres"
- name: GITEA__database__HOST
value: "{{ .Values.name }}-db-service:5432"
- name: GITEA__database__NAME
value: "{{ .Values.env.DB_NAME }}"
- name: GITEA__database__USER
value: "{{ .Values.env.DB_USER }}"
- name: GITEA__database__PASSWD
valueFrom:
secretKeyRef:
name: {{ .Values.secrets.GITEA__database__PASSWD.name }}
key: {{ .Values.secrets.GITEA__database__PASSWD.key }}
volumeMounts:
- name: config
mountPath: /data
subPath: gitea-data
- name: timezone
mountPath: /etc/timezone
- name: localtime
mountPath: /etc/localtime
volumes:
- name: timezone
hostPath:
path: /etc/timezone
type: File
- name: localtime
hostPath:
path: /etc/localtime
type: File
{{- if and .Values.persistence.app.enabled .Values.persistence.app.existingClaim }}
- name: config
persistentVolumeClaim:
claimName: "{{ .Values.persistence.app.claimName }}"
{{- else if .Values.persistence.app.enabled }}
- name: config
persistentVolumeClaim:
claimName: "longhorn-{{ .Values.name }}"
{{- else }}
- name: config
emptyDir: {}
{{- end }}