apiVersion: v1 kind: Service metadata: name: wifi-densepose-service namespace: wifi-densepose labels: app: wifi-densepose component: api annotations: prometheus.io/scrape: "true" prometheus.io/port: "8080" prometheus.io/path: "/metrics" spec: type: ClusterIP ports: - port: 8000 targetPort: 8000 protocol: TCP name: http - port: 8080 targetPort: 8080 protocol: TCP name: metrics selector: app: wifi-densepose component: api sessionAffinity: None --- apiVersion: v1 kind: Service metadata: name: postgres-service namespace: wifi-densepose labels: app: wifi-densepose component: postgres spec: type: ClusterIP ports: - port: 5432 targetPort: 5432 protocol: TCP name: postgres selector: app: wifi-densepose component: postgres sessionAffinity: None --- apiVersion: v1 kind: Service metadata: name: redis-service namespace: wifi-densepose labels: app: wifi-densepose component: redis spec: type: ClusterIP ports: - port: 6379 targetPort: 6379 protocol: TCP name: redis selector: app: wifi-densepose component: redis sessionAffinity: None --- apiVersion: v1 kind: Service metadata: name: nginx-service namespace: wifi-densepose labels: app: wifi-densepose component: nginx spec: type: LoadBalancer ports: - port: 80 targetPort: 80 protocol: TCP name: http - port: 443 targetPort: 443 protocol: TCP name: https selector: app: wifi-densepose component: nginx sessionAffinity: None loadBalancerSourceRanges: - 0.0.0.0/0 --- # Headless service for StatefulSet (if needed for database clustering) apiVersion: v1 kind: Service metadata: name: postgres-headless namespace: wifi-densepose labels: app: wifi-densepose component: postgres spec: type: ClusterIP clusterIP: None ports: - port: 5432 targetPort: 5432 protocol: TCP name: postgres selector: app: wifi-densepose component: postgres --- # Internal service for monitoring apiVersion: v1 kind: Service metadata: name: wifi-densepose-internal namespace: wifi-densepose labels: app: wifi-densepose component: internal spec: type: ClusterIP ports: - port: 8080 targetPort: 8080 protocol: TCP name: metrics - port: 8000 targetPort: 8000 protocol: TCP name: health selector: app: wifi-densepose component: api sessionAffinity: None --- # Service for WebSocket connections apiVersion: v1 kind: Service metadata: name: wifi-densepose-websocket namespace: wifi-densepose labels: app: wifi-densepose component: websocket annotations: service.beta.kubernetes.io/aws-load-balancer-backend-protocol: "tcp" service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "3600" spec: type: LoadBalancer ports: - port: 8000 targetPort: 8000 protocol: TCP name: websocket selector: app: wifi-densepose component: api sessionAffinity: ClientIP sessionAffinityConfig: clientIP: timeoutSeconds: 3600 --- # Service Monitor for Prometheus (if using Prometheus Operator) apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: wifi-densepose-monitor namespace: wifi-densepose labels: app: wifi-densepose component: monitoring spec: selector: matchLabels: app: wifi-densepose component: api endpoints: - port: metrics interval: 30s path: /metrics scheme: http - port: http interval: 60s path: /health scheme: http namespaceSelector: matchNames: - wifi-densepose --- # Pod Monitor for additional pod-level metrics apiVersion: monitoring.coreos.com/v1 kind: PodMonitor metadata: name: wifi-densepose-pod-monitor namespace: wifi-densepose labels: app: wifi-densepose component: monitoring spec: selector: matchLabels: app: wifi-densepose podMetricsEndpoints: - port: metrics interval: 30s path: /metrics - port: http interval: 60s path: /api/v1/status namespaceSelector: matchNames: - wifi-densepose