Files
SODEW/sodew-bash-main/assets/k3s/templates/openlitespeed.yaml
T
2026-08-18 09:40:08 +02:00

304 lines
11 KiB
YAML

{{- if .Values.openlitespeedHelm }}
---
apiVersion: v1
kind: PersistentVolume
metadata: { name: "{{ .Values.openlitespeed }}-vhosts-pv" }
spec:
capacity: { storage: 1Ti }
volumeMode: Filesystem
accessModes: [ ReadWriteMany ]
persistentVolumeReclaimPolicy: Retain
hostPath: { path: "{{ .Values.olsVhostsPath }}", type: DirectoryOrCreate }
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata: { name: "{{ .Values.openlitespeed }}-vhosts-pvc", namespace: "{{ .Values.namespace }}" }
spec:
volumeName: "{{ .Values.openlitespeed }}-vhosts-pv"
volumeMode: Filesystem
accessModes: [ ReadWriteMany ]
resources: { requests: { storage: 1Ti } }
storageClassName: ""
---
apiVersion: v1
kind: PersistentVolume
metadata: { name: "{{ .Values.openlitespeed }}-private-pv" }
spec:
capacity: { storage: 5Gi }
volumeMode: Filesystem
accessModes: [ ReadWriteMany ]
persistentVolumeReclaimPolicy: Retain
hostPath: { path: "{{ .Values.olsPrivatePath }}", type: DirectoryOrCreate }
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata: { name: "{{ .Values.openlitespeed }}-private-pvc", namespace: "{{ .Values.namespace }}" }
spec:
volumeName: "{{ .Values.openlitespeed }}-private-pv"
volumeMode: Filesystem
accessModes: [ ReadWriteMany ]
resources: { requests: { storage: 5Gi } }
storageClassName: ""
---
apiVersion: v1
kind: PersistentVolume
metadata: { name: "{{ .Values.openlitespeed }}-public-pv" }
spec:
capacity: { storage: 10Gi }
volumeMode: Filesystem
accessModes: [ ReadWriteMany ]
persistentVolumeReclaimPolicy: Retain
hostPath: { path: "{{ .Values.olsPublicPath }}", type: DirectoryOrCreate }
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata: { name: "{{ .Values.openlitespeed }}-public-pvc", namespace: "{{ .Values.namespace }}" }
spec:
volumeName: "{{ .Values.openlitespeed }}-public-pv"
volumeMode: Filesystem
accessModes: [ ReadWriteMany ]
resources: { requests: { storage: 10Gi } }
storageClassName: ""
---
apiVersion: v1
kind: PersistentVolume
metadata: { name: "{{ .Values.openlitespeed }}-config-pv" }
spec:
capacity: { storage: 1Gi }
volumeMode: Filesystem
accessModes: [ ReadWriteMany ]
persistentVolumeReclaimPolicy: Retain
hostPath: { path: "{{ .Values.olsConfigPath }}", type: DirectoryOrCreate }
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata: { name: "{{ .Values.openlitespeed }}-config-pvc", namespace: "{{ .Values.namespace }}" }
spec:
volumeName: "{{ .Values.openlitespeed }}-config-pv"
volumeMode: Filesystem
accessModes: [ ReadWriteMany ]
resources: { requests: { storage: 1Gi } }
storageClassName: ""
---
apiVersion: v1
kind: PersistentVolume
metadata: { name: "{{ .Values.openlitespeed }}-admin-pv" }
spec:
capacity: { storage: 1Gi }
volumeMode: Filesystem
accessModes: [ ReadWriteMany ]
persistentVolumeReclaimPolicy: Retain
hostPath: { path: "{{ .Values.olsAdminPath }}", type: DirectoryOrCreate }
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata: { name: "{{ .Values.openlitespeed }}-admin-pvc", namespace: "{{ .Values.namespace }}" }
spec:
volumeName: "{{ .Values.openlitespeed }}-admin-pv"
volumeMode: Filesystem
accessModes: [ ReadWriteMany ]
resources: { requests: { storage: 1Gi } }
storageClassName: ""
---
apiVersion: v1
kind: PersistentVolume
metadata: { name: "{{ .Values.openlitespeed }}-phpini-pv" }
spec:
capacity: { storage: 1Gi }
volumeMode: Filesystem
accessModes: [ ReadWriteMany ]
persistentVolumeReclaimPolicy: Retain
hostPath: { path: "{{ .Values.olsPhpIniPath }}", type: DirectoryOrCreate }
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata: { name: "{{ .Values.openlitespeed }}-phpini-pvc", namespace: "{{ .Values.namespace }}" }
spec:
volumeName: "{{ .Values.openlitespeed }}-phpini-pv"
volumeMode: Filesystem
accessModes: [ ReadWriteMany ]
resources: { requests: { storage: 1Gi } }
storageClassName: ""
---
apiVersion: v1
kind: PersistentVolume
metadata: { name: "{{ .Values.openlitespeed }}-logs-pv" }
spec:
capacity: { storage: 10Gi }
volumeMode: Filesystem
accessModes: [ ReadWriteMany ]
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
hostPath: { path: "{{ .Values.olsLogsPath }}", type: DirectoryOrCreate }
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata: { name: "{{ .Values.openlitespeed }}-logs-pvc", namespace: "{{ .Values.namespace }}" }
spec:
volumeName: "{{ .Values.openlitespeed }}-logs-pv"
volumeMode: Filesystem
accessModes: [ ReadWriteMany ]
resources: { requests: { storage: 10Gi } }
storageClassName: ""
---
apiVersion: apps/v1
kind: Deployment
metadata: { name: "{{ .Values.openlitespeed }}", namespace: "{{ .Values.namespace }}" }
spec:
replicas: 2
strategy: { type: RollingUpdate, rollingUpdate: { maxSurge: 0, maxUnavailable: 1 } }
selector: { matchLabels: { app: "{{ .Values.openlitespeed }}" } }
template:
metadata: { labels: { app: "{{ .Values.openlitespeed }}" } }
spec:
initContainers:
- name: "{{ .Values.openlitespeed }}-init"
# image: litespeedtech/openlitespeed:1.8.5-lsphp85
image: git.api.sodew.ai/mk250/openlitespeed:1.8.5-lsphp85-multiphp-latest
command: ["sh", "-c"]
args:
- |
if [ ! -f /mnt/config/httpd_config.conf ]; then
cp -a /usr/local/lsws/conf/. /mnt/config/
fi
if [ ! -f /mnt/admin/admin_config.conf ]; then
cp -a /usr/local/lsws/admin/conf/. /mnt/admin/
fi
volumeMounts:
- { name: "{{ .Values.openlitespeed }}-config-volume", mountPath: /mnt/config }
- { name: "{{ .Values.openlitespeed }}-admin-volume", mountPath: /mnt/admin }
shareProcessNamespace: true
containers:
- name: "{{ .Values.openlitespeed }}"
# image: litespeedtech/openlitespeed:1.8.5-lsphp85
image: git.api.sodew.ai/mk250/openlitespeed:1.8.5-lsphp85-multiphp-latest
ports:
- { containerPort: 80 }
- { containerPort: 7080 }
resources:
requests: { cpu: "{{ .Values.profiles.openlitespeed.cpuRequest }}", memory: "{{ .Values.profiles.openlitespeed.memoryRequest }}" }
limits: { cpu: "{{ .Values.profiles.openlitespeed.cpuLimit }}", memory: "{{ .Values.profiles.openlitespeed.memoryLimit }}" }
readinessProbe: { tcpSocket: { port: 80 }, initialDelaySeconds: 5, periodSeconds: 5, failureThreshold: 3 }
livenessProbe: { tcpSocket: { port: 80 }, initialDelaySeconds: 10, periodSeconds: 10, failureThreshold: 5 }
volumeMounts:
- { name: "{{ .Values.openlitespeed }}-vhosts-volume", mountPath: {{ .Values.olsPodVhostsPath }} }
- { name: "{{ .Values.openlitespeed }}-private-volume", mountPath: {{ .Values.olsPodPrivatePath }}, readOnly: true }
- { name: "{{ .Values.openlitespeed }}-public-volume", mountPath: {{ .Values.olsPodPublicPath }}, readOnly: true }
- { name: "{{ .Values.openlitespeed }}-config-volume", mountPath: /usr/local/lsws/conf }
- { name: "{{ .Values.openlitespeed }}-admin-volume", mountPath: /usr/local/lsws/admin/conf }
- { name: "{{ .Values.openlitespeed }}-phpini-volume", mountPath: /etc/ols-php-ini }
- { name: "{{ .Values.openlitespeed }}-logs-volume", mountPath: /usr/local/lsws/logs }
- { name: "{{ .Values.openlitespeed }}-cache-volume", mountPath: /usr/local/lsws/cachedata }
- { name: "{{ .Values.openlitespeed }}-tmp-volume", mountPath: /tmp/lshttpd }
volumes:
- name: "{{ .Values.openlitespeed }}-vhosts-volume"
persistentVolumeClaim: { claimName: "{{ .Values.openlitespeed }}-vhosts-pvc" }
- name: "{{ .Values.openlitespeed }}-private-volume"
persistentVolumeClaim: { claimName: "{{ .Values.openlitespeed }}-private-pvc" }
- name: "{{ .Values.openlitespeed }}-public-volume"
persistentVolumeClaim: { claimName: "{{ .Values.openlitespeed }}-public-pvc" }
- name: "{{ .Values.openlitespeed }}-config-volume"
persistentVolumeClaim: { claimName: "{{ .Values.openlitespeed }}-config-pvc" }
- name: "{{ .Values.openlitespeed }}-admin-volume"
persistentVolumeClaim: { claimName: "{{ .Values.openlitespeed }}-admin-pvc" }
- name: "{{ .Values.openlitespeed }}-phpini-volume"
persistentVolumeClaim: { claimName: "{{ .Values.openlitespeed }}-phpini-pvc" }
- name: "{{ .Values.openlitespeed }}-logs-volume"
persistentVolumeClaim: { claimName: "{{ .Values.openlitespeed }}-logs-pvc" }
- name: "{{ .Values.openlitespeed }}-cache-volume"
emptyDir: { sizeLimit: 100Gi }
- name: "{{ .Values.openlitespeed }}-tmp-volume"
emptyDir: { sizeLimit: 100Gi }
---
apiVersion: v1
kind: Service
metadata: { name: "{{ .Values.openlitespeed }}", namespace: "{{ .Values.namespace }}" }
spec:
selector: { app: "{{ .Values.openlitespeed }}" }
ports:
- { name: http, protocol: TCP, port: 80, targetPort: 80 }
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata: { name: "{{ .Values.openlitespeed }}-ingress", namespace: "{{ .Values.namespace }}" }
spec:
ingressClassName: traefik
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service: { name: "{{ .Values.openlitespeed }}", port: { number: 80 } }
# -------------------------
# Admin panel
# -------------------------
---
apiVersion: v1
kind: Service
metadata: { name: "{{ .Values.openlitespeed }}-admin", namespace: "{{ .Values.namespace }}" }
spec:
selector: { app: "{{ .Values.openlitespeed }}" }
type: ClusterIP
ports:
- { name: admin, protocol: TCP, port: 7080, targetPort: 7080 }
---
apiVersion: traefik.io/v1alpha1
kind: MiddlewareTCP
metadata: { name: "{{ .Values.openlitespeed }}-admin-allowlist", namespace: "{{ .Values.namespace }}" }
spec:
ipAllowList: { sourceRange: [ {{ .Values.olsAdminWhiteList }} ] }
---
apiVersion: traefik.io/v1alpha1
kind: IngressRouteTCP
metadata: { name: "{{ .Values.openlitespeed }}-admin", namespace: "{{ .Values.namespace }}" }
spec:
entryPoints: [ "olsadmin" ]
routes:
- match: HostSNI(`*`)
middlewares:
- name: "{{ .Values.openlitespeed }}-admin-allowlist"
services:
- name: "{{ .Values.openlitespeed }}-admin"
port: 7080
tls:
passthrough: true
---
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata: { name: traefik, namespace: kube-system }
spec:
valuesContent: |-
ports:
olsadmin:
port: 9443
expose:
default: true
exposedPort: 9443
protocol: TCP
additionalArguments:
- "--entryPoints.olsadmin.address=:9443/tcp"
{{- end }}