422 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			422 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| ---
 | |
| # Source: nextcloud/charts/redis/templates/secret.yaml
 | |
| apiVersion: v1
 | |
| kind: Secret
 | |
| metadata:
 | |
|   name: nextcloud-nextcloud-redis
 | |
|   namespace: nextcloud
 | |
|   labels:
 | |
|     app: redis
 | |
|     release: "nextcloud-nextcloud"
 | |
|   annotations:
 | |
|     kube-1password: u54jxidod7tlnpwva37f5hcu5y
 | |
|     kube-1password/vault: Kubernetes
 | |
|     kube-1password/secret-text-parse: "true"
 | |
| type: Opaque
 | |
| 
 | |
| ---
 | |
| # Source: nextcloud/templates/secrets.yaml
 | |
| apiVersion: v1
 | |
| kind: Secret
 | |
| metadata:
 | |
|   name: nextcloud-nextcloud
 | |
|   labels:
 | |
|     app.kubernetes.io/name: nextcloud
 | |
|     app.kubernetes.io/instance: nextcloud-nextcloud
 | |
|   annotations:
 | |
|     kube-1password: iaz4xmtr2czpsjl6xirhryzfia
 | |
|     kube-1password/vault: Kubernetes
 | |
|     kube-1password/secret-text-parse: "true"
 | |
| type: Opaque
 | |
| 
 | |
| ---
 | |
| apiVersion: v1
 | |
| kind: Secret
 | |
| metadata:
 | |
|   name: nextcloud-s3
 | |
|   labels:
 | |
|     app.kubernetes.io/name: nextcloud
 | |
|     app.kubernetes.io/instance: nextcloud-nextcloud
 | |
|   annotations:
 | |
|     kube-1password: 7zanxzbyzfctc5d2yqfq6e5zcy
 | |
|     kube-1password/vault: Kubernetes
 | |
|     kube-1password/secret-text-key: s3.config.php
 | |
| type: Opaque
 | |
| 
 | |
| ---
 | |
| # Source: nextcloud/templates/config.yaml
 | |
| apiVersion: v1
 | |
| kind: ConfigMap
 | |
| metadata:
 | |
|   name: nextcloud-nextcloud-config
 | |
|   labels:
 | |
|     app.kubernetes.io/name: nextcloud
 | |
|     app.kubernetes.io/instance: nextcloud-nextcloud
 | |
| data:
 | |
|   general.config.php: |-
 | |
|     <?php
 | |
|     $CONFIG = array (
 | |
|         'overwriteprotocol' => 'https'
 | |
|     );
 | |
|   .htaccess: |-
 | |
|     # line below if for Apache 2.4
 | |
|     <ifModule mod_authz_core.c>
 | |
|     Require all denied
 | |
|     </ifModule>
 | |
|     # line below if for Apache 2.2
 | |
|     <ifModule !mod_authz_core.c>
 | |
|     deny from all
 | |
|     </ifModule>
 | |
|     # section for Apache 2.2 and 2.4
 | |
|     <ifModule mod_autoindex.c>
 | |
|     IndexIgnore *
 | |
|     </ifModule>
 | |
|   redis.config.php: |-
 | |
|     <?php
 | |
|     if (getenv('REDIS_HOST')) {
 | |
|         $CONFIG = array (
 | |
|           'memcache.distributed' => '\\OC\\Memcache\\Redis',
 | |
|         'memcache.locking' => '\\OC\\Memcache\\Redis',
 | |
|         'redis' => array(
 | |
|           'host' => getenv('REDIS_HOST'),
 | |
|           'port' => getenv('REDIS_HOST_PORT') ?: 6379,
 | |
|           'password' => getenv('REDIS_HOST_PASSWORD'),
 | |
|           'dbindex'  => getenv('REDIS_DB_INDEX') ?: 0,
 | |
|         ),
 | |
|       );
 | |
|     }
 | |
