{{- 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 }}