Page cover

Server and Network Configuration Management

1.1 Overview

This section outlines CapsureLabs approach to server and network configuration management, focusing on containerization and orchestration using Docker and Kubernetes. The documentation provides examples for setting up, deploying, and managing applications in a cloud environment.


1.2 Docker Configuration for Application Containerization

1.2.1 Dockerfile Setup

# Base image with Node.js (replace with Python, Java, etc., based on app requirements)
FROM node:14

# Set working directory
WORKDIR /app

# Copy dependencies and install
COPY package.json .
RUN npm install

# Copy application code
COPY . .

# Expose application port
EXPOSE 3000

# Command to run the app
CMD ["npm", "start"]

1.2.2 Docker Compose for Multi-Container Applications

version: '3'
services:
  frontend:
    build:
      context: ./frontend
    ports:
      - "3000:3000"
    depends_on:
      - backend

  backend:
    build:
      context: ./backend
    ports:
      - "5000:5000"
    depends_on:
      - db

  db:
    image: postgres:13
    environment:
      POSTGRES_USER: capsure
      POSTGRES_PASSWORD: password
    volumes:
      - db-data:/var/lib/postgresql/data

volumes:
  db-data:

1.3 Kubernetes for Orchestration and Scaling

1.3.1 Kubernetes Deployment Configuration

apiVersion: apps/v1
kind: Deployment
metadata:
  name: backend-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: backend
  template:
    metadata:
      labels:
        app: backend
    spec:
      containers:
        - name: backend
          image: capsurelabs/backend:latest
          ports:
            - containerPort: 5000
          env:
            - name: DATABASE_URL
              value: "postgres://capsure:password@db-service:5432/db"

1.3.2 Kubernetes Service Configuration

apiVersion: v1
kind: Service
metadata:
  name: backend-service
spec:
  selector:
    app: backend
  ports:
    - protocol: TCP
      port: 80
      targetPort: 5000
  type: ClusterIP

1.4 Load Balancing and Autoscaling

Kubernetes load balancer distributes traffic across multiple replicas of each microservice.

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: backend-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: backend-deployment
  minReplicas: 3
  maxReplicas: 10
  targetCPUUtilizationPercentage: 70

1.5 CI/CD Pipeline Integration

Build Docker images and push to a container registry (e.g., DockerHub or AWS ECR).


1.6 Monitoring and Logging

1.6.1 Prometheus Configuration for Kubernetes

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: backend-monitor
  labels:
    app: backend
spec:
  selector:
    matchLabels:
      app: backend
  endpoints:
    - port: http
      interval: 30s
      path: /metrics

Last updated