|   apache-pretty-urls.config.php: |-
 | |
|     <?php
 | |
|     $CONFIG = array (
 | |
|         'htaccess.RewriteBase' => '/',
 | |
|     );
 | |
|   apcu.config.php: |-
 | |
|     <?php
 | |
|     $CONFIG = array (
 | |
|         'memcache.local' => '\\OC\\Memcache\\APCu',
 | |
|     );
 | |
|   apps.config.php: |-
 | |
|     <?php
 | |
|     $CONFIG = array (
 | |
|         "apps_paths" => array (
 | |
|             0 => array (
 | |
|                     "path"     => OC::$SERVERROOT."/apps",
 | |
|                   "url"      => "/apps",
 | |
|                   "writable" => false,
 | |
|           ),
 | |
|           1 => array (
 | |
|                     "path"     => OC::$SERVERROOT."/custom_apps",
 | |
|                   "url"      => "/custom_apps",
 | |
|                   "writable" => true,
 | |
|           ),
 | |
|       ),
 | |
|     );
 | |
|   autoconfig.php: |-
 | |
|     <?php
 | |
|     $autoconfig_enabled = false;
 | |
|     if (getenv('SQLITE_DATABASE')) {
 | |
|           $AUTOCONFIG["dbtype"] = "sqlite";
 | |
|         $AUTOCONFIG["dbname"] = getenv('SQLITE_DATABASE');
 | |
|         $autoconfig_enabled = true;
 | |
|     } elseif (getenv('MYSQL_DATABASE') && getenv('MYSQL_USER') && getenv('MYSQL_PASSWORD') && getenv('MYSQL_HOST')) {
 | |
|           $AUTOCONFIG["dbtype"] = "mysql";
 | |
|         $AUTOCONFIG["dbname"] = getenv('MYSQL_DATABASE');
 | |
|         $AUTOCONFIG["dbuser"] = getenv('MYSQL_USER');
 | |
|         $AUTOCONFIG["dbpass"] = getenv('MYSQL_PASSWORD');
 | |
|         $AUTOCONFIG["dbhost"] = getenv('MYSQL_HOST');
 | |
|         $autoconfig_enabled = true;
 | |
|     } elseif (getenv('POSTGRES_DB') && getenv('POSTGRES_USER') && getenv('POSTGRES_PASSWORD') && getenv('POSTGRES_HOST')) {
 | |
|           $AUTOCONFIG["dbtype"] = "pgsql";
 | |
|         $AUTOCONFIG["dbname"] = getenv('POSTGRES_DB');
 | |
|         $AUTOCONFIG["dbuser"] = getenv('POSTGRES_USER');
 | |
|         $AUTOCONFIG["dbpass"] = getenv('POSTGRES_PASSWORD');
 | |
|         $AUTOCONFIG["dbhost"] = getenv('POSTGRES_HOST');
 | |
|         $autoconfig_enabled = true;
 | |
|     }
 | |
|     if ($autoconfig_enabled) {
 | |
|           $AUTOCONFIG["directory"] = getenv('NEXTCLOUD_DATA_DIR') ?: "/var/www/html/data";
 | |
|     }
 | |
|   smtp.config.php: |-
 | |
|     <?php
 | |
|     if (getenv('SMTP_HOST') && getenv('MAIL_FROM_ADDRESS') && getenv('MAIL_DOMAIN')) {
 | |
|         $CONFIG = array (
 | |
|           'mail_smtpmode' => 'smtp',
 | |
|         'mail_smtphost' => getenv('SMTP_HOST'),
 | |
|         'mail_smtpport' => getenv('SMTP_PORT') ?: (getenv('SMTP_SECURE') ? 465 : 25),
 | |
|         'mail_smtpsecure' => getenv('SMTP_SECURE') ?: '',
 | |
|         'mail_smtpauth' => getenv('SMTP_NAME') && getenv('SMTP_PASSWORD'),
 | |
|         'mail_smtpauthtype' => getenv('SMTP_AUTHTYPE') ?: 'LOGIN',
 | |
|         'mail_smtpname' => getenv('SMTP_NAME') ?: '',
 | |
|         'mail_smtppassword' => getenv('SMTP_PASSWORD') ?: '',
 | |
|         'mail_from_address' => getenv('MAIL_FROM_ADDRESS'),
 | |
|         'mail_domain' => getenv('MAIL_DOMAIN'),
 | |
|       );
 | |
|     }
 | |
