kind: StatefulSet
apiVersion: apps/v1
metadata:
  name: customer-node
  labels:
    app: customer-node
spec:
  replicas: 1
  selector:
    matchLabels:
      app: customer-node
  updateStrategy:
    type: RollingUpdate
  volumeClaimTemplates:
    - metadata:
        name: nextcloud-data
      spec:
        storageClassName: csi-sc-cinderplugin
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 1Gi
  template:
    metadata:
      labels:
        app: customer-node
        kano: micke
    spec:
      restartPolicy: Always
      containers:
        - name: customer
          image: docker.sunet.se/drive/nextcloud-custom:28.0.2.6-2
          volumeMounts:
            - name: nextcloud-data
              mountPath: /var/www/html/config/
              subPath: config
            - name: apache-config
              mountPath: /etc/apache2/sites-enabled/000-default.conf
              subPath: 000-default.conf
            - name: script-config
              mountPath: /usr/local/bin/nc-upgrade
              subPath: nc-upgrade
            - name: apache-php-config
              mountPath: /etc/php/8.0/apache2/php.ini
              subPath: php.ini
            - name: apcu-config
              mountPath: /etc/php/8.0/mods-available/apcu.ini
              subPath: apcu.ini
            - name: cli-php-config
              mountPath: /etc/php/8.0/cli/php.ini
              subPath: php.ini
          resources:
            limits:
              cpu: 2000m
              memory: 2048Mi
            requests:
              cpu: 1000m
              memory: 512Mi
          readinessProbe:
            tcpSocket:
              port: 80
            initialDelaySeconds: 10
            periodSeconds: 60
          livenessProbe:
            tcpSocket:
              port: 80
            initialDelaySeconds: 20
            periodSeconds: 180
          ports:
            - containerPort: 80
              name: nextcloud-http
          command: ["/bin/bash"]
          args: ["-c", "apachectl -D FOREGROUND"]
          lifecycle:
            postStart:
              exec:
                command: ["/bin/bash", "-c", "/usr/local/bin/nc-upgrade"]
      initContainers:
        - image: docker.sunet.se/sunet/docker-jinja:latest
          name: init-config
          volumeMounts:
            - name: nextcloud-config
              mountPath: /tmp/config.php.template
              subPath: config.php
            - name: nextcloud-data
              mountPath: /var/www/html/config
              subPath: config
          env:
            - name: GSS_MASTER_URL
              value: "https://drive.test.sunet.se"
            - name: GSS_JWT_KEY
              valueFrom:
                secretKeyRef:
                  name: gss-secret
                  key: "jwt_key"
            - name: LOOKUP_SERVER
              value: "https://lookup.drive.test.sunet.se"
            - name: MAIL_DOMAIN
              value: "drive.test.sunet.se"
            - name: MAIL_FROM_ADDRESS
              value: "noreply"
            - name: MAIL_SMTPHOST
              value: "smtp.sunet.se"
            - name: MAIL_SMTPNAME
              value: "noreply@drive.test.sunet.se"
            - name: MAIL_SMTPPASSWORD
              valueFrom:
                secretKeyRef:
                  name: mail-secret
                  key: "smtp_password"
            - name: MYSQL_DATABASE
              value: "nextcloud_customer"
            - name: MYSQL_USER
              value: "nextcloud_customer"
            - name: MYSQL_HOST
              value: "proxysqlcluster.proxysql"
            - name: MYSQL_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: db-secret
                  key: "db_password"
            - name: MYSQL_PORT
              value: "6033"
            - name: NEXTCLOUD_TRUSTED_DOMAINS
              value: "customer.drive.test.sunet.se"
            - name: NEXTCLOUD_ADMIN_USER
              value: admin
            - name: NEXTCLOUD_VERSION_STRING
              value: "28.0.2.6"
            - name: NEXTCLOUD_ADMIN_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: nc-secret
                  key: "nc_admin_password"
            - name: NEXTCLOUD_PASSWORDSALT
              valueFrom:
                secretKeyRef:
                  name: nc-secret
                  key: "nc_passwordsalt"
            - name: NEXTCLOUD_INSTANCEID
              valueFrom:
                secretKeyRef:
                  name: nc-secret
                  key: "nc_instanceid"
            - name: NEXTCLOUD_SECRET
              valueFrom:
                secretKeyRef:
                  name: nc-secret
                  key: "nc_secret"
            - name: OBJECTSTORE_S3_REGION
              value: "us-east-1"
            - name: OBJECTSTORE_S3_HOST
              value: "s3.sto4.safedc.net"
            - name: OBJECTSTORE_S3_BUCKET
              value: "primary-customer-drive-test.sunet.se"
            - name: OBJECTSTORE_S3_KEY
              valueFrom:
                secretKeyRef:
                  name: s3-secret
                  key: "s3_key"
            - name: OBJECTSTORE_S3_SECRET
              valueFrom:
                secretKeyRef:
                  name: s3-secret
                  key: "s3_secret"
            - name: OBJECTSTORE_S3_USEPATH_STYLE
              value: "true"
            - name: OBJECTSTORE_S3_AUTOCREATE
              value: "true"
            - name: OBJECTSTORE_S3_SSL
              value: "true"
            - name: REDIS_HOST
              value: "redis"
            - name: SITE_NAME
              value: "customer.drive.test.sunet.se"
          command: ["/bin/bash", "-c", "/usr/bin/j2 -f env -o /var/www/html/config/config.php /tmp/config.php.template"]
      volumes:
        - name: script-config
          configMap:
            name: script-configmap
            items:
              - key: "nc-upgrade"
                path: "nc-upgrade"
            defaultMode: 0744
        - name: apache-php-config
          configMap:
            name: apache-php-configmap
            items:
              - key: "php.ini"
                path: "php.ini"
        - name: apcu-config
          configMap:
            name: apcu-configmap
            items:
              - key: "apcu.ini"
                path: "apcu.ini"
        - name: cli-php-config
          configMap:
            name: cli-php-configmap
            items:
              - key: "php.ini"
                path: "php.ini"
        - name: apache-config
          configMap:
            name: apache-configmap
            items:
              - key: "000-default.conf"
                path: "000-default.conf"
        - name: nextcloud-config
          configMap:
            name: nextcloud-configmap
            items:
              - key: "config.php"
                path: "config.php"
