chart-helm-gitea/templates/gitea-deployment.yaml

114 lines
4.8 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ template "gitea.fullname" . }}
labels:
{{- include "gitea.labels" . | nindent 4 }}
app.kubernetes.io/component: application
spec:
replicas: {{ .Values.gitea.replicaCount }}
selector:
matchLabels:
{{- include "gitea.selectorLabels" . | nindent 6 }}
app.kubernetes.io/component: application
template:
metadata:
labels:
{{- include "gitea.selectorLabels" . | nindent 8 }}
app.kubernetes.io/component: application
spec:
containers:
- name: gitea
image: "{{ .Values.gitea.image.repository }}:{{ .Values.gitea.image.tag }}"
imagePullPolicy: {{ .Values.gitea.image.pullPolicy }}
ports:
- name: http
containerPort: {{ .Values.gitea.service.httpPort }}
protocol: TCP
- name: ssh
containerPort: {{ .Values.gitea.service.sshPort }} # Port SSH interne Gitea (par défaut 22, mais l'image l'expose souvent sur 2222 pour éviter conflit)
protocol: TCP # Vérifiez la doc de l'image Docker Gitea pour le port SSH interne exact si besoin
env:
# Configuration de base Gitea
- name: USER
value: git # L'utilisateur sous lequel Gitea tourne dans le conteneur (souvent 'git')
- name: GITEA__database__DB_TYPE
value: {{ .Values.gitea.config.database.DB_TYPE }}
{{- if .Values.postgresql.enabled }}
- name: GITEA__database__HOST
value: {{ template "postgresql.serviceName" . }}:{{ .Values.postgresql.service.port }}
- name: GITEA__database__NAME
valueFrom:
secretKeyRef:
name: {{ template "postgresql.secretName" . }}
key: database
- name: GITEA__database__USER
valueFrom:
secretKeyRef:
name: {{ template "postgresql.secretName" . }}
key: username
- name: GITEA__database__PASSWD
valueFrom:
secretKeyRef:
name: {{ template "postgresql.secretName" . }}
key: password
{{- else }}
# Si postgresql.enabled est false, vous devez fournir ces valeurs autrement (ex: via values.yaml ou un autre secret)
# - name: GITEA__database__HOST
# value: <votre_host_postgres_externe>:<port>
# - name: GITEA__database__NAME
# value: <votre_db_name>
# - name: GITEA__database__USER
# value: <votre_user>
# - name: GITEA__database__PASSWD
# valueFrom:
# secretKeyRef:
# name: <votre_secret_db_externe>
# key: password
{{- end }}
- name: GITEA__server__DOMAIN
value: {{ .Values.gitea.ingress.host }}
- name: GITEA__server__ROOT_URL
{{- if .Values.gitea.ingress.tls.enabled }}
value: "https://{{ .Values.gitea.ingress.host }}"
{{- else }}
value: "http://{{ .Values.gitea.ingress.host }}"
{{- end }}
- name: GITEA__server__SSH_DOMAIN
value: {{ .Values.gitea.ingress.host }} # Ou un domaine différent si SSH est exposé autrement
- name: GITEA__server__HTTP_PORT
value: "{{ .Values.gitea.service.httpPort }}"
- name: GITEA__server__SSH_PORT # Port sur lequel le serveur SSH Gitea écoute à l'intérieur du conteneur
value: "{{ .Values.gitea.service.sshPort }}"
# - name: GITEA__security__INSTALL_LOCK # Décommentez et mettez à true après la première config via l'UI
# value: "true"
# - name: GITEA__service__DISABLE_REGISTRATION # Décommentez pour désactiver l'enregistrement public
# value: "true"
# Ajoutez d'autres variables GITEA__<section>__<clé> ici si nécessaire
{{- if .Values.gitea.persistence.enabled }}
volumeMounts:
- name: gitea-data
mountPath: {{ .Values.gitea.persistence.mountPath }}
{{- end }}
# Ajouter Liveness/Readiness Probes pour Gitea est une bonne pratique
livenessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 60
periodSeconds: 10
readinessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 10
periodSeconds: 5
volumes:
{{- if .Values.gitea.persistence.enabled }}
- name: gitea-data
persistentVolumeClaim:
claimName: {{ template "gitea.pvcName" . }}
{{- else }}
- name: gitea-data # Volume éphémère si persistance désactivée
emptyDir: {}
{{- end }}