apiVersion: v1
kind: ServiceAccount
automountServiceAccountToken: true
metadata:
  name: minio-operator
  namespace: default
  labels:
    app: minio-operator
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: minio-operator
  namespace: default
rules:
  - apiGroups: ["communiquons.org"]
    resources: ["minioinstances", "miniobuckets"]
    verbs: ["get", "list", "watch"]
  - apiGroups: [""]
    resources: ["secrets"]
    verbs: ["get", "create"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: minio-operator
  namespace: default
subjects:
  - kind: ServiceAccount
    name: minio-operator
    namespace: default
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: minio-operator
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: minio-operator
  labels:
    app: minio-operator
spec:
  replicas: 1
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: minio-operator
  template:
    metadata:
      labels:
        app: minio-operator
    spec:
      serviceAccountName: minio-operator
      containers:
        - name: minio-operator
          image: pierre42100/minio_operator
          resources:
            limits:
              memory: 300Mi
              cpu: "0.1"
            requests:
              memory: 150Mi
              cpu: "0.01"
          volumeMounts:
            - mountPath: /tmp
              readOnly: false
              name: tempdir
          securityContext:
            allowPrivilegeEscalation: false
            readOnlyRootFilesystem: true
            runAsUser: 1000
            runAsGroup: 1000
            capabilities:
              drop:
                - ALL
      volumes:
        - name: tempdir
          emptyDir:
            sizeLimit: 500Mi