Initial upload
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
apiVersion: v2
|
||||
name: ihasmail
|
||||
description: ihasmail — JMAP webmail for Stalwart (FastAPI)
|
||||
type: application
|
||||
version: 0.1.0
|
||||
appVersion: "0.2.0"
|
||||
@@ -0,0 +1,7 @@
|
||||
Thanks for installing ihasmail!
|
||||
|
||||
Get the service URL by running these commands:
|
||||
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "ihasmail.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
|
||||
echo http://$SERVICE_IP:{{ .Values.service.port }}/
|
||||
|
||||
If using Ingress and DNS, browse to the configured host (e.g., https://ihasmail.example.com).
|
||||
@@ -0,0 +1,20 @@
|
||||
{{- define "ihasmail.name" -}}
|
||||
{{- .Chart.Name -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "ihasmail.fullname" -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "ihasmail.labels" -}}
|
||||
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
|
||||
app.kubernetes.io/name: {{ include "ihasmail.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "ihasmail.selectorLabels" -}}
|
||||
app.kubernetes.io/name: {{ include "ihasmail.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,60 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ include "ihasmail.fullname" . }}
|
||||
labels:
|
||||
{{- include "ihasmail.labels" . | nindent 4 }}
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "ihasmail.selectorLabels" . | nindent 6 }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
{{- include "ihasmail.selectorLabels" . | nindent 8 }}
|
||||
spec:
|
||||
containers:
|
||||
- name: app
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
env:
|
||||
- name: APP_SECRET
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ include "ihasmail.fullname" . }}-secret
|
||||
key: APP_SECRET
|
||||
- name: JMAP_BASE
|
||||
value: {{ .Values.env.JMAP_BASE | quote }}
|
||||
- name: CALDAV_BASE
|
||||
value: {{ .Values.env.CALDAV_BASE | quote }}
|
||||
- name: WEBDAV_BASE
|
||||
value: {{ .Values.env.WEBDAV_BASE | quote }}
|
||||
- name: COOKIE_NAME
|
||||
value: {{ .Values.env.COOKIE_NAME | quote }}
|
||||
- name: TRUST_PROXY
|
||||
value: {{ .Values.env.TRUST_PROXY | quote }}
|
||||
- name: UPSTREAM_TIMEOUT
|
||||
value: {{ .Values.env.UPSTREAM_TIMEOUT | quote }}
|
||||
ports:
|
||||
- containerPort: 8000
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: 8000
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 10
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: 8000
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 20
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: {{ include "ihasmail.fullname" . }}-secret
|
||||
type: Opaque
|
||||
stringData:
|
||||
APP_SECRET: {{ .Values.env.APP_SECRET | quote }}
|
||||
@@ -0,0 +1,30 @@
|
||||
{{- if .Values.ingress.enabled }}
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: {{ include "ihasmail.fullname" . }}
|
||||
{{- if .Values.ingress.className }}
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: {{ .Values.ingress.className }}
|
||||
{{- end }}
|
||||
spec:
|
||||
rules:
|
||||
{{- range .Values.ingress.hosts }}
|
||||
- host: {{ .host }}
|
||||
http:
|
||||
paths:
|
||||
{{- range .paths }}
|
||||
- path: {{ .path }}
|
||||
pathType: {{ .pathType }}
|
||||
backend:
|
||||
service:
|
||||
name: {{ include "ihasmail.fullname" $ }}
|
||||
port:
|
||||
number: {{ $.Values.service.port }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.ingress.tls }}
|
||||
tls:
|
||||
{{- toYaml .Values.ingress.tls | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,15 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ include "ihasmail.fullname" . }}
|
||||
labels:
|
||||
{{- include "ihasmail.labels" . | nindent 4 }}
|
||||
spec:
|
||||
type: {{ .Values.service.type }}
|
||||
ports:
|
||||
- port: {{ .Values.service.port }}
|
||||
targetPort: 8000
|
||||
protocol: TCP
|
||||
name: http
|
||||
selector:
|
||||
{{- include "ihasmail.selectorLabels" . | nindent 4 }}
|
||||
@@ -0,0 +1,32 @@
|
||||
image:
|
||||
repository: ghcr.io/your-org/ihasmail
|
||||
tag: latest
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 8000
|
||||
|
||||
ingress:
|
||||
enabled: false
|
||||
className: ""
|
||||
hosts:
|
||||
- host: ihasmail.example.com
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
tls: []
|
||||
|
||||
env:
|
||||
APP_SECRET: "CHANGE_ME"
|
||||
JMAP_BASE: "https://mail.example.com/jmap"
|
||||
CALDAV_BASE: "https://mail.example.com/caldav/"
|
||||
WEBDAV_BASE: "https://mail.example.com/webdav/"
|
||||
COOKIE_NAME: "ihasmail"
|
||||
TRUST_PROXY: "1"
|
||||
UPSTREAM_TIMEOUT: "15"
|
||||
|
||||
resources: {}
|
||||
nodeSelector: {}
|
||||
tolerations: []
|
||||
affinity: {}
|
||||
Reference in New Issue
Block a user