| ---
 | |
| 
 | |
| 
 | |
| # Source: nextcloud/templates/service.yaml
 | |
| apiVersion: v1
 | |
| kind: Service
 | |
| metadata:
 | |
|   name: nextcloud-nextcloud
 | |
|   labels:
 | |
|     app.kubernetes.io/name: nextcloud
 | |
|     app.kubernetes.io/instance: nextcloud-nextcloud
 | |
|     app.kubernetes.io/component: app
 | |
| spec:
 | |
|   type: ClusterIP
 | |
|   ports:
 | |
|   - port: 8080
 | |
|     targetPort: http
 | |
|     protocol: TCP
 | |
|     name: http
 | |
|   selector:
 | |
|     app.kubernetes.io/name: nextcloud
 | |
|     app.kubernetes.io/component: app
 | |
| ---
 | |
| # Source: nextcloud/templates/deployment.yaml
 | |
| apiVersion: apps/v1
 | |
| kind: Deployment
 | |
| metadata:
 | |
|   name: nextcloud-nextcloud
 | |
|   labels:
 | |
|     app.kubernetes.io/name: nextcloud
 | |
|     app.kubernetes.io/instance: nextcloud-nextcloud
 | |
|     app.kubernetes.io/component: app
 | |
| spec:
 | |
|   replicas: 1
 | |
|   strategy:
 | |
|     type: Recreate
 | |
|   selector:
 | |
|     matchLabels:
 | |
|       app.kubernetes.io/name: nextcloud
 | |
|       app.kubernetes.io/instance: nextcloud-nextcloud
 | |
|       app.kubernetes.io/component: app
 | |
|   template:
 | |
|     metadata:
 | |
|       labels:
 | |
|         app.kubernetes.io/name: nextcloud
 | |
|         app.kubernetes.io/instance: nextcloud-nextcloud
 | |
|         app.kubernetes.io/component: app
 | |
|         nextcloud-nextcloud-redis-client: "true"
 | |
|     spec:
 | |
|       priorityClassName: critical
 | |
|       containers:
 | |
|       - name: nextcloud
 | |
|         image: "nextcloud:32.0.1-apache"
 | |
|         imagePullPolicy: IfNotPresent
 | |
|         env:
 | |
|         - name: SQLITE_DATABASE
 | |
|           value: "nextcloud"
 | |
|         - name: NEXTCLOUD_ADMIN_USER
 | |
|           valueFrom:
 | |
|             secretKeyRef:
 | |
|               name: nextcloud-nextcloud
 | |
|               key: nextcloud-username
 | |
|         - name: NEXTCLOUD_ADMIN_PASSWORD
 | |
|           valueFrom:
 | |
|             secretKeyRef:
 | |
|               name: nextcloud-nextcloud
 | |
|               key: nextcloud-password
 | |
|         - name: NEXTCLOUD_TRUSTED_DOMAINS
 | |
|           value: nextcloud.cluster.fun
 | |
|         - name: NEXTCLOUD_DATA_DIR
 | |
|           value: "/var/www/html/data"
 | |
|         - name: REDIS_HOST
 | |
|           valueFrom:
 | |
|             secretKeyRef:
 | |
|               name: nextcloud-nextcloud-redis
 | |
|               key: redis-host
 | |
|         - name: REDIS_PORT
 | |
|           valueFrom:
 | |
|             secretKeyRef:
 | |
|               name: nextcloud-nextcloud-redis
 | |
