# FlowerCore.DeviceManagement Operator. # # KubeOps controller for devices.flowercore.io resources. Operator-created # children must set OwnerReferences + traceability labels/annotations per # k8s-pod-ownership-and-traceability-standard.md. RBAC below grants # apps/deployments/get so the process can resolve its own Deployment UID. apiVersion: apps/v1 kind: Deployment metadata: name: fc-devicemgmt-operator namespace: fc-devicemgmt labels: app: fc-devicemgmt-operator app.kubernetes.io/name: fc-devicemgmt-operator app.kubernetes.io/component: operator app.kubernetes.io/part-of: flowercore app.kubernetes.io/managed-by: argocd flowercore.io/tenant-id: system flowercore.io/created-by: bluejay-infra annotations: flowercore.io/traceability-standard: k8s-pod-ownership-and-traceability-standard spec: replicas: 1 revisionHistoryLimit: 3 selector: matchLabels: app: fc-devicemgmt-operator template: metadata: labels: app: fc-devicemgmt-operator app.kubernetes.io/name: fc-devicemgmt-operator app.kubernetes.io/component: operator app.kubernetes.io/part-of: flowercore app.kubernetes.io/managed-by: argocd flowercore.io/tenant-id: system flowercore.io/created-by: bluejay-infra annotations: prometheus.io/scrape: "true" prometheus.io/port: "8080" prometheus.io/path: "/metrics" flowercore.io/audit-trace-id: "runtime-activity-trace" spec: serviceAccountName: fc-devicemgmt-operator securityContext: fsGroup: 1654 fsGroupChangePolicy: OnRootMismatch containers: - name: operator image: localhost/fc-devicemgmt-operator:v20260512-cx5 imagePullPolicy: Never ports: - name: metrics containerPort: 8080 env: - name: ASPNETCORE_ENVIRONMENT value: "Production" - name: DOTNET_SYSTEM_GLOBALIZATION_INVARIANT value: "false" - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: FLOWERCORE_KUBERNETES_OWNER_DEPLOYMENT value: "fc-devicemgmt-operator" - name: FlowerCore__Service__Name value: "FlowerCore.DeviceManagement.Operator" - name: FlowerCore__DeviceManagement__DefaultTenantId value: "system" resources: requests: cpu: 50m memory: 128Mi limits: cpu: 500m memory: 512Mi readinessProbe: tcpSocket: port: 8080 initialDelaySeconds: 5 periodSeconds: 10 livenessProbe: tcpSocket: port: 8080 initialDelaySeconds: 20 periodSeconds: 30 securityContext: runAsNonRoot: true runAsUser: 1654 runAsGroup: 1654 allowPrivilegeEscalation: false readOnlyRootFilesystem: true capabilities: drop: - ALL volumeMounts: - name: tmp mountPath: /tmp - name: logs mountPath: /app/logs volumes: - name: tmp emptyDir: {} - name: logs emptyDir: {}