# ops-deployment This repository contains declarative Kubernetes configurations (deployments, services, persistent volumes) for all application services. ## Structure Each service directory contains: - `deployment.yaml` - Pod specifications, container images, environment variables, volume mounts - `service.yaml` - Service exposure (ClusterIP, NodePort) - Additional resources as needed (PVCs, ConfigMaps, etc.) ## Secrets Management Secrets are managed directly in Kubernetes using `kubectl` or sealed-secrets: - Mounted as volumes at `/etc/secrets` in containers - Referenced via `secretName` in deployment manifests ## Persistent Storage Services requiring data persistence (MySQL, RabbitMQ) use PersistentVolumeClaims: ## Example Service ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: backend-push-notifications namespace: app-notifications spec: replicas: 1 template: spec: containers: - name: backend-push-notifications image: ghcr.io/user/service:2 ports: - containerPort: 9000 volumeMounts: - name: secrets mountPath: /etc/secrets readOnly: true volumes: - name: secrets secret: secretName: backend-push-notifications --- apiVersion: v1 kind: Service metadata: name: backend-push-notifications spec: selector: app: backend-push-notifications ports: - port: 9000 targetPort: 9000 nodePort: 30904 type: NodePort ``` ## Monitoring Services expose Prometheus metrics endpoints where applicable, on port 9000 and exposed via NodePort.