|               key: redis-port
 | |
|         - name: REDIS_HOST_PASSWORD
 | |
|           valueFrom:
 | |
|             secretKeyRef:
 | |
|               name: nextcloud-nextcloud-redis
 | |
|               key: redis-password
 | |
|         - name: REDIS_DB_INDEX
 | |
|           valueFrom:
 | |
|             secretKeyRef:
 | |
|               name: nextcloud-nextcloud-redis
 | |
|               key: redis-db-index
 | |
|         ports:
 | |
|         - name: http
 | |
|           containerPort: 80
 | |
|           protocol: TCP
 | |
|         livenessProbe:
 | |
|           httpGet:
 | |
|             path: /status.php
 | |
|             port: http
 | |
|             httpHeaders:
 | |
|             - name: Host
 | |
|               value: "nextcloud.cluster.fun"
 | |
|           initialDelaySeconds: 10
 | |
|           periodSeconds: 10
 | |
|           timeoutSeconds: 5
 | |
|           successThreshold: 1
 | |
|           failureThreshold: 3
 | |
|         readinessProbe:
 | |
|           httpGet:
 | |
|             path: /status.php
 | |
|             port: http
 | |
|             httpHeaders:
 | |
|             - name: Host
 | |
|               value: "nextcloud.cluster.fun"
 | |
|           initialDelaySeconds: 10
 | |
|           periodSeconds: 10
 | |
|           timeoutSeconds: 5
 | |
|           successThreshold: 1
 | |
|           failureThreshold: 3
 | |
|         # Cover case where upgrade is being performed
 | |
|         startupProbe:
 | |
|           httpGet:
 | |
|             path: /status.php
 | |
|             port: http
 | |
|             httpHeaders:
 | |
|             - name: Host
 | |
|               value: "nextcloud.cluster.fun"
 | |
|           failureThreshold: 30
 | |
|           periodSeconds: 10
 | |
|         resources:
 | |
|           requests:
 | |
|             cpu: 1038m
 | |
|             memory: 765M
 | |
|           limits:
 | |
|             cpu: 1200m
 | |
|             memory: 765M
 | |
|         volumeMounts:
 | |
|         - name: nextcloud-data
 | |
|           mountPath: /var/www/
 | |
|           subPath: root
 | |
|         - name: nextcloud-data
 | |
|           mountPath: /var/www/html
 | |
|           subPath: html
 | |
|         - name: nextcloud-data
 | |
|           mountPath: /var/www/html/data
 | |
|           subPath: data
 | |
|         - name: nextcloud-data
 | |
|           mountPath: /var/www/html/config
 | |
|           subPath: config
 | |
|         - name: nextcloud-data
 | |
|           mountPath: /var/www/html/custom_apps
 | |
|           subPath: custom_apps
 | |
|         - name: nextcloud-data
 | |
|           mountPath: /var/www/tmp
 | |
|           subPath: tmp
 | |
|         - name: nextcloud-data
 | |
|           mountPath: /var/www/html/themes
 | |
|           subPath: themes
 | |
|         - name: nextcloud-config
 | |
|           mountPath: /var/www/html/config/general.config.php
 | |
|           subPath: general.config.php
 | |
|         - name: nextcloud-s3
 | |
|           mountPath: /var/www/html/config/s3.config.php
 | |
|           subPath: s3.config.php
 | |
|         - name: nextcloud-config
 | |
|           mountPath: /var/www/html/config/.htaccess
 | |
|           subPath: .htaccess
 | |
|         - name: nextcloud-config
 | |
|           mountPath: /var/www/html/config/apache-pretty-urls.config.php
 | |
|           subPath: apache-pretty-urls.config.php
 | |
|         - name: nextcloud-config
 | |
|           mountPath: /var/www/html/config/apcu.config.php
 | |
|           subPath: apcu.config.php
 | |
|         - name: nextcloud-config
 | |
