Add comprehensive Warehouse13 Helm chart with configurable images
Features: - Complete Helm chart at helm/warehouse13/ with Warehouse13 branding - Configurable images for all components (PostgreSQL, MinIO, API, Frontend) - Support for 3 deployment scenarios: dev, production, air-gapped - 14 Kubernetes templates: Deployments, StatefulSets, Services, Ingress - Persistent storage with configurable storage classes - Health checks for all services - Ingress with TLS support - Security contexts and RBAC - Comprehensive documentation: - HELM-DEPLOYMENT.md (main Kubernetes guide) - helm/warehouse13/README.md (full chart docs) - helm/warehouse13/QUICKSTART.md (5-min deployment) - Example values files (dev, production, air-gapped) - Updated main README.md with Helm deployment instructions - Marked old helm chart as deprecated All component images fully configurable via values.yaml: - postgres:15-alpine - minio/minio:latest - warehouse13/api:latest - warehouse13/frontend:latest 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
138
helm/warehouse13/templates/NOTES.txt
Normal file
138
helm/warehouse13/templates/NOTES.txt
Normal file
@@ -0,0 +1,138 @@
|
||||
|
||||
_ _ _ _ _____
|
||||
| | | | | | / |___ /
|
||||
| | | | __ _ _ __ ___| |__ ___ _ _ ___ / / |_ \
|
||||
| |/\| |/ _` | '__/ _ \ '_ \ / _ \| | | / __|/ / ___) |
|
||||
\ /\ / (_| | | | __/ | | | (_) | |_| \__ \_/ |____/
|
||||
\/ \/ \__,_|_| \___|_| |_|\___/ \__,_|___(_)
|
||||
|
||||
Enterprise Test Artifact Storage has been deployed!
|
||||
|
||||
Chart Name: {{ .Chart.Name }}
|
||||
Chart Version: {{ .Chart.Version }}
|
||||
App Version: {{ .Chart.AppVersion }}
|
||||
|
||||
Release Name: {{ .Release.Name }}
|
||||
Namespace: {{ .Release.Namespace }}
|
||||
|
||||
---
|
||||
|
||||
DEPLOYMENT INFORMATION:
|
||||
|
||||
{{- if .Values.frontend.enabled }}
|
||||
Frontend:
|
||||
Service: warehouse13-frontend
|
||||
Replicas: {{ .Values.frontend.replicas }}
|
||||
Image: {{ .Values.frontend.image.repository }}:{{ .Values.frontend.image.tag }}
|
||||
{{- end }}
|
||||
|
||||
{{- if .Values.api.enabled }}
|
||||
API:
|
||||
Service: warehouse13-api
|
||||
Replicas: {{ .Values.api.replicas }}
|
||||
Image: {{ .Values.api.image.repository }}:{{ .Values.api.image.tag }}
|
||||
{{- end }}
|
||||
|
||||
{{- if .Values.postgres.enabled }}
|
||||
PostgreSQL:
|
||||
Service: warehouse13-postgres
|
||||
Image: {{ .Values.postgres.image.repository }}:{{ .Values.postgres.image.tag }}
|
||||
Persistence: {{ if .Values.postgres.persistence.enabled }}Enabled ({{ .Values.postgres.persistence.size }}){{ else }}Disabled (emptyDir){{ end }}
|
||||
{{- end }}
|
||||
|
||||
{{- if .Values.minio.enabled }}
|
||||
MinIO:
|
||||
Service: warehouse13-minio
|
||||
Image: {{ .Values.minio.image.repository }}:{{ .Values.minio.image.tag }}
|
||||
Persistence: {{ if .Values.minio.persistence.enabled }}Enabled ({{ .Values.minio.persistence.size }}){{ else }}Disabled (emptyDir){{ end }}
|
||||
{{- end }}
|
||||
|
||||
---
|
||||
|
||||
ACCESSING YOUR APPLICATION:
|
||||
|
||||
{{- if .Values.ingress.enabled }}
|
||||
|
||||
1. Via Ingress:
|
||||
{{- range .Values.ingress.hosts }}
|
||||
https://{{ .host }}
|
||||
{{- end }}
|
||||
|
||||
{{- else }}
|
||||
|
||||
1. Using Port Forwarding:
|
||||
|
||||
# Frontend
|
||||
kubectl port-forward -n {{ .Release.Namespace }} svc/warehouse13-frontend 4200:80
|
||||
Then visit: http://localhost:4200
|
||||
|
||||
# API
|
||||
kubectl port-forward -n {{ .Release.Namespace }} svc/warehouse13-api 8000:8000
|
||||
Then visit: http://localhost:8000/docs
|
||||
|
||||
# MinIO Console
|
||||
kubectl port-forward -n {{ .Release.Namespace }} svc/warehouse13-minio 9001:9001
|
||||
Then visit: http://localhost:9001
|
||||
Username: {{ .Values.minio.auth.rootUser }}
|
||||
Password: {{ .Values.minio.auth.rootPassword }}
|
||||
|
||||
2. Expose via LoadBalancer or Ingress for external access.
|
||||
|
||||
{{- end }}
|
||||
|
||||
---
|
||||
|
||||
CHECKING STATUS:
|
||||
|
||||
# View all pods
|
||||
kubectl get pods -n {{ .Release.Namespace }} -l app.kubernetes.io/instance={{ .Release.Name }}
|
||||
|
||||
# Check services
|
||||
kubectl get svc -n {{ .Release.Namespace }} -l app.kubernetes.io/instance={{ .Release.Name }}
|
||||
|
||||
# View logs
|
||||
kubectl logs -n {{ .Release.Namespace }} -l app.kubernetes.io/component=api -f
|
||||
kubectl logs -n {{ .Release.Namespace }} -l app.kubernetes.io/component=frontend -f
|
||||
|
||||
---
|
||||
|
||||
UPGRADING:
|
||||
|
||||
helm upgrade {{ .Release.Name }} warehouse13/warehouse13 \
|
||||
--namespace {{ .Release.Namespace }}
|
||||
|
||||
---
|
||||
|
||||
UNINSTALLING:
|
||||
|
||||
helm uninstall {{ .Release.Name }} --namespace {{ .Release.Namespace }}
|
||||
|
||||
# Note: PVCs are retained. To delete them:
|
||||
kubectl delete pvc -n {{ .Release.Namespace }} -l app.kubernetes.io/instance={{ .Release.Name }}
|
||||
|
||||
---
|
||||
|
||||
{{- if not .Values.ingress.enabled }}
|
||||
⚠️ IMPORTANT: Ingress is disabled. Enable it for production use:
|
||||
--set ingress.enabled=true
|
||||
{{- end }}
|
||||
|
||||
{{- if eq .Values.postgres.auth.password "password" }}
|
||||
⚠️ WARNING: Using default PostgreSQL password!
|
||||
For production, set a secure password:
|
||||
--set postgres.auth.password=YOUR_SECURE_PASSWORD
|
||||
{{- end }}
|
||||
|
||||
{{- if eq .Values.minio.auth.rootPassword "minioadmin" }}
|
||||
⚠️ WARNING: Using default MinIO password!
|
||||
For production, set a secure password:
|
||||
--set minio.auth.rootPassword=YOUR_SECURE_PASSWORD
|
||||
{{- end }}
|
||||
|
||||
---
|
||||
|
||||
For more information, visit:
|
||||
Documentation: https://github.com/yourusername/warehouse13
|
||||
Issues: https://github.com/yourusername/warehouse13/issues
|
||||
|
||||
Thank you for using Warehouse13!
|
||||
71
helm/warehouse13/templates/_helpers.tpl
Normal file
71
helm/warehouse13/templates/_helpers.tpl
Normal file
@@ -0,0 +1,71 @@
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "warehouse13.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
*/}}
|
||||
{{- define "warehouse13.fullname" -}}
|
||||
{{- if .Values.fullnameOverride }}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||
{{- if contains $name .Release.Name }}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "warehouse13.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Common labels
|
||||
*/}}
|
||||
{{- define "warehouse13.labels" -}}
|
||||
helm.sh/chart: {{ include "warehouse13.chart" . }}
|
||||
{{ include "warehouse13.selectorLabels" . }}
|
||||
{{- if .Chart.AppVersion }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
{{- end }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Selector labels
|
||||
*/}}
|
||||
{{- define "warehouse13.selectorLabels" -}}
|
||||
app.kubernetes.io/name: {{ include "warehouse13.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use
|
||||
*/}}
|
||||
{{- define "warehouse13.serviceAccountName" -}}
|
||||
{{- if .Values.serviceAccount.create }}
|
||||
{{- default (include "warehouse13.fullname" .) .Values.serviceAccount.name }}
|
||||
{{- else }}
|
||||
{{- default "default" .Values.serviceAccount.name }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
PostgreSQL connection string
|
||||
*/}}
|
||||
{{- define "warehouse13.postgresUrl" -}}
|
||||
{{- if .Values.api.env.databaseUrl }}
|
||||
{{- .Values.api.env.databaseUrl }}
|
||||
{{- else }}
|
||||
{{- printf "postgresql://%s:%s@warehouse13-postgres:%d/%s" .Values.postgres.auth.username .Values.postgres.auth.password (.Values.postgres.service.port | int) .Values.postgres.auth.database }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
93
helm/warehouse13/templates/api-deployment.yaml
Normal file
93
helm/warehouse13/templates/api-deployment.yaml
Normal file
@@ -0,0 +1,93 @@
|
||||
{{- if .Values.api.enabled }}
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: warehouse13-api
|
||||
labels:
|
||||
{{- include "warehouse13.labels" . | nindent 4 }}
|
||||
app.kubernetes.io/component: api
|
||||
spec:
|
||||
replicas: {{ .Values.api.replicas }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "warehouse13.selectorLabels" . | nindent 6 }}
|
||||
app.kubernetes.io/component: api
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
{{- include "warehouse13.selectorLabels" . | nindent 8 }}
|
||||
app.kubernetes.io/component: api
|
||||
spec:
|
||||
serviceAccountName: {{ include "warehouse13.serviceAccountName" . }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||
containers:
|
||||
- name: api
|
||||
securityContext:
|
||||
{{- toYaml .Values.securityContext | nindent 10 }}
|
||||
image: "{{ .Values.api.image.repository }}:{{ .Values.api.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.api.image.pullPolicy }}
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 8000
|
||||
protocol: TCP
|
||||
env:
|
||||
- name: DATABASE_URL
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: warehouse13-secrets
|
||||
key: database-url
|
||||
- name: STORAGE_BACKEND
|
||||
valueFrom:
|
||||
configMapKeyRef:
|
||||
name: warehouse13-config
|
||||
key: STORAGE_BACKEND
|
||||
- name: MINIO_ENDPOINT
|
||||
valueFrom:
|
||||
configMapKeyRef:
|
||||
name: warehouse13-config
|
||||
key: MINIO_ENDPOINT
|
||||
- name: MINIO_ACCESS_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: warehouse13-secrets
|
||||
key: minio-root-user
|
||||
- name: MINIO_SECRET_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: warehouse13-secrets
|
||||
key: minio-root-password
|
||||
- name: DEPLOYMENT_MODE
|
||||
valueFrom:
|
||||
configMapKeyRef:
|
||||
name: warehouse13-config
|
||||
key: DEPLOYMENT_MODE
|
||||
resources:
|
||||
{{- toYaml .Values.api.resources | nindent 10 }}
|
||||
{{- if .Values.api.healthCheck.enabled }}
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: {{ .Values.api.healthCheck.liveness.path }}
|
||||
port: http
|
||||
initialDelaySeconds: {{ .Values.api.healthCheck.liveness.initialDelaySeconds }}
|
||||
periodSeconds: {{ .Values.api.healthCheck.liveness.periodSeconds }}
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: {{ .Values.api.healthCheck.readiness.path }}
|
||||
port: http
|
||||
initialDelaySeconds: {{ .Values.api.healthCheck.readiness.initialDelaySeconds }}
|
||||
periodSeconds: {{ .Values.api.healthCheck.readiness.periodSeconds }}
|
||||
{{- end }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
19
helm/warehouse13/templates/api-service.yaml
Normal file
19
helm/warehouse13/templates/api-service.yaml
Normal file
@@ -0,0 +1,19 @@
|
||||
{{- if .Values.api.enabled }}
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: warehouse13-api
|
||||
labels:
|
||||
{{- include "warehouse13.labels" . | nindent 4 }}
|
||||
app.kubernetes.io/component: api
|
||||
spec:
|
||||
type: {{ .Values.api.service.type }}
|
||||
ports:
|
||||
- port: {{ .Values.api.service.port }}
|
||||
targetPort: http
|
||||
protocol: TCP
|
||||
name: http
|
||||
selector:
|
||||
{{- include "warehouse13.selectorLabels" . | nindent 4 }}
|
||||
app.kubernetes.io/component: api
|
||||
{{- end }}
|
||||
10
helm/warehouse13/templates/configmap.yaml
Normal file
10
helm/warehouse13/templates/configmap.yaml
Normal file
@@ -0,0 +1,10 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: warehouse13-config
|
||||
labels:
|
||||
{{- include "warehouse13.labels" . | nindent 4 }}
|
||||
data:
|
||||
DEPLOYMENT_MODE: {{ .Values.global.deploymentMode | quote }}
|
||||
STORAGE_BACKEND: {{ .Values.global.storageBackend | quote }}
|
||||
MINIO_ENDPOINT: {{ printf "warehouse13-minio:%d" (.Values.minio.service.apiPort | int) | quote }}
|
||||
73
helm/warehouse13/templates/frontend-deployment.yaml
Normal file
73
helm/warehouse13/templates/frontend-deployment.yaml
Normal file
@@ -0,0 +1,73 @@
|
||||
{{- if .Values.frontend.enabled }}
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: warehouse13-frontend
|
||||
labels:
|
||||
{{- include "warehouse13.labels" . | nindent 4 }}
|
||||
app.kubernetes.io/component: frontend
|
||||
spec:
|
||||
replicas: {{ .Values.frontend.replicas }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "warehouse13.selectorLabels" . | nindent 6 }}
|
||||
app.kubernetes.io/component: frontend
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
{{- include "warehouse13.selectorLabels" . | nindent 8 }}
|
||||
app.kubernetes.io/component: frontend
|
||||
spec:
|
||||
serviceAccountName: {{ include "warehouse13.serviceAccountName" . }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||
containers:
|
||||
- name: frontend
|
||||
securityContext:
|
||||
{{- toYaml .Values.securityContext | nindent 10 }}
|
||||
image: "{{ .Values.frontend.image.repository }}:{{ .Values.frontend.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.frontend.image.pullPolicy }}
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 80
|
||||
protocol: TCP
|
||||
env:
|
||||
- name: DEPLOYMENT_MODE
|
||||
valueFrom:
|
||||
configMapKeyRef:
|
||||
name: warehouse13-config
|
||||
key: DEPLOYMENT_MODE
|
||||
- name: STORAGE_BACKEND
|
||||
valueFrom:
|
||||
configMapKeyRef:
|
||||
name: warehouse13-config
|
||||
key: STORAGE_BACKEND
|
||||
resources:
|
||||
{{- toYaml .Values.frontend.resources | nindent 10 }}
|
||||
{{- if .Values.frontend.healthCheck.enabled }}
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: {{ .Values.frontend.healthCheck.liveness.path }}
|
||||
port: http
|
||||
initialDelaySeconds: {{ .Values.frontend.healthCheck.liveness.initialDelaySeconds }}
|
||||
periodSeconds: {{ .Values.frontend.healthCheck.liveness.periodSeconds }}
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: {{ .Values.frontend.healthCheck.readiness.path }}
|
||||
port: http
|
||||
initialDelaySeconds: {{ .Values.frontend.healthCheck.readiness.initialDelaySeconds }}
|
||||
periodSeconds: {{ .Values.frontend.healthCheck.readiness.periodSeconds }}
|
||||
{{- end }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
19
helm/warehouse13/templates/frontend-service.yaml
Normal file
19
helm/warehouse13/templates/frontend-service.yaml
Normal file
@@ -0,0 +1,19 @@
|
||||
{{- if .Values.frontend.enabled }}
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: warehouse13-frontend
|
||||
labels:
|
||||
{{- include "warehouse13.labels" . | nindent 4 }}
|
||||
app.kubernetes.io/component: frontend
|
||||
spec:
|
||||
type: {{ .Values.frontend.service.type }}
|
||||
ports:
|
||||
- port: {{ .Values.frontend.service.port }}
|
||||
targetPort: http
|
||||
protocol: TCP
|
||||
name: http
|
||||
selector:
|
||||
{{- include "warehouse13.selectorLabels" . | nindent 4 }}
|
||||
app.kubernetes.io/component: frontend
|
||||
{{- end }}
|
||||
41
helm/warehouse13/templates/ingress.yaml
Normal file
41
helm/warehouse13/templates/ingress.yaml
Normal file
@@ -0,0 +1,41 @@
|
||||
{{- if .Values.ingress.enabled -}}
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: warehouse13-ingress
|
||||
labels:
|
||||
{{- include "warehouse13.labels" . | nindent 4 }}
|
||||
{{- with .Values.ingress.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if .Values.ingress.className }}
|
||||
ingressClassName: {{ .Values.ingress.className }}
|
||||
{{- end }}
|
||||
{{- if .Values.ingress.tls }}
|
||||
tls:
|
||||
{{- range .Values.ingress.tls }}
|
||||
- hosts:
|
||||
{{- range .hosts }}
|
||||
- {{ . | quote }}
|
||||
{{- end }}
|
||||
secretName: {{ .secretName }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
rules:
|
||||
{{- range .Values.ingress.hosts }}
|
||||
- host: {{ .host | quote }}
|
||||
http:
|
||||
paths:
|
||||
{{- range .paths }}
|
||||
- path: {{ .path }}
|
||||
pathType: {{ .pathType }}
|
||||
backend:
|
||||
service:
|
||||
name: {{ printf "warehouse13-%s" .backend }}
|
||||
port:
|
||||
number: {{ if eq .backend "frontend" }}{{ $.Values.frontend.service.port }}{{ else }}{{ $.Values.api.service.port }}{{ end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
23
helm/warehouse13/templates/minio-service.yaml
Normal file
23
helm/warehouse13/templates/minio-service.yaml
Normal file
@@ -0,0 +1,23 @@
|
||||
{{- if .Values.minio.enabled }}
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: warehouse13-minio
|
||||
labels:
|
||||
{{- include "warehouse13.labels" . | nindent 4 }}
|
||||
app.kubernetes.io/component: storage
|
||||
spec:
|
||||
type: {{ .Values.minio.service.type }}
|
||||
ports:
|
||||
- port: {{ .Values.minio.service.apiPort }}
|
||||
targetPort: api
|
||||
protocol: TCP
|
||||
name: api
|
||||
- port: {{ .Values.minio.service.consolePort }}
|
||||
targetPort: console
|
||||
protocol: TCP
|
||||
name: console
|
||||
selector:
|
||||
{{- include "warehouse13.selectorLabels" . | nindent 4 }}
|
||||
app.kubernetes.io/component: storage
|
||||
{{- end }}
|
||||
87
helm/warehouse13/templates/minio-statefulset.yaml
Normal file
87
helm/warehouse13/templates/minio-statefulset.yaml
Normal file
@@ -0,0 +1,87 @@
|
||||
{{- if .Values.minio.enabled }}
|
||||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
name: warehouse13-minio
|
||||
labels:
|
||||
{{- include "warehouse13.labels" . | nindent 4 }}
|
||||
app.kubernetes.io/component: storage
|
||||
spec:
|
||||
serviceName: warehouse13-minio
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "warehouse13.selectorLabels" . | nindent 6 }}
|
||||
app.kubernetes.io/component: storage
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
{{- include "warehouse13.selectorLabels" . | nindent 8 }}
|
||||
app.kubernetes.io/component: storage
|
||||
spec:
|
||||
serviceAccountName: {{ include "warehouse13.serviceAccountName" . }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||
containers:
|
||||
- name: minio
|
||||
image: "{{ .Values.minio.image.repository }}:{{ .Values.minio.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.minio.image.pullPolicy }}
|
||||
command:
|
||||
- minio
|
||||
- server
|
||||
- /data
|
||||
- --console-address
|
||||
- ":9001"
|
||||
ports:
|
||||
- name: api
|
||||
containerPort: 9000
|
||||
protocol: TCP
|
||||
- name: console
|
||||
containerPort: 9001
|
||||
protocol: TCP
|
||||
env:
|
||||
- name: MINIO_ROOT_USER
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: warehouse13-secrets
|
||||
key: minio-root-user
|
||||
- name: MINIO_ROOT_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: warehouse13-secrets
|
||||
key: minio-root-password
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: /data
|
||||
resources:
|
||||
{{- toYaml .Values.minio.resources | nindent 10 }}
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /minio/health/live
|
||||
port: api
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 10
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /minio/health/ready
|
||||
port: api
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 5
|
||||
{{- if .Values.minio.persistence.enabled }}
|
||||
volumeClaimTemplates:
|
||||
- metadata:
|
||||
name: data
|
||||
spec:
|
||||
accessModes: [ "ReadWriteOnce" ]
|
||||
{{- if .Values.minio.persistence.storageClass }}
|
||||
storageClassName: {{ .Values.minio.persistence.storageClass }}
|
||||
{{- end }}
|
||||
resources:
|
||||
requests:
|
||||
storage: {{ .Values.minio.persistence.size }}
|
||||
{{- else }}
|
||||
volumes:
|
||||
- name: data
|
||||
emptyDir: {}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
19
helm/warehouse13/templates/postgres-service.yaml
Normal file
19
helm/warehouse13/templates/postgres-service.yaml
Normal file
@@ -0,0 +1,19 @@
|
||||
{{- if .Values.postgres.enabled }}
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: warehouse13-postgres
|
||||
labels:
|
||||
{{- include "warehouse13.labels" . | nindent 4 }}
|
||||
app.kubernetes.io/component: database
|
||||
spec:
|
||||
type: {{ .Values.postgres.service.type }}
|
||||
ports:
|
||||
- port: {{ .Values.postgres.service.port }}
|
||||
targetPort: postgres
|
||||
protocol: TCP
|
||||
name: postgres
|
||||
selector:
|
||||
{{- include "warehouse13.selectorLabels" . | nindent 4 }}
|
||||
app.kubernetes.io/component: database
|
||||
{{- end }}
|
||||
89
helm/warehouse13/templates/postgres-statefulset.yaml
Normal file
89
helm/warehouse13/templates/postgres-statefulset.yaml
Normal file
@@ -0,0 +1,89 @@
|
||||
{{- if .Values.postgres.enabled }}
|
||||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
name: warehouse13-postgres
|
||||
labels:
|
||||
{{- include "warehouse13.labels" . | nindent 4 }}
|
||||
app.kubernetes.io/component: database
|
||||
spec:
|
||||
serviceName: warehouse13-postgres
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "warehouse13.selectorLabels" . | nindent 6 }}
|
||||
app.kubernetes.io/component: database
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
{{- include "warehouse13.selectorLabels" . | nindent 8 }}
|
||||
app.kubernetes.io/component: database
|
||||
spec:
|
||||
serviceAccountName: {{ include "warehouse13.serviceAccountName" . }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||
containers:
|
||||
- name: postgres
|
||||
image: "{{ .Values.postgres.image.repository }}:{{ .Values.postgres.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.postgres.image.pullPolicy }}
|
||||
ports:
|
||||
- name: postgres
|
||||
containerPort: 5432
|
||||
protocol: TCP
|
||||
env:
|
||||
- name: POSTGRES_USER
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: warehouse13-secrets
|
||||
key: postgres-username
|
||||
- name: POSTGRES_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: warehouse13-secrets
|
||||
key: postgres-password
|
||||
- name: POSTGRES_DB
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: warehouse13-secrets
|
||||
key: postgres-database
|
||||
- name: PGDATA
|
||||
value: /var/lib/postgresql/data/pgdata
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: /var/lib/postgresql/data
|
||||
resources:
|
||||
{{- toYaml .Values.postgres.resources | nindent 10 }}
|
||||
livenessProbe:
|
||||
exec:
|
||||
command:
|
||||
- pg_isready
|
||||
- -U
|
||||
- $(POSTGRES_USER)
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 10
|
||||
readinessProbe:
|
||||
exec:
|
||||
command:
|
||||
- pg_isready
|
||||
- -U
|
||||
- $(POSTGRES_USER)
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 5
|
||||
{{- if .Values.postgres.persistence.enabled }}
|
||||
volumeClaimTemplates:
|
||||
- metadata:
|
||||
name: data
|
||||
spec:
|
||||
accessModes: [ "ReadWriteOnce" ]
|
||||
{{- if .Values.postgres.persistence.storageClass }}
|
||||
storageClassName: {{ .Values.postgres.persistence.storageClass }}
|
||||
{{- end }}
|
||||
resources:
|
||||
requests:
|
||||
storage: {{ .Values.postgres.persistence.size }}
|
||||
{{- else }}
|
||||
volumes:
|
||||
- name: data
|
||||
emptyDir: {}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
14
helm/warehouse13/templates/secret.yaml
Normal file
14
helm/warehouse13/templates/secret.yaml
Normal file
@@ -0,0 +1,14 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: warehouse13-secrets
|
||||
labels:
|
||||
{{- include "warehouse13.labels" . | nindent 4 }}
|
||||
type: Opaque
|
||||
stringData:
|
||||
postgres-username: {{ .Values.postgres.auth.username | quote }}
|
||||
postgres-password: {{ .Values.postgres.auth.password | quote }}
|
||||
postgres-database: {{ .Values.postgres.auth.database | quote }}
|
||||
minio-root-user: {{ .Values.minio.auth.rootUser | quote }}
|
||||
minio-root-password: {{ .Values.minio.auth.rootPassword | quote }}
|
||||
database-url: {{ include "warehouse13.postgresUrl" . | quote }}
|
||||
12
helm/warehouse13/templates/serviceaccount.yaml
Normal file
12
helm/warehouse13/templates/serviceaccount.yaml
Normal file
@@ -0,0 +1,12 @@
|
||||
{{- if .Values.serviceAccount.create -}}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ include "warehouse13.serviceAccountName" . }}
|
||||
labels:
|
||||
{{- include "warehouse13.labels" . | nindent 4 }}
|
||||
{{- with .Values.serviceAccount.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
Reference in New Issue
Block a user