stack.basicstack.de/apps/opencloud/opencloud-deployment.yaml

240 lines
6 KiB
YAML
Raw Normal View History

---
apiVersion: v1
kind: Namespace
metadata:
name: opencloud
---
# OpenCloud Data Storage
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: opencloud-data
namespace: opencloud
spec:
accessModes:
- ReadWriteOnce
storageClassName: hcloud-volumes-encrypted
resources:
requests:
storage: 100Gi
---
# OpenCloud Service
apiVersion: v1
kind: Service
metadata:
name: opencloud
namespace: opencloud
spec:
type: ClusterIP
selector:
app: opencloud
ports:
- name: http
port: 9200
targetPort: 9200
protocol: TCP
---
# OpenCloud Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: opencloud
namespace: opencloud
spec:
replicas: 1
selector:
matchLabels:
app: opencloud
template:
metadata:
labels:
app: opencloud
spec:
securityContext:
fsGroup: 1000
runAsUser: 1000
runAsNonRoot: true
initContainers:
- name: init-config
image: quay.io/opencloudeu/opencloud:7.2.0
command:
- sh
- -c
- |
mkdir -p /var/lib/opencloud/config
mkdir -p /var/lib/opencloud/data
cd /var/lib/opencloud
/usr/bin/opencloud init --insecure true || true
env:
- name: OPENCLOUD_BASE_DATA_PATH
value: "/var/lib/opencloud"
- name: OPENCLOUD_CONFIG_DIR
value: "/var/lib/opencloud/config"
- name: OPENCLOUD_JWT_SECRET
valueFrom:
secretKeyRef:
name: opencloud-jwt-secret
key: jwt-secret
volumeMounts:
- name: opencloud-data
mountPath: /var/lib/opencloud
securityContext:
runAsUser: 1000
runAsGroup: 1000
runAsNonRoot: true
containers:
- name: opencloud
image: quay.io/opencloudeu/opencloud:7.2.0
env:
# Basic configuration
- name: OPENCLOUD_URL
value: "https://opencloud.basicstack.de"
- name: OPENCLOUD_LOG_LEVEL
value: "info"
- name: OPENCLOUD_LOG_PRETTY
value: "false"
- name: OPENCLOUD_LOG_COLOR
value: "false"
# Data paths
- name: OPENCLOUD_BASE_DATA_PATH
value: "/var/lib/opencloud"
- name: OPENCLOUD_CONFIG_DIR
value: "/var/lib/opencloud/config"
# JWT Secret for token signing
- name: OPENCLOUD_JWT_SECRET
valueFrom:
secretKeyRef:
name: opencloud-jwt-secret
key: jwt-secret
- name: PROXY_JWT_SECRET
valueFrom:
secretKeyRef:
name: opencloud-jwt-secret
key: jwt-secret
# OIDC Configuration
- name: PROXY_OIDC_ISSUER
value: "https://auth.basicstack.de"
- name: OPENCLOUD_OIDC_ISSUER
value: "https://auth.basicstack.de"
- name: PROXY_OIDC_INSECURE
value: "false"
- name: OPENCLOUD_OIDC_INSECURE
value: "false"
- name: PROXY_USER_OIDC_CLAIM
value: "preferred_username"
- name: PROXY_USER_CS3_CLAIM
value: "username"
# OIDC Client Credentials
- name: PROXY_OIDC_CLIENT_ID
valueFrom:
secretKeyRef:
name: opencloud-oidc-secret
key: oidc-client-id
- name: PROXY_OIDC_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: opencloud-oidc-secret
key: oidc-client-secret
# SMTP Configuration
- name: NOTIFICATIONS_SMTP_HOST
value: "mail.basicstack.de"
- name: NOTIFICATIONS_SMTP_PORT
value: "465"
- name: NOTIFICATIONS_SMTP_SENDER
valueFrom:
secretKeyRef:
name: opencloud-smtp-secret
key: smtp-username
- name: NOTIFICATIONS_SMTP_USERNAME
valueFrom:
secretKeyRef:
name: opencloud-smtp-secret
key: smtp-username
- name: NOTIFICATIONS_SMTP_PASSWORD
valueFrom:
secretKeyRef:
name: opencloud-smtp-secret
key: smtp-password
- name: NOTIFICATIONS_SMTP_INSECURE
value: "false"
- name: NOTIFICATIONS_SMTP_AUTHENTICATION
value: "login"
- name: NOTIFICATIONS_SMTP_ENCRYPTION
value: "ssl"
# Demo users disabled (use OIDC only)
- name: IDM_CREATE_DEMO_USERS
value: "false"
- name: PROXY_ENABLE_BASIC_AUTH
value: "false"
# Admin user from OIDC
- name: GRAPH_ASSIGN_DEFAULT_USER_ROLE
value: "false"
- name: GRAPH_USERNAME_MATCH
value: "none"
ports:
- containerPort: 9200
name: http
volumeMounts:
- name: opencloud-data
mountPath: /var/lib/opencloud
resources:
requests:
memory: "512Mi"
cpu: "250m"
limits:
memory: "2Gi"
cpu: "1000m"
livenessProbe:
httpGet:
path: /status.php
port: 9200
initialDelaySeconds: 60
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 5
readinessProbe:
httpGet:
path: /status.php
port: 9200
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
volumes:
- name: opencloud-data
persistentVolumeClaim:
claimName: opencloud-data
---
# Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: opencloud
namespace: opencloud
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
ingressClassName: traefik
tls:
- hosts:
- opencloud.basicstack.de
secretName: opencloud-tls
rules:
- host: opencloud.basicstack.de
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: opencloud
port:
number: 9200