camtiler: Formatting, networkpolicy and labeling fixes
This commit is contained in:
		| @@ -1,3 +1,4 @@ | ||||
| --- | ||||
| apiVersion: apps/v1 | ||||
| kind: Deployment | ||||
| metadata: | ||||
| @@ -114,8 +115,8 @@ spec: | ||||
|   selector: | ||||
|     app.kubernetes.io/name: log-viewer-frontend | ||||
|   ports: | ||||
|   - protocol: TCP | ||||
|     port: 3003 | ||||
|     - protocol: TCP | ||||
|       port: 3003 | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: Service | ||||
| @@ -126,8 +127,8 @@ spec: | ||||
|   selector: | ||||
|     app.kubernetes.io/name: log-viewer-backend | ||||
|   ports: | ||||
|   - protocol: TCP | ||||
|     port: 3002 | ||||
|     - protocol: TCP | ||||
|       port: 3002 | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: Service | ||||
| @@ -141,8 +142,8 @@ spec: | ||||
|     app.kubernetes.io/name: camtiler | ||||
|     component: camtiler | ||||
|   ports: | ||||
|   - protocol: TCP | ||||
|     port: 5001 | ||||
|     - protocol: TCP | ||||
|       port: 5001 | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: ServiceAccount | ||||
| @@ -154,18 +155,21 @@ apiVersion: rbac.authorization.k8s.io/v1 | ||||
| metadata: | ||||
|   name: camtiler | ||||
| rules: | ||||
| - apiGroups: [""] | ||||
|   resources: ["services"] | ||||
|   verbs: ["list"] | ||||
|   - apiGroups: | ||||
|       - "" | ||||
|     resources: | ||||
|       - services | ||||
|     verbs: | ||||
|       - list | ||||
| --- | ||||
| kind: RoleBinding | ||||
| apiVersion: rbac.authorization.k8s.io/v1 | ||||
| metadata: | ||||
|   name: camtiler | ||||
| subjects: | ||||
| - kind: ServiceAccount | ||||
|   name: camtiler | ||||
|   apiGroup: "" | ||||
|   - kind: ServiceAccount | ||||
|     name: camtiler | ||||
|     apiGroup: "" | ||||
| roleRef: | ||||
|   kind: Role | ||||
|   name: camtiler | ||||
| @@ -204,34 +208,34 @@ metadata: | ||||
|     external-dns.alpha.kubernetes.io/target: traefik.k-space.ee | ||||
| spec: | ||||
|   rules: | ||||
|   - host: cams.k-space.ee | ||||
|     http: | ||||
|       paths: | ||||
|       - pathType: Prefix | ||||
|         path: "/tiled" | ||||
|         backend: | ||||
|           service: | ||||
|             name: camtiler | ||||
|             port: | ||||
|               number: 5001 | ||||
|       - pathType: Prefix | ||||
|         path: "/events" | ||||
|         backend: | ||||
|           service: | ||||
|             name: log-viewer-backend | ||||
|             port: | ||||
|               number: 3002 | ||||
|       - pathType: Prefix | ||||
|         path: "/" | ||||
|         backend: | ||||
|           service: | ||||
|             name: log-viewer-frontend | ||||
|             port: | ||||
|               number: 3003 | ||||
|     - host: cams.k-space.ee | ||||
|       http: | ||||
|         paths: | ||||
|           - pathType: Prefix | ||||
|             path: "/tiled" | ||||
|             backend: | ||||
|               service: | ||||
|                 name: camtiler | ||||
|                 port: | ||||
|                   number: 5001 | ||||
|           - pathType: Prefix | ||||
|             path: "/events" | ||||
|             backend: | ||||
|               service: | ||||
|                 name: log-viewer-backend | ||||
|                 port: | ||||
|                   number: 3002 | ||||
|           - pathType: Prefix | ||||
|             path: "/" | ||||
|             backend: | ||||
|               service: | ||||
|                 name: log-viewer-frontend | ||||
|                 port: | ||||
|                   number: 3003 | ||||
|   tls: | ||||
|   - hosts: | ||||
|     - cams.k-space.ee | ||||
|     secretName: camtiler-tls | ||||
|     - hosts: | ||||
|         - cams.k-space.ee | ||||
|       secretName: camtiler-tls | ||||
| --- | ||||
| apiVersion: networking.k8s.io/v1 | ||||
| kind: NetworkPolicy | ||||
| @@ -242,37 +246,37 @@ spec: | ||||
|     matchLabels: | ||||
|       component: camdetect | ||||
|   policyTypes: | ||||
|   - Ingress | ||||
|   - Egress | ||||
|     - Ingress | ||||
|     - Egress | ||||
|   ingress: | ||||
|   - from: | ||||
|     - podSelector: | ||||
|         matchLabels: | ||||
|           component: camtiler | ||||
|   - from: | ||||
|     - namespaceSelector: | ||||
|         matchLabels: | ||||
|           kubernetes.io/metadata.name: prometheus-operator | ||||
|       podSelector: | ||||
|         matchLabels: | ||||
|           app.kubernetes.io/name: prometheus | ||||
|     - from: | ||||
|         - podSelector: | ||||
|             matchLabels: | ||||
|               component: camtiler | ||||
|     - from: | ||||
|         - namespaceSelector: | ||||
|             matchLabels: | ||||
|               kubernetes.io/metadata.name: prometheus-operator | ||||
|           podSelector: | ||||
|             matchLabels: | ||||
|               app.kubernetes.io/name: prometheus | ||||
|   egress: | ||||
|     - to: | ||||
|         - ipBlock: | ||||
|             # Permit access to cameras outside the cluster | ||||
|             cidr: 100.102.0.0/16 | ||||
|     - to: | ||||
|       - podSelector: | ||||
|           matchLabels: | ||||
|             app.kubernetes.io/name: mongodb-svc | ||||
|         - podSelector: | ||||
|             matchLabels: | ||||
|               app: mongodb-svc | ||||
|       ports: | ||||
|       - port: 27017 | ||||
|         - port: 27017 | ||||
|     - to: | ||||
|       - podSelector: | ||||
|           matchLabels: | ||||
|             v1.min.io/tenant: minio | ||||
|         - podSelector: | ||||
|             matchLabels: | ||||
|               v1.min.io/tenant: minio | ||||
|       ports: | ||||
|       - port: 9000 | ||||
|         - port: 9000 | ||||
| --- | ||||
| apiVersion: networking.k8s.io/v1 | ||||
| kind: NetworkPolicy | ||||
| @@ -283,30 +287,30 @@ spec: | ||||
|     matchLabels: | ||||
|       component: camtiler | ||||
|   policyTypes: | ||||
|   - Ingress | ||||
|   - Egress | ||||
|     - Ingress | ||||
|     - Egress | ||||
|   egress: | ||||
|   - to: | ||||
|     - podSelector: | ||||
|         matchLabels: | ||||
|           component: camdetect | ||||
|     ports: | ||||
|     - port: 5000 | ||||
|     - to: | ||||
|         - podSelector: | ||||
|             matchLabels: | ||||
|               component: camdetect | ||||
|       ports: | ||||
|         - port: 5000 | ||||
|   ingress: | ||||
|   - from: | ||||
|     - namespaceSelector: | ||||
|         matchLabels: | ||||
|           kubernetes.io/metadata.name: prometheus-operator | ||||
|       podSelector: | ||||
|         matchLabels: | ||||
|           app.kubernetes.io/name: prometheus | ||||
|   - from: | ||||
|     - namespaceSelector: | ||||
|         matchLabels: | ||||
|           kubernetes.io/metadata.name: traefik | ||||
|       podSelector: | ||||
|         matchLabels: | ||||
|           app.kubernetes.io/name: traefik | ||||
|     - from: | ||||
|         - namespaceSelector: | ||||
|             matchLabels: | ||||
|               kubernetes.io/metadata.name: prometheus-operator | ||||
|           podSelector: | ||||
|             matchLabels: | ||||
|               app.kubernetes.io/name: prometheus | ||||
|     - from: | ||||
|         - namespaceSelector: | ||||
|             matchLabels: | ||||
|               kubernetes.io/metadata.name: traefik | ||||
|           podSelector: | ||||
|             matchLabels: | ||||
|               app.kubernetes.io/name: traefik | ||||
| --- | ||||
| apiVersion: networking.k8s.io/v1 | ||||
| kind: NetworkPolicy | ||||
| @@ -317,25 +321,29 @@ spec: | ||||
|     matchLabels: | ||||
|       app.kubernetes.io/name: log-viewer-backend | ||||
|   policyTypes: | ||||
|   - Ingress | ||||
|   - Egress | ||||
|     - Ingress | ||||
|     - Egress | ||||
|   egress: | ||||
|     - to: | ||||
|       - podSelector: | ||||
|           matchLabels: | ||||
|             app.kubernetes.io/name: mongodb-svc | ||||
|         - podSelector: | ||||
|             matchLabels: | ||||
|               app: mongodb-svc | ||||
|     - to: | ||||
|       - ipBlock: | ||||
|           # Minio is accessed thru public endpoint via Traefik | ||||
|           cidr: 193.40.103.0/24 | ||||
|         # Minio access via Traefik's public endpoint | ||||
|         - namespaceSelector: | ||||
|             matchLabels: | ||||
|               kubernetes.io/metadata.name: traefik | ||||
|           podSelector: | ||||
|             matchLabels: | ||||
|               app.kubernetes.io/name: traefik | ||||
|   ingress: | ||||
|   - from: | ||||
|     - namespaceSelector: | ||||
|         matchLabels: | ||||
|           kubernetes.io/metadata.name: traefik | ||||
|       podSelector: | ||||
|         matchLabels: | ||||
|           app.kubernetes.io/name: traefik | ||||
|     - from: | ||||
|         - namespaceSelector: | ||||
|             matchLabels: | ||||
|               kubernetes.io/metadata.name: traefik | ||||
|           podSelector: | ||||
|             matchLabels: | ||||
|               app.kubernetes.io/name: traefik | ||||
| --- | ||||
| apiVersion: networking.k8s.io/v1 | ||||
| kind: NetworkPolicy | ||||
| @@ -346,16 +354,16 @@ spec: | ||||
|     matchLabels: | ||||
|       app.kubernetes.io/name: log-viewer-frontend | ||||
|   policyTypes: | ||||
|   - Ingress | ||||
|   - Egress | ||||
|     - Ingress | ||||
|     - Egress | ||||
|   ingress: | ||||
|   - from: | ||||
|     - namespaceSelector: | ||||
|         matchLabels: | ||||
|           kubernetes.io/metadata.name: traefik | ||||
|       podSelector: | ||||
|         matchLabels: | ||||
|           app.kubernetes.io/name: traefik | ||||
|     - from: | ||||
|         - namespaceSelector: | ||||
|             matchLabels: | ||||
|               kubernetes.io/metadata.name: traefik | ||||
|           podSelector: | ||||
|             matchLabels: | ||||
|               app.kubernetes.io/name: traefik | ||||
| --- | ||||
| apiVersion: networking.k8s.io/v1 | ||||
| kind: Ingress | ||||
| @@ -369,93 +377,93 @@ metadata: | ||||
|     external-dns.alpha.kubernetes.io/target: traefik.k-space.ee | ||||
| spec: | ||||
|   rules: | ||||
|   - host: cams-s3.k-space.ee | ||||
|     http: | ||||
|       paths: | ||||
|       - pathType: Prefix | ||||
|         path: "/" | ||||
|         backend: | ||||
|           service: | ||||
|             name: minio | ||||
|             port: | ||||
|               number: 80 | ||||
|     - host: cams-s3.k-space.ee | ||||
|       http: | ||||
|         paths: | ||||
|           - pathType: Prefix | ||||
|             path: "/" | ||||
|             backend: | ||||
|               service: | ||||
|                 name: minio | ||||
|                 port: | ||||
|                   number: 80 | ||||
|   tls: | ||||
|   - hosts: | ||||
|     - cams-s3.k-space.ee | ||||
|     secretName: cams-s3-tls | ||||
|     - hosts: | ||||
|         - cams-s3.k-space.ee | ||||
|       secretName: cams-s3-tls | ||||
| --- | ||||
| apiVersion: apiextensions.k8s.io/v1 | ||||
| kind: CustomResourceDefinition | ||||
| metadata: | ||||
|  name: cams.k-space.ee | ||||
|   name: cams.k-space.ee | ||||
| spec: | ||||
|  group: k-space.ee | ||||
|  names: | ||||
|    plural: cams | ||||
|    singular: cam | ||||
|    kind: Camera | ||||
|    shortNames: | ||||
|    - cam | ||||
|  scope: Namespaced | ||||
|  versions: | ||||
|    - name: v1alpha1 | ||||
|      served: true | ||||
|      storage: true | ||||
|      schema: | ||||
|        openAPIV3Schema: | ||||
|          type: object | ||||
|          properties: | ||||
|            spec: | ||||
|              type: object | ||||
|              properties: | ||||
|                roi: | ||||
|                  type: object | ||||
|                  description: Region of interest for this camera | ||||
|                  properties: | ||||
|                    threshold: | ||||
|                      type: integer | ||||
|                      description: Percentage of pixels changed within ROI to | ||||
|                        consider whole frame to have motion detected. | ||||
|                        Defaults to 5. | ||||
|                    enabled: | ||||
|                      type: boolean | ||||
|                      description: Whether motion detection is enabled for this | ||||
|                        camera. Defaults to false. | ||||
|                    left: | ||||
|                      type: integer | ||||
|                      description: Left boundary of ROI as | ||||
|                        percentage of the width of a frame. | ||||
|                        By default 0. | ||||
|                    right: | ||||
|                      type: integer | ||||
|                      description: Right boundary of ROI as | ||||
|                        percentage of the width of a frame. | ||||
|                        By default 100. | ||||
|                    top: | ||||
|                      type: integer | ||||
|                      description: Top boundary of ROI as | ||||
|                        percentage of the height of a frame | ||||
|                        By deafault 0. | ||||
|                    bottom: | ||||
|                      type: integer | ||||
|                      description: Bottom boundary of ROI as | ||||
|                        percentage of the height of a frame. | ||||
|                        By default 100. | ||||
|                secretRef: | ||||
|                  type: string | ||||
|                  description: Secret that contains authentication credentials | ||||
|                target: | ||||
|                  type: string | ||||
|                  description: URL of the video feed stream | ||||
|                replicas: | ||||
|                  type: integer | ||||
|                  minimum: 1 | ||||
|                  maximum: 2 | ||||
|                  description: For highly available deployment set this to 2 or | ||||
|                    higher. Make sure you also run Mongo and Minio in HA | ||||
|                    configurations | ||||
|              required: ["target"] | ||||
|          required: ["spec"] | ||||
|   group: k-space.ee | ||||
|   names: | ||||
|     plural: cams | ||||
|     singular: cam | ||||
|     kind: Camera | ||||
|     shortNames: | ||||
|       - cam | ||||
|   scope: Namespaced | ||||
|   versions: | ||||
|     - name: v1alpha1 | ||||
|       served: true | ||||
|       storage: true | ||||
|       schema: | ||||
|         openAPIV3Schema: | ||||
|           type: object | ||||
|           properties: | ||||
|             spec: | ||||
|               type: object | ||||
|               properties: | ||||
|                 roi: | ||||
|                   type: object | ||||
|                   description: Region of interest for this camera | ||||
|                   properties: | ||||
|                     threshold: | ||||
|                       type: integer | ||||
|                       description: Percentage of pixels changed within ROI to | ||||
|                         consider whole frame to have motion detected. | ||||
|                         Defaults to 5. | ||||
|                     enabled: | ||||
|                       type: boolean | ||||
|                       description: Whether motion detection is enabled for this | ||||
|                         camera. Defaults to false. | ||||
|                     left: | ||||
|                       type: integer | ||||
|                       description: Left boundary of ROI as | ||||
|                         percentage of the width of a frame. | ||||
|                         By default 0. | ||||
|                     right: | ||||
|                       type: integer | ||||
|                       description: Right boundary of ROI as | ||||
|                         percentage of the width of a frame. | ||||
|                         By default 100. | ||||
|                     top: | ||||
|                       type: integer | ||||
|                       description: Top boundary of ROI as | ||||
|                         percentage of the height of a frame | ||||
|                         By deafault 0. | ||||
|                     bottom: | ||||
|                       type: integer | ||||
|                       description: Bottom boundary of ROI as | ||||
|                         percentage of the height of a frame. | ||||
|                         By default 100. | ||||
|                 secretRef: | ||||
|                   type: string | ||||
|                   description: Secret that contains authentication credentials | ||||
|                 target: | ||||
|                   type: string | ||||
|                   description: URL of the video feed stream | ||||
|                 replicas: | ||||
|                   type: integer | ||||
|                   minimum: 1 | ||||
|                   maximum: 2 | ||||
|                   description: For highly available deployment set this to 2 or | ||||
|                     higher. Make sure you also run Mongo and Minio in HA | ||||
|                     configurations | ||||
|               required: ["target"] | ||||
|           required: ["spec"] | ||||
| --- | ||||
| apiVersion: codemowers.io/v1alpha1 | ||||
| kind: ClusterOperator | ||||
| @@ -481,9 +489,9 @@ spec: | ||||
|           app.kubernetes.io/name: foobar | ||||
|           component: camdetect | ||||
|         ports: | ||||
|         - protocol: TCP | ||||
|           port: 80 | ||||
|           targetPort: 5000 | ||||
|           - protocol: TCP | ||||
|             port: 80 | ||||
|             targetPort: 5000 | ||||
|   deployments: | ||||
|     - apiVersion: apps/v1 | ||||
|       kind: Deployment | ||||
| @@ -522,14 +530,14 @@ spec: | ||||
|                   periodSeconds: 180 | ||||
|                   timeoutSeconds: 60 | ||||
|                 ports: | ||||
|                 - containerPort: 5000 | ||||
|                   name: "http" | ||||
|                   - containerPort: 5000 | ||||
|                     name: "http" | ||||
|                 resources: | ||||
|                   requests: | ||||
|                     memory: "64Mi" | ||||
|                     cpu: "200m" | ||||
|                   limits: | ||||
|                     memory: "128Mi" | ||||
|                     memory: "256Mi" | ||||
|                     cpu: "1" | ||||
|                 securityContext: | ||||
|                   readOnlyRootFilesystem: true | ||||
| @@ -580,13 +588,13 @@ spec: | ||||
|  | ||||
|             # Make sure camera deployments are spread over workers | ||||
|             topologySpreadConstraints: | ||||
|             - maxSkew: 1 | ||||
|               topologyKey: kubernetes.io/hostname | ||||
|               whenUnsatisfiable: DoNotSchedule | ||||
|               labelSelector: | ||||
|                 matchLabels: | ||||
|                   app.kubernetes.io/name: foobar | ||||
|                   component: camdetect | ||||
|               - maxSkew: 1 | ||||
|                 topologyKey: kubernetes.io/hostname | ||||
|                 whenUnsatisfiable: DoNotSchedule | ||||
|                 labelSelector: | ||||
|                   matchLabels: | ||||
|                     app.kubernetes.io/name: foobar | ||||
|                     component: camdetect | ||||
| --- | ||||
| apiVersion: monitoring.coreos.com/v1 | ||||
| kind: PodMonitor | ||||
| @@ -595,44 +603,48 @@ metadata: | ||||
| spec: | ||||
|   selector: {} | ||||
|   podMetricsEndpoints: | ||||
|   - port: http | ||||
|     - port: http | ||||
|   podTargetLabels: | ||||
|     - app.kubernetes.io/name | ||||
| --- | ||||
| apiVersion: monitoring.coreos.com/v1 | ||||
| kind: PrometheusRule | ||||
| metadata: | ||||
|   name: cameras | ||||
| spec: | ||||
|     groups: | ||||
|   groups: | ||||
|     - name: cameras | ||||
|       rules: | ||||
|       - alert: CameraLost | ||||
|         expr: rate(camdetect_rx_frames_total[2m]) < 1 | ||||
|         for: 2m | ||||
|         labels: | ||||
|           severity: warning | ||||
|         annotations: | ||||
|           summary: Camera feed stopped | ||||
|       - alert: CameraServerRoomMotion | ||||
|         expr: camdetect_event_active {app="camdetect-server-room"} > 0 | ||||
|         for: 1m | ||||
|         labels: | ||||
|           severity: warning | ||||
|         annotations: | ||||
|           summary: Motion was detected in server room | ||||
|       - alert: CameraSlowUploads | ||||
|         expr: rate(camdetect_upload_dropped_frames_total[2m]) > 1 | ||||
|         for: 5m | ||||
|         labels: | ||||
|           severity: warning | ||||
|         annotations: | ||||
|           summary: Motion detect snapshots are piling up and not getting uploaded to S3 | ||||
|       - alert: CameraSlowProcessing | ||||
|         expr: rate(camdetect_download_dropped_frames_total[2m]) > 1 | ||||
|         for: 5m | ||||
|         labels: | ||||
|           severity: warning | ||||
|         annotations: | ||||
|           summary: Motion detection processing pipeline is not keeping up with incoming frames | ||||
|         - alert: CameraLost | ||||
|           expr: rate(camdetect_rx_frames_total[2m]) < 1 | ||||
|           for: 2m | ||||
|           labels: | ||||
|             severity: warning | ||||
|           annotations: | ||||
|             summary: Camera feed stopped | ||||
|         - alert: CameraServerRoomMotion | ||||
|           expr: camdetect_event_active {app="camdetect-server-room"} > 0 | ||||
|           for: 1m | ||||
|           labels: | ||||
|             severity: warning | ||||
|           annotations: | ||||
|             summary: Motion was detected in server room | ||||
|         - alert: CameraSlowUploads | ||||
|           expr: rate(camdetect_upload_dropped_frames_total[2m]) > 1 | ||||
|           for: 5m | ||||
|           labels: | ||||
|             severity: warning | ||||
|           annotations: | ||||
|             summary: Motion detect snapshots are piling up and | ||||
|               not getting uploaded to S3 | ||||
|         - alert: CameraSlowProcessing | ||||
|           expr: rate(camdetect_download_dropped_frames_total[2m]) > 1 | ||||
|           for: 5m | ||||
|           labels: | ||||
|             severity: warning | ||||
|           annotations: | ||||
|             summary: Motion detection processing pipeline is not keeping up | ||||
|               with incoming frames | ||||
| --- | ||||
| apiVersion: k-space.ee/v1alpha1 | ||||
| kind: Camera | ||||
|   | ||||
		Reference in New Issue
	
	Block a user