# openshift-values.yaml
#
# Example overrides for deploying SeaweedFS on OpenShift (or any cluster
# enforcing the Kubernetes "restricted" Pod Security Standard).
#
# OpenShift's default "restricted" SCC blocks containers that:
#   - Run as UID 0 (root)
#   - Request privilege escalation
#   - Use hostPath volumes
#   - Omit a seccompProfile
#
# These overrides satisfy all four requirements by:
#   1. Replacing hostPath volumes with PersistentVolumeClaims (or emptyDir for logs)
#   2. Enabling runAsNonRoot: true. By omitting runAsUser, OpenShift will
#      automatically assign a valid UID from the namespace's allocated range.
#   3. Dropping all Linux capabilities and setting allowPrivilegeEscalation: false
#   4. Enabling RuntimeDefault seccompProfile
#
# Usage:
#   helm install seaweedfs seaweedfs/seaweedfs \
#     -n seaweedfs --create-namespace \
#     -f openshift-values.yaml
#
# Adjust storageClass and sizes to match your cluster's available StorageClasses.
# On OpenShift you can discover them with: oc get storageclass
global:
  enableReplication: true
  #  replication type is XYZ:
  # X number of replica in other data centers
  # Y number of replica in other racks in the same data center
  # Z number of replica in other servers in the same rack
  replicationPlacement: "000" # no data replica
master:
  replicas: 1
  data:
    type: "persistentVolumeClaim"
    size: "10Gi"
    storageClass: ""        # leave empty to use the cluster default StorageClass

  logs:
    type: "emptyDir"        # avoids hostPath; use persistentVolumeClaim if you need log persistence

  podSecurityContext:
    enabled: true
    # On OpenShift, we omit runAsUser/runAsGroup/fsGroup to let the admission
    # controller assign them automatically based on the namespace's SCC.
    runAsNonRoot: true

  containerSecurityContext:
    enabled: true
    allowPrivilegeEscalation: false
    capabilities:
      drop: ["ALL"]
    runAsNonRoot: true
    seccompProfile:
      type: RuntimeDefault

volume:
  replicas: 1
  dataDirs:
    - name: data1
      type: "persistentVolumeClaim"
      size: "100Gi"
      storageClass: ""      # leave empty to use the cluster default StorageClass
      maxVolumes: 0

  logs:
    type: "emptyDir"

  podSecurityContext:
    enabled: true
    # On OpenShift, we omit runAsUser/runAsGroup/fsGroup to let the admission
    # controller assign them automatically based on the namespace's SCC.
    runAsNonRoot: true

  containerSecurityContext:
    enabled: true
    allowPrivilegeEscalation: false
    capabilities:
      drop: ["ALL"]
    runAsNonRoot: true
    seccompProfile:
      type: RuntimeDefault

filer:
  replicas: 1
  data:
    type: "persistentVolumeClaim"
    size: "25Gi"
    storageClass: ""        # leave empty to use the cluster default StorageClass

  logs:
    type: "emptyDir"

  podSecurityContext:
    enabled: true
    # On OpenShift, we omit runAsUser/runAsGroup/fsGroup to let the admission
    # controller assign them automatically based on the namespace's SCC.
    runAsNonRoot: true

  containerSecurityContext:
    enabled: true
    allowPrivilegeEscalation: false
    capabilities:
      drop: ["ALL"]
    runAsNonRoot: true
    seccompProfile:
      type: RuntimeDefault

# S3 gateway (if enabled)
s3:
  enabled: true
  replicas: 1
  port: 8333
  enableAuth: true
  podSecurityContext:
    enabled: true
    # On OpenShift, we omit runAsUser/runAsGroup/fsGroup to let the admission
    # controller assign them automatically based on the namespace's SCC.
    runAsNonRoot: true

  logs:
    type: "emptyDir"

  containerSecurityContext:
    enabled: true
    allowPrivilegeEscalation: false
    capabilities:
      drop: ["ALL"]
    runAsNonRoot: true
    seccompProfile:
      type: RuntimeDefault