|           mountPath: /var/www/html/config/apps.config.php
 | |
|           subPath: apps.config.php
 | |
|         - name: nextcloud-config
 | |
|           mountPath: /var/www/html/config/autoconfig.php
 | |
|           subPath: autoconfig.php
 | |
|         - name: nextcloud-config
 | |
|           mountPath: /var/www/html/config/redis.config.php
 | |
|           subPath: redis.config.php
 | |
|         - name: nextcloud-config
 | |
|           mountPath: /var/www/html/config/smtp.config.php
 | |
|           subPath: smtp.config.php
 | |
|       volumes:
 | |
|       - name: nextcloud-data
 | |
|         persistentVolumeClaim:
 | |
|           claimName: nextcloud-nextcloud-nextcloud
 | |
|       - name: nextcloud-config
 | |
|         configMap:
 | |
|           name: nextcloud-nextcloud-config
 | |
|       - name: nextcloud-s3
 | |
|         secret:
 | |
|           secretName: nextcloud-s3
 | |
|       # Will mount configuration files as www-data (id: 33) for nextcloud
 | |
|       securityContext:
 | |
|         fsGroup: 33
 | |
| ---
 | |
| # Source: nextcloud/templates/cronjob.yaml
 | |
| apiVersion: batch/v1
 | |
| kind: CronJob
 | |
| metadata:
 | |
|   name: nextcloud-nextcloud-cron
 | |
|   labels:
 | |
|     app.kubernetes.io/name: nextcloud
 | |
|     app.kubernetes.io/instance: nextcloud-nextcloud
 | |
|   annotations:
 | |
|     {}
 | |
| spec:
 | |
|   schedule: "*/5 * * * *"
 | |
|   concurrencyPolicy: Forbid
 | |
|   failedJobsHistoryLimit: 5
 | |
|   successfulJobsHistoryLimit: 2
 | |
|   jobTemplate:
 | |
|     metadata:
 | |
|       labels:
 | |
|         app.kubernetes.io/name: nextcloud
 | |
|     spec:
 | |
|       template:
 | |
|         metadata:
 | |
|           labels:
 | |
|             app.kubernetes.io/name: nextcloud
 | |
|         spec:
 | |
|           restartPolicy: Never
 | |
|           containers:
 | |
|             - name: nextcloud
 | |
|               image: "nextcloud:32.0.1-apache"
 | |
|               imagePullPolicy: IfNotPresent
 | |
|               command: [ "curl" ]
 | |
|               args:
 | |
|                 - "--fail"
 | |
|                 - "-L"
 | |
|                 - "https://nextcloud.cluster.fun/cron.php"
 | |
|               resources:
 | |
|                 requests:
 | |
|                   memory: 200Mi
 | |
| ---
 | |
| # Source: nextcloud/templates/ingress.yaml
 | |
| apiVersion: networking.k8s.io/v1
 | |
| kind: Ingress
 | |
| metadata:
 | |
|   name: nextcloud-nextcloud
 | |
|   labels:
 | |
|     app.kubernetes.io/name: nextcloud
 | |
|     app.kubernetes.io/instance: nextcloud-nextcloud
 | |
|     app.kubernetes.io/component: app
 | |
|   annotations:
 | |
|     cert-manager.io/cluster-issuer: letsencrypt
 | |
|     nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
 | |
|     nginx.ingress.kubernetes.io/proxy-body-size: "0"
 | |
| spec:
 | |
|   rules:
 | |
|   - host: nextcloud.cluster.fun
 | |
|     http:
 | |
|       paths:
 | |
|       - path: /
 | |
|         pathType: Prefix
 | |
|         backend:
 | |
|           service:
 | |
|             name: nextcloud-nextcloud
 | |
|             port:
 | |
|               number: 8080
 | |
|   tls:
 | |
|     - hosts:
 | |
|       - nextcloud.cluster.fun
 | |
|       secretName: nextcloud-ingress
 |