From e2eeccbcb7fb301f42b0b09352e95382b51c1f29 Mon Sep 17 00:00:00 2001 From: Thomas von Dein Date: Fri, 22 Sep 2023 13:36:02 +0200 Subject: [PATCH] first working chart version --- charts/ephemerup/README.md | 207 ++++++++++---------- charts/ephemerup/charts/common-1.16.0.tgz | Bin 0 -> 14693 bytes charts/ephemerup/templates/configmap.yaml | 3 + charts/ephemerup/templates/statefulset.yaml | 13 +- charts/ephemerup/values.yaml | 20 +- 5 files changed, 120 insertions(+), 123 deletions(-) create mode 100644 charts/ephemerup/charts/common-1.16.0.tgz 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 0000000000000000000000000000000000000000..aae0af392e84accbbc87a4033cf39ef3caeb0370 GIT binary patch literal 14693 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