diff --git a/charts/ephemerup/README.md b/charts/ephemerup/README.md index 8b739af..a5ff035 100644 --- a/charts/ephemerup/README.md +++ b/charts/ephemerup/README.md @@ -1,6 +1,8 @@ # ephemerup -A Helm chart for ephemerup +![Version: 1.0.0](https://img.shields.io/badge/Version-1.0.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.0.2](https://img.shields.io/badge/AppVersion-0.0.2-informational?style=flat-square) + +A Helm chart for Ephemerup. ## Source Code @@ -14,108 +16,111 @@ A Helm chart for ephemerup ## Values -| Key | Type | Description | Default | -|---------------------------------------------------|--------|-----------------------------------------------------------|-----------------------| -| kubeVersion | string | | `""` | -| nameOverride | string | | `""` | -| fullnameOverride | string | | `""` | -| namespaceOverride | string | | `""` | -| commonLabels | object | | `{}` | -| commonAnnotations.app | string | | `"ephemerup"` | -| clusterDomain | string | | `"cluster.local"` | -| logLevel | string | | `"info"` | -| image.registry | string | | `"docker.io"` | -| image.repository | string | | `"tlinden/ephemerup"` | -| image.tag | string | | `"latest"` | -| image.pullPolicy | string | | `"IfNotPresent"` | -| image.pullSecrets | list | | `[]` | -| secrets | object | | `{}` | -| mountSecrets | list | | `[]` | -| env | list | | `[]` | -| config | object | Backup plans. For details, see [values.yaml](values.yaml) | `{}` | -| replicaCount | int | | `1` | -| sidecars | list | | `[]` | -| lifecycleHooks | object | | `{}` | -| podAnnotations | object | | `{}` | -| podLabels | object | | `{}` | -| updateStrategy.type | string | | `"RollingUpdate"` | -| podAffinityPreset | string | | `""` | -| podAntiAffinityPreset | string | | `"soft"` | -| nodeAffinityPreset.type | string | | `""` | -| nodeAffinityPreset.key | string | | `""` | -| nodeAffinityPreset.values | list | | `[]` | -| affinity | object | | `{}` | -| nodeSelector | object | | `{}` | -| tolerations | list | | `[]` | -| resources.limits.cpu | string | | `"500m"` | -| resources.limits.memory | string | | `"256Mi"` | -| resources.requests.cpu | string | | `"100m"` | -| resources.requests.memory | string | | `"128Mi"` | -| podSecurityContext.fsGroup | int | | `65534` | -| containerSecurityContext.enabled | bool | | `false` | -| containerSecurityContext.allowPrivilegeEscalation | bool | | `false` | -| containerSecurityContext.capabilities.drop[0] | string | | `"ALL"` | -| containerSecurityContext.privileged | bool | | `false` | -| containerSecurityContext.runAsUser | int | | `0` | -| containerSecurityContext.runAsNonRoot | bool | | `false` | -| livenessProbe.enabled | bool | | `true` | -| livenessProbe.initialDelaySeconds | int | | `5` | -| livenessProbe.timeoutSeconds | int | | `1` | -| livenessProbe.periodSeconds | int | | `20` | -| livenessProbe.failureThreshold | int | | `6` | -| livenessProbe.successThreshold | int | | `1` | -| readinessProbe.enabled | bool | | `true` | -| readinessProbe.initialDelaySeconds | int | | `5` | -| readinessProbe.timeoutSeconds | int | | `1` | -| readinessProbe.periodSeconds | int | | `20` | -| readinessProbe.failureThreshold | int | | `6` | -| readinessProbe.successThreshold | int | | `1` | -| startupProbe.enabled | bool | | `true` | -| startupProbe.initialDelaySeconds | int | | `10` | -| startupProbe.timeoutSeconds | int | | `1` | -| startupProbe.periodSeconds | int | | `20` | -| startupProbe.failureThreshold | int | | `6` | -| startupProbe.successThreshold | int | | `1` | -| customLivenessProbe | object | | `{}` | -| customStartupProbe | object | | `{}` | -| customReadinessProbe | object | | `{}` | -| service.type | string | | `"ClusterIP"` | -| service.ports.http | int | | `8090` | -| service.nodePorts.http | string | | `""` | -| service.clusterIP | string | | `""` | -| service.extraPorts | list | | `[]` | -| service.loadBalancerIP | string | | `""` | -| service.loadBalancerSourceRanges | list | | `[]` | -| service.externalTrafficPolicy | string | | `"Cluster"` | -| service.annotations | object | | `{}` | -| service.sessionAffinity | string | | `"None"` | -| service.sessionAffinityConfig | object | | `{}` | -| ingress.enabled | bool | | `false` | -| ingress.pathType | string | | `"Prefix"` | -| ingress.apiVersion | string | | `""` | -| ingress.hostname | string | | `"ephemerup.local"` | -| ingress.path | string | | `"/"` | -| ingress.annotations | object | | `{}` | -| ingress.tls | bool | | `false` | -| ingress.tlsSecretName | string | | `""` | -| ingress.extraPaths | list | | `[]` | -| ingress.selfSigned | bool | | `false` | -| ingress.ingressClassName | string | | `"nginx"` | -| ingress.extraHosts | list | | `[]` | -| ingress.extraTls | list | | `[]` | -| ingress.secrets | list | | `[]` | -| ingress.extraRules | list | | `[]` | -metrics.serviceMonitor.enabled | bool | `true` | | -| metrics.serviceMonitor.port | string | `"http"` | | -| metrics.serviceMonitor.namespace | string | `""` | | +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| affinity | object | `{}` | | +| clusterDomain | string | `"cluster.local"` | | +| commonAnnotations.app | string | `"ephemerup"` | | +| commonLabels | object | `{}` | | +| config.apicontexts[0].context | string | `"root"` | | +| config.apicontexts[0].key | string | `"0fddbff5d8010f81cd28a7d77f3e38981b13d6164c2fd6e1c3f60a4287630c37"` | | +| config.bodylimit | int | `1024` | | +| config.listen | int | `8080` | | +| config.mail.from | string | `"root@localhost"` | | +| config.mail.port | int | `25` | | +| config.mail.server | string | `"localhost"` | | +| config.super | string | `"root"` | | +| containerSecurityContext.allowPrivilegeEscalation | bool | `false` | | +| containerSecurityContext.capabilities.drop[0] | string | `"ALL"` | | +| containerSecurityContext.enabled | bool | `false` | | +| containerSecurityContext.privileged | bool | `false` | | +| containerSecurityContext.runAsNonRoot | bool | `false` | | +| containerSecurityContext.runAsUser | int | `0` | | +| customLivenessProbe | object | `{}` | | +| customReadinessProbe | object | `{}` | | +| customStartupProbe | object | `{}` | | +| env | list | `[]` | | +| fullnameOverride | string | `""` | | +| image.pullPolicy | string | `"IfNotPresent"` | | +| image.pullSecrets | list | `[]` | | +| image.registry | string | `"ghcr.io/tlinden"` | | +| image.repository | string | `"ephemerup"` | | +| image.tag | string | `"latest"` | | +| ingress.annotations | object | `{}` | | +| ingress.apiVersion | string | `""` | | +| ingress.enabled | bool | `false` | | +| ingress.extraHosts | list | `[]` | | +| ingress.extraPaths | list | `[]` | | +| ingress.extraRules | list | `[]` | | +| ingress.extraTls | list | `[]` | | +| ingress.hostname | string | `"ephemerup.local"` | | +| ingress.ingressClassName | string | `"nginx"` | | +| ingress.path | string | `"/"` | | +| ingress.pathType | string | `"Prefix"` | | +| ingress.secrets | list | `[]` | | +| ingress.selfSigned | bool | `false` | | +| ingress.tls | bool | `false` | | +| ingress.tlsSecretName | string | `""` | | +| kubeVersion | string | `""` | | +| lifecycleHooks | object | `{}` | | +| livenessProbe.enabled | bool | `true` | | +| livenessProbe.failureThreshold | int | `6` | | +| livenessProbe.initialDelaySeconds | int | `5` | | +| livenessProbe.periodSeconds | int | `20` | | +| livenessProbe.successThreshold | int | `1` | | +| livenessProbe.timeoutSeconds | int | `1` | | +| logLevel | string | `"info"` | | +| metrics.serviceMonitor.enabled | bool | `false` | | | metrics.serviceMonitor.interval | string | `"30s"` | | +| metrics.serviceMonitor.namespace | string | `""` | | +| metrics.serviceMonitor.port | string | `"http"` | | | metrics.serviceMonitor.scrapeTimeout | string | `"10s"` | | -| storage.longTerm | object | `{"name":"ephemerup-storage","spec":{"accessModes":["ReadWriteOnce"],"resources":{"requests":{"storage":"100Gi"}},"storageClassName":"standard"}}` | Persistent volume for backups, see `config.retention` | +| mountSecrets | list | `[]` | | +| nameOverride | string | `""` | | +| namespaceOverride | string | `""` | | +| nodeAffinityPreset.key | string | `""` | | +| nodeAffinityPreset.type | string | `""` | | +| nodeAffinityPreset.values | list | `[]` | | +| nodeSelector | object | `{}` | | +| podAffinityPreset | string | `""` | | +| podAnnotations | object | `{}` | | +| podAntiAffinityPreset | string | `"soft"` | | +| podLabels | object | `{}` | | +| podSecurityContext.fsGroup | int | `65534` | | +| readinessProbe.enabled | bool | `true` | | +| readinessProbe.failureThreshold | int | `6` | | +| readinessProbe.initialDelaySeconds | int | `5` | | +| readinessProbe.periodSeconds | int | `20` | | +| readinessProbe.successThreshold | int | `1` | | +| readinessProbe.timeoutSeconds | int | `1` | | +| replicaCount | int | `1` | | +| resources.limits.cpu | string | `"500m"` | | +| resources.limits.memory | string | `"256Mi"` | | +| resources.requests.cpu | string | `"100m"` | | +| resources.requests.memory | string | `"128Mi"` | | +| secrets | object | `{}` | | +| service.annotations | object | `{}` | | +| service.clusterIP | string | `""` | | +| service.externalTrafficPolicy | string | `"Cluster"` | | +| service.extraPorts | list | `[]` | | +| service.loadBalancerIP | string | `""` | | +| service.loadBalancerSourceRanges | list | `[]` | | +| service.nodePorts.http | string | `""` | | +| service.ports.http | int | `8080` | | +| service.sessionAffinity | string | `"None"` | | +| service.sessionAffinityConfig | object | `{}` | | +| service.type | string | `"ClusterIP"` | | +| sidecars | list | `[]` | | +| startupProbe.enabled | bool | `true` | | +| startupProbe.failureThreshold | int | `6` | | +| startupProbe.initialDelaySeconds | int | `10` | | +| startupProbe.periodSeconds | int | `20` | | +| startupProbe.successThreshold | int | `1` | | +| startupProbe.timeoutSeconds | int | `1` | | +| storage.longTerm | object | `{"name":"ephemerup-storage","spec":{"accessModes":["ReadWriteOnce"],"resources":{"requests":{"storage":"10Gi"}},"storageClassName":"standard"}}` | Persistent volume for bolt database and uploads | | storage.tmp | object | `{"name":"ephemerup-tmp","spec":{"accessModes":["ReadWriteOnce"],"resources":{"requests":{"storage":"10Gi"}},"storageClassName":"standard"}}` | Persistent volume for temporary files | -| storage.restoreTmp.name | string | `"ephemerup-restore-tmp"` | | -| storage.restoreTmp.spec.accessModes[0] | string | `"ReadWriteOnce"` | | -| storage.restoreTmp.spec.resources.requests.storage | string | `"100Gi"` | | -| storage.restoreTmp.spec.storageClassName | string | `"standard"` | | +| tolerations | list | `[]` | | +| updateStrategy.type | string | `"RollingUpdate"` | | ---------------------------------------------- -Autogenerated from chart metadata using [helm-docs v1.11.0](https://github.com/norwoodj/helm-docs/releases/v1.11.0) +Autogenerated from chart metadata using [helm-docs v1.11.2](https://github.com/norwoodj/helm-docs/releases/v1.11.2) diff --git a/charts/ephemerup/charts/common-1.16.0.tgz b/charts/ephemerup/charts/common-1.16.0.tgz new file mode 100644 index 0000000..aae0af3 Binary files /dev/null and b/charts/ephemerup/charts/common-1.16.0.tgz differ diff --git a/charts/ephemerup/templates/configmap.yaml b/charts/ephemerup/templates/configmap.yaml index 6aa8831..aced5a6 100644 --- a/charts/ephemerup/templates/configmap.yaml +++ b/charts/ephemerup/templates/configmap.yaml @@ -23,7 +23,9 @@ data: server = {{ .Values.config.mail.server | quote }} port = {{ .Values.config.mail.port | quote }} from = {{ .Values.config.mail.from | quote }} + {{- if .Values.config.password }} password = {{ .Values.config.password | quote }} + {{- end }} } apicontexts = [ {{- range $context := .Values.config.apicontexts }} @@ -33,4 +35,5 @@ data: } {{- end }} ] + storagedir = "/data" {{- end }} diff --git a/charts/ephemerup/templates/statefulset.yaml b/charts/ephemerup/templates/statefulset.yaml index f8d4a06..ce6bd2a 100644 --- a/charts/ephemerup/templates/statefulset.yaml +++ b/charts/ephemerup/templates/statefulset.yaml @@ -32,8 +32,7 @@ spec: - name: ephemerup image: {{ include "ephemerup.image" . }} imagePullPolicy: {{ .Values.image.pullPolicy | quote}} - args: - - "-LogLevel={{ .Values.logLevel }}" + command: ['/app/ephemerupd', '-c', '/config/ephemerup.hcl'] env: {{- range $envVar := .Values.env }} - name: {{ $envVar.name }} @@ -46,7 +45,7 @@ spec: {{- if .Values.livenessProbe.enabled }} livenessProbe: httpGet: - port: http + port: {{ .Values.service.ports.http }} path: /status initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }} periodSeconds: {{ .Values.livenessProbe.periodSeconds }} @@ -59,7 +58,7 @@ spec: {{- if .Values.readinessProbe.enabled }} readinessProbe: httpGet: - port: http + port: {{ .Values.service.ports.http }} path: /status initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }} periodSeconds: {{ .Values.readinessProbe.periodSeconds }} @@ -72,7 +71,7 @@ spec: {{- if .Values.startupProbe.enabled }} startupProbe: tcpSocket: - port: http + port: {{ .Values.service.ports.http }} initialDelaySeconds: {{ .Values.startupProbe.initialDelaySeconds }} periodSeconds: {{ .Values.startupProbe.periodSeconds }} timeoutSeconds: {{ .Values.startupProbe.timeoutSeconds }} @@ -89,11 +88,9 @@ spec: {{- end }} volumeMounts: - name: "ephemerup-storage" - mountPath: "/storage" + mountPath: "/data" - name: "ephemerup-tmp" mountPath: "/tmp" - - name: "ephemerup-tmp" - mountPath: "/data" - mountPath: "/config/ephemerup.hcl" name: config subPath: "ephemerup.hcl" diff --git a/charts/ephemerup/values.yaml b/charts/ephemerup/values.yaml index 79f156f..c235079 100644 --- a/charts/ephemerup/values.yaml +++ b/charts/ephemerup/values.yaml @@ -29,8 +29,8 @@ logLevel: info ## image: - registry: docker.io - repository: tlinden/ephemerup + registry: ghcr.io/tlinden + repository: ephemerup tag: "latest" ## Specify a imagePullPolicy ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' @@ -71,7 +71,8 @@ config: server: "localhost" port: 25 from: "root@localhost" - password: "" + ## required when using SMTP Auth + #password: "" ## context config, add more as needed apicontexts: - context: "root" @@ -270,7 +271,7 @@ service: ## @param service.ports.http application service HTTP port ## ports: - http: 8090 + http: 8080 ## @param service.nodePorts.http Node ports to expose ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport ## @@ -449,7 +450,7 @@ metrics: scrapeTimeout: "10s" storage: - # -- Persistent volume for backups, see `config.retention` + # -- Persistent volume for bolt database and uploads longTerm: name: "ephemerup-storage" spec: @@ -469,12 +470,3 @@ storage: requests: storage: 10Gi storageClassName: standard - restoreTmp: - name: "ephemerup-restore-tmp" - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 10Gi - storageClassName: standard