diff --git a/.packaged/index.yaml b/.packaged/index.yaml index dce1265..2ed6b1b 100644 --- a/.packaged/index.yaml +++ b/.packaged/index.yaml @@ -3,7 +3,7 @@ entries: jackett: - apiVersion: v2 appVersion: 1.16.0 - created: "2025-01-14T03:42:07.155765+01:00" + created: "2025-01-14T20:11:58.484744+01:00" description: A Helm chart for Kubernetes digest: cb583d90a982e50cb0028e2d8d2afce93ef8f64dc202ddffd59262a74ff33fe1 name: jackett @@ -14,7 +14,7 @@ entries: overseerr: - apiVersion: v2 appVersion: 1.16.0 - created: "2025-01-14T03:42:07.156331+01:00" + created: "2025-01-14T20:11:58.485298+01:00" description: A Helm chart for Kubernetes digest: ac634ebbb7000644e02606157bedbc8ab6e3dd59d22d8ee699093d0f683a2899 name: overseerr @@ -25,9 +25,9 @@ entries: owncloud: - apiVersion: v2 appVersion: 1.16.0 - created: "2025-01-14T03:42:07.156614+01:00" + created: "2025-01-14T20:11:58.486145+01:00" description: A Helm chart for Kubernetes - digest: f42471e2be110e62316e7fdf4a6566f8046f221cf81dcf894f26f8e3137d5d52 + digest: e4eacb10e0d2a53069a3ae82a1b7543548ae60964b1227794666d48edc3d1790 name: owncloud type: application urls: @@ -36,7 +36,7 @@ entries: plex: - apiVersion: v2 appVersion: 1.16.0 - created: "2025-01-14T03:42:07.157326+01:00" + created: "2025-01-14T20:11:58.487084+01:00" description: A Helm chart for Kubernetes digest: 565cd7f5ab705d99bb9d5c81b6e8b0e9168be4cf442e1e5daba18bfcf0b5d882 name: plex @@ -47,7 +47,7 @@ entries: qbittorrent: - apiVersion: v2 appVersion: 1.16.0 - created: "2025-01-14T03:42:07.157632+01:00" + created: "2025-01-14T20:11:58.487413+01:00" description: A Helm chart for Kubernetes digest: 962463c2a27832ad6dc9709a3be008f242e1b039d9da7579becfa0bb96f6e063 name: qbittorrent @@ -58,7 +58,7 @@ entries: radarr: - apiVersion: v2 appVersion: 1.16.0 - created: "2025-01-14T03:42:07.157927+01:00" + created: "2025-01-14T20:11:58.487722+01:00" description: A Helm chart for Kubernetes digest: 78b75bd7d472fadde70016881f54f3359293b39d6ea964344131cc5572bb2b2f name: radarr @@ -69,7 +69,7 @@ entries: sonarr: - apiVersion: v2 appVersion: 1.16.0 - created: "2025-01-14T03:42:07.158232+01:00" + created: "2025-01-14T20:11:58.48802+01:00" description: A Helm chart for Kubernetes digest: ba9b24a526270d72b33d1918755baa182095f97fb4f38df16b5a833c8138d6dc name: sonarr @@ -77,4 +77,4 @@ entries: urls: - sonarr-0.1.0.tgz version: 0.1.0 -generated: "2025-01-14T03:42:07.155147+01:00" +generated: "2025-01-14T20:11:58.484018+01:00" diff --git a/.packaged/owncloud-0.1.0.tgz b/.packaged/owncloud-0.1.0.tgz index 27ca4d4..e85e2c3 100644 Binary files a/.packaged/owncloud-0.1.0.tgz and b/.packaged/owncloud-0.1.0.tgz differ diff --git a/owncloud/.helmignore b/owncloud/.helmignore deleted file mode 100644 index 0e8a0eb..0000000 --- a/owncloud/.helmignore +++ /dev/null @@ -1,23 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/owncloud/Chart.yaml b/owncloud/Chart.yaml index 10f9f9c..7b87d66 100644 --- a/owncloud/Chart.yaml +++ b/owncloud/Chart.yaml @@ -20,5 +20,4 @@ version: 0.1.0 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. -# It is recommended to use it with quotes. -appVersion: "1.16.0" +appVersion: 1.16.0 diff --git a/owncloud/README.md b/owncloud/README.md new file mode 100644 index 0000000..bac8292 --- /dev/null +++ b/owncloud/README.md @@ -0,0 +1,81 @@ +![alt text](https://github.com/vnc-biz/owncloud/blob/main/owncloud.png?raw=true) + +![Version: 0.1.0](https://img.shields.io/badge/Version-0.1.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.16.0](https://img.shields.io/badge/AppVersion-1.16.0-informational?style=flat-square) + +# ownCloud; Chart packaged by VNC + +What is ownCloud? + +ownCloud is a file sync & share product, where you can fully control where your data is stored at all times. +You can deploy ownCloud in your own data center on-premises or at a trusted service provider. +Be confident your data storage and maintenance complies with regulation. Increase security through measures like multi-factor authentication, encryption and file lifecycle management. + +VNC created this Helm Chart using our experience writing Helm Charts for our own [VNClagoon](http://www.vnclagoon.com/) +applications to deploy ownCloud on public cloud and bare metal Kubernetes clusters. +We enabled persistent data volumes so that we can scale ownCloud and enable HA. + +## TL;DR + +```bash +$ helm repo add owncloud +$ helm install my-release owncloud/owncloud +``` + +## Introduction + +This chart bootstraps an ownCloud deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. + +This chart has been tested to work with NGINX/GCE Ingress, fluentd and Prometheus on top of the [GKE]. + +## Values + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| affinity | object | `{}` | | +| autoscaling.enabled | bool | `false` | | +| autoscaling.maxReplicas | int | `100` | | +| autoscaling.minReplicas | int | `1` | | +| autoscaling.targetCPUUtilizationPercentage | int | `80` | | +| externalDatabase.host | string | `""` | | +| externalDatabase.name | string | `"owncloud"` | | +| externalDatabase.password | string | `"owncloud"` | | +| externalDatabase.port | int | `3306` | | +| externalDatabase.type | string | `""` | | +| externalDatabase.user | string | `"owncloud"` | | +| fullnameOverride | string | `""` | | +| image.pullPolicy | string | `"IfNotPresent"` | | +| image.repository | string | `"docker.io/owncloud/server"` | | +| image.tag | float | `10.6` | | +| imagePullSecrets | list | `[]` | | +| ingress.annotations | string | `nil` | | +| ingress.enabled | bool | `true` | | +| ingress.hosts[0].host | string | `"owncloud.chart.example"` | | +| ingress.hosts[0].paths[0] | string | `"/*"` | | +| ingress.hosts[0].servicePort | int | `80` | | +| ingress.tls[0].hosts[0] | string | `"owncloud.chart.example"` | | +| ingress.tls[0].secretName | string | `"owncloud"` | | +| mariadb.enabled | bool | `false` | | +| nameOverride | string | `""` | | +| nodeSelector | object | `{}` | | +| owncloud.domain | string | `"owncloud.chart.example"` | | +| owncloud.password | string | `"owncloud"` | | +| owncloud.username | string | `"owncloud"` | | +| persistence.enabled | bool | `true` | | +| persistence.owncloud.accessMode | string | `"ReadWriteOnce"` | | +| persistence.owncloud.nfs | string | `nil` | | +| persistence.owncloud.size | string | `"8Gi"` | | +| podAnnotations | object | `{}` | | +| podSecurityContext | object | `{}` | | +| redis.enabled | bool | `false` | | +| replicaCount | int | `1` | | +| resources | object | `{}` | | +| securityContext | object | `{}` | | +| service.port | int | `80` | | +| service.type | string | `"LoadBalancer"` | | +| serviceAccount.annotations | object | `{}` | | +| serviceAccount.create | bool | `true` | | +| serviceAccount.name | string | `""` | | +| tolerations | list | `[]` | | + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) diff --git a/owncloud/owncloud.png b/owncloud/owncloud.png new file mode 100644 index 0000000..850b654 Binary files /dev/null and b/owncloud/owncloud.png differ diff --git a/owncloud/templates/NOTES.txt b/owncloud/templates/NOTES.txt index 49ace22..e91441f 100644 --- a/owncloud/templates/NOTES.txt +++ b/owncloud/templates/NOTES.txt @@ -2,7 +2,7 @@ {{- if .Values.ingress.enabled }} {{- range $host := .Values.ingress.hosts }} {{- range .paths }} - http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ . }} {{- end }} {{- end }} {{- else if contains "NodePort" .Values.service.type }} @@ -16,27 +16,6 @@ echo http://$SERVICE_IP:{{ .Values.service.port }} {{- else if contains "ClusterIP" .Values.service.type }} export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "owncloud.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") - export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") echo "Visit http://127.0.0.1:8080 to use your application" - kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80 {{- end }} - -2. Initial login credentials: - Username: {{ .Values.admin.username }} - Password: [stored in secret {{ .Values.admin.existingSecret }}] - -3. Database configuration: -{{- if .Values.database.external.enabled }} - Using external database at {{ .Values.database.external.host }}:{{ .Values.database.external.port }} - Database: {{ .Values.database.external.database }} - Username: {{ .Values.database.external.username }} - Password: [stored in secret {{ .Values.database.external.existingSecret }}] -{{- else }} - Using internal database -{{- end }} - -4. Persistence information: - Data directory: {{ .Values.persistence.mountPath }} - -For more information about OwnCloud configuration, please refer to: -https://doc.owncloud.com/server/admin_manual/configuration/ diff --git a/owncloud/templates/deployment.yaml b/owncloud/templates/deployment.yaml index 0d373d3..d32cc77 100644 --- a/owncloud/templates/deployment.yaml +++ b/owncloud/templates/deployment.yaml @@ -5,12 +5,18 @@ metadata: labels: {{- include "owncloud.labels" . | nindent 4 }} spec: +{{- if not .Values.autoscaling.enabled }} replicas: {{ .Values.replicaCount }} +{{- end }} selector: matchLabels: {{- include "owncloud.selectorLabels" . | nindent 6 }} template: metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} labels: {{- include "owncloud.selectorLabels" . | nindent 8 }} spec: @@ -18,84 +24,92 @@ spec: imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} + serviceAccountName: {{ include "owncloud.serviceAccountName" . }} securityContext: {{- toYaml .Values.podSecurityContext | nindent 8 }} containers: - name: {{ .Chart.Name }} securityContext: - {{- toYaml .Values.containerSecurityContext | nindent 12 }} + {{- toYaml .Values.securityContext | nindent 12 }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" imagePullPolicy: {{ .Values.image.pullPolicy }} env: - - name: TZ - value: {{ .Values.env.TZ | quote }} - - name: OWNCLOUD_DOMAIN - value: {{ .Values.env.OWNCLOUD_DOMAIN | quote }} - - name: OWNCLOUD_TRUSTED_DOMAINS - value: {{ .Values.env.OWNCLOUD_TRUSTED_DOMAINS | quote }} - - name: OWNCLOUD_DB_TYPE - value: {{ .Values.database.type | quote }} - {{- if .Values.database.external.enabled }} - - name: OWNCLOUD_DB_HOST - value: {{ .Values.database.external.host | quote }} - - name: OWNCLOUD_DB_PORT - value: {{ .Values.database.external.port | quote }} - - name: OWNCLOUD_DB_NAME - value: {{ .Values.database.external.database | quote }} - - name: OWNCLOUD_DB_USERNAME - value: {{ .Values.database.external.username | quote }} - - name: OWNCLOUD_DB_PASSWORD - valueFrom: - secretKeyRef: - name: {{ .Values.database.external.existingSecret }} - key: {{ .Values.database.external.existingSecretKey }} - {{- end }} - - name: OWNCLOUD_ADMIN_USERNAME - value: {{ .Values.admin.username | quote }} - - name: OWNCLOUD_ADMIN_PASSWORD - valueFrom: - secretKeyRef: - name: {{ .Values.admin.existingSecret }} - key: {{ .Values.admin.existingSecretKey }} - - name: OWNCLOUD_REDIS_ENABLED - value: {{ .Values.env.OWNCLOUD_REDIS_ENABLED | quote }} - - name: PHP_MEMORY_LIMIT - value: {{ .Values.env.PHP_MEMORY_LIMIT | quote }} - - name: PHP_UPLOAD_LIMIT - value: {{ .Values.env.PHP_UPLOAD_LIMIT | quote }} + - name: OWNCLOUD_DOMAIN + value: {{ .Values.owncloudDomain | quote }} + - name: OWNCLOUD_ADMIN_USERNAME + value: {{ .Values.owncloud.username | quote }} + - name: OWNCLOUD_ADMIN_PASSWORD + value: {{ .Values.owncloud.password | quote }} + - name: OWNCLOUD_INTEGRITY_CHECK_DISABLED + value: {{ .Values.owncloud.integrity.disabled | quote }} + - name: OWNCLOUD_UPDATE_CHECKER + value: {{ .Values.owncloud.updatecheck | quote }} + {{- if .Values.mariadb.enabled }} + - name: MARIADB_HOST + value: {{ template "owncloud.mariadb.fullname" . }} + - name: MARIADB_PORT_NUMBER + value: "3306" + - name: OWNCLOUD_DATABASE_NAME + value: {{ .Values.mariadb.db.name | quote }} + - name: OWNCLOUD_DATABASE_USER + value: {{ .Values.mariadb.db.user | quote }} + - name: OWNCLOUD_DATABASE_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "owncloud.mariadb.fullname" . }} + key: mariadb-password + {{- else }} + - name: OWNCLOUD_DB_TYPE + value: {{ .Values.externalDatabase.type | quote }} + - name: OWNCLOUD_DB_HOST + value: {{ .Values.externalDatabase.host | quote }} + - name: OWNCLOUD_DATABASE_PORT_NUMBER + value: {{ .Values.externalDatabase.port | quote }} + - name: OWNCLOUD_DB_NAME + value: {{ .Values.externalDatabase.name | quote }} + - name: OWNCLOUD_DB_USERNAME + value: {{ .Values.externalDatabase.user | quote }} + - name: OWNCLOUD_DB_PASSWORD + valueFrom: + secretKeyRef: + name: {{ printf "%s-%s" .Release.Name "externaldb" }} + key: db-password + {{- end }} + {{- if .Values.redis.enabled }} + - name: OWNCLOUD_REDIS_ENABLED + value: true + - name: OWNCLOUD_REDIS_HOST + value: {{ .Values.redis.host | quote }} + {{- end }} ports: - name: http - containerPort: {{ .Values.service.port }} + containerPort: 8080 protocol: TCP - volumeMounts: - - name: owncloud-data - mountPath: {{ .Values.persistence.mountPath }} livenessProbe: httpGet: path: /status.php port: http - initialDelaySeconds: 30 - periodSeconds: 10 + httpHeaders: + - name: Host + value: {{ .Values.owncloud.domain | quote }} + initialDelaySeconds: 120 + timeoutSeconds: 5 + failureThreshold: 6 readinessProbe: httpGet: path: /status.php port: http + httpHeaders: + - name: Host + value: {{ .Values.owncloud.domain | quote }} initialDelaySeconds: 30 - periodSeconds: 10 + timeoutSeconds: 3 + periodSeconds: 5 resources: {{- toYaml .Values.resources | nindent 12 }} - volumes: - - name: owncloud-data - {{- if .Values.persistence.enabled }} - persistentVolumeClaim: - {{- if .Values.persistence.existingClaim }} - claimName: {{ .Values.persistence.existingClaim }} - {{- else }} - claimName: {{ include "owncloud.fullname" . }}-data - {{- end }} - {{- else }} - emptyDir: {} - {{- end }} + volumeMounts: + - name: owncloud-data + mountPath: /mnt/data {{- with .Values.nodeSelector }} nodeSelector: {{- toYaml . | nindent 8 }} @@ -108,3 +122,7 @@ spec: tolerations: {{- toYaml . | nindent 8 }} {{- end }} + volumes: + - name: owncloud-data + persistentVolumeClaim: + claimName: {{ include "owncloud.fullname" . }} diff --git a/owncloud/templates/hpa.yaml b/owncloud/templates/hpa.yaml new file mode 100644 index 0000000..15f7d41 --- /dev/null +++ b/owncloud/templates/hpa.yaml @@ -0,0 +1,28 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2beta1 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "owncloud.fullname" . }} + labels: + {{- include "owncloud.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "owncloud.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/owncloud/templates/ingress.yaml b/owncloud/templates/ingress.yaml index 4727e85..c366c1e 100644 --- a/owncloud/templates/ingress.yaml +++ b/owncloud/templates/ingress.yaml @@ -1,20 +1,20 @@ {{- if .Values.ingress.enabled -}} {{- $fullName := include "owncloud.fullname" . -}} {{- $svcPort := .Values.service.port -}} -apiVersion: networking.k8s.io/v1 +{{- if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} kind: Ingress metadata: name: {{ $fullName }} labels: {{- include "owncloud.labels" . | nindent 4 }} - {{- with .Values.ingress.annotations }} annotations: - {{- toYaml . | nindent 4 }} - {{- end }} + cert-manager.io/cluster-issuer: letsencrypt + nginx.ingress.kubernetes.io/proxy-body-size: 1000m spec: - {{- if .Values.ingress.className }} - ingressClassName: {{ .Values.ingress.className }} - {{- end }} {{- if .Values.ingress.tls }} tls: {{- range .Values.ingress.tls }} @@ -31,13 +31,10 @@ spec: http: paths: {{- range .paths }} - - path: {{ .path }} - pathType: {{ .pathType }} + - path: {{ . }} backend: - service: - name: {{ $fullName }} - port: - number: {{ $svcPort }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} {{- end }} {{- end }} -{{- end }} + {{- end }} diff --git a/owncloud/templates/pvc.yaml b/owncloud/templates/pvc.yaml index 50e513b..d41e30d 100644 --- a/owncloud/templates/pvc.yaml +++ b/owncloud/templates/pvc.yaml @@ -1,17 +1,28 @@ -{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }} +{{- if .Values.persistence.owncloud.nfs.enabled -}} +apiVersion: v1 +kind: PersistentVolume +metadata: + name: {{ include "owncloud.fullname" . }} +spec: + accessModes: + - ReadWriteOnce + capacity: + storage: 100Gi + nfs: + server: {{ .Values.persistence.owncloud.nfs.server }} + path: {{ .Values.persistence.owncloud.nfs.path }} +{{end}} +--- +{{- if .Values.persistence.enabled -}} apiVersion: v1 kind: PersistentVolumeClaim metadata: - name: {{ include "owncloud.fullname" . }}-data - labels: - {{- include "owncloud.labels" . | nindent 4 }} + name: {{ include "owncloud.fullname" . }} spec: accessModes: - - {{ .Values.persistence.accessMode | quote }} - {{- if .Values.persistence.storageClass }} - storageClassName: {{ .Values.persistence.storageClass | quote }} - {{- end }} + - ReadWriteOnce resources: requests: - storage: {{ .Values.persistence.size | quote }} -{{- end }} \ No newline at end of file + storage: 100Gi + storageClassName: standard +{{- end -}} \ No newline at end of file diff --git a/owncloud/templates/secrets.yaml b/owncloud/templates/secrets.yaml new file mode 100644 index 0000000..b189c76 --- /dev/null +++ b/owncloud/templates/secrets.yaml @@ -0,0 +1,14 @@ +{{- if not .Values.mariadb.enabled }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ printf "%s-%s" .Release.Name "externaldb" }} + labels: + app: {{ printf "%s-%s" .Release.Name "externaldb" }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +type: Opaque +data: + db-password: {{ default "" .Values.externalDatabase.password | b64enc | quote }} +{{- end }} diff --git a/owncloud/templates/service.yaml b/owncloud/templates/service.yaml index 8ce857e..d80be22 100644 --- a/owncloud/templates/service.yaml +++ b/owncloud/templates/service.yaml @@ -8,11 +8,8 @@ spec: type: {{ .Values.service.type }} ports: - port: {{ .Values.service.port }} - targetPort: http + targetPort: 8080 protocol: TCP name: http - {{- if and (eq .Values.service.type "NodePort") .Values.service.nodePort }} - nodePort: {{ .Values.service.nodePort }} - {{- end }} selector: {{- include "owncloud.selectorLabels" . | nindent 4 }} diff --git a/owncloud/templates/serviceaccount.yaml b/owncloud/templates/serviceaccount.yaml new file mode 100644 index 0000000..afe18bc --- /dev/null +++ b/owncloud/templates/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "owncloud.serviceAccountName" . }} + labels: + {{- include "owncloud.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/owncloud/templates/storageclass.yaml b/owncloud/templates/storageclass.yaml new file mode 100644 index 0000000..c9b5b9b --- /dev/null +++ b/owncloud/templates/storageclass.yaml @@ -0,0 +1,13 @@ +{{- if .Values.persistence.enabled -}} +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: {{ include "owncloud.fullname" . }} +provisioner: kubernetes.io/gce-pd +parameters: + type: pd-standard +reclaimPolicy: Retain +allowVolumeExpansion: true +mountOptions: + - debug +{{- end -}} \ No newline at end of file diff --git a/owncloud/templates/tests/test-connection.yaml b/owncloud/templates/tests/test-connection.yaml deleted file mode 100644 index cd0b685..0000000 --- a/owncloud/templates/tests/test-connection.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: Pod -metadata: - name: "{{ include "owncloud.fullname" . }}-test-connection" - labels: - {{- include "owncloud.labels" . | nindent 4 }} - annotations: - "helm.sh/hook": test -spec: - containers: - - name: wget - image: busybox - command: ['wget'] - args: ['{{ include "owncloud.fullname" . }}:{{ .Values.service.port }}'] - restartPolicy: Never diff --git a/owncloud/values.yaml b/owncloud/values.yaml index 77c1f0c..4912273 100644 --- a/owncloud/values.yaml +++ b/owncloud/values.yaml @@ -4,87 +4,106 @@ replicaCount: 1 -image: - repository: owncloud/server - pullPolicy: IfNotPresent - tag: "latest" +owncloud: + integrity: + disabled: false + updatecheck: false + domain: owncloud.chart.example + username: owncloud + password: owncloud -# Security context for the container -podSecurityContext: {} +mariadb: + enabled: false -containerSecurityContext: {} +externalDatabase: + type: "" + host: "" + port: 3306 + name: owncloud + user: owncloud + password: owncloud -# Database configuration -database: - type: "pgsql" # can be pgsql or mysql - # External database configuration - external: - enabled: false - host: "" - port: 5432 - database: "owncloud" - username: "owncloud" - # Secret containing the database password - existingSecret: "" - existingSecretKey: "password" - -# Admin user configuration -admin: - username: "admin" - # Secret containing the admin password - existingSecret: "" - existingSecretKey: "password" - -service: - type: ClusterIP - port: 8080 - -# Environment variables -env: - TZ: "UTC" - # Additional environment variables if needed - OWNCLOUD_DOMAIN: "cloud.local" - OWNCLOUD_TRUSTED_DOMAINS: "cloud.local" - OWNCLOUD_REDIS_ENABLED: "false" - # PHP settings - PHP_MEMORY_LIMIT: "512M" - PHP_UPLOAD_LIMIT: "512M" - -# Persistence configuration persistence: enabled: true - storageClass: "" - accessMode: ReadWriteOnce - size: 100Gi - mountPath: /var/www/html - # Optional: Use existing PVC - existingClaim: "" + owncloud: + accessMode: ReadWriteOnce + size: 8Gi + nfs: {} + +redis: + enabled: false + +image: + repository: docker.io/owncloud/server + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: 10.6 + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +podAnnotations: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + type: LoadBalancer + port: 80 ingress: - enabled: false - className: "nginx" - annotations: {} + enabled: true + annotations: # kubernetes.io/ingress.class: nginx # kubernetes.io/tls-acme: "true" - # nginx.ingress.kubernetes.io/proxy-body-size: "512m" hosts: - - host: cloud.local - paths: - - path: / - pathType: Prefix - tls: [] - # - secretName: owncloud-tls - # hosts: - # - cloud.local + - host: "owncloud.chart.example" + paths: ["/*"] + servicePort: 80 + tls: + - hosts: + - "owncloud.chart.example" + secretName: owncloud -resources: - limits: - cpu: 2000m - memory: 2Gi - requests: - cpu: 500m - memory: 512Mi +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 nodeSelector: {} + tolerations: [] + affinity: {} diff --git a/sync-helm-index b/sync-helm-index new file mode 100755 index 0000000..b47ad68 --- /dev/null +++ b/sync-helm-index @@ -0,0 +1,5 @@ +#! /bin/bash + +chart=${1} + +helm package $chart -d .packaged && helm repo index .packaged