u2usvc

General

kompose (convert docker compose to k8s manifests)

  • you can specify custom options using labels (e.g. if you want to use StatefulSet instead of a Deployment)
version: "3.9"

services:
  app:
    image: your-spring-boot-app:latest
    container_name: springboot-app
    ports:
      - "8080:8080"
    environment:
      SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/mydb
      SPRING_DATASOURCE_USERNAME: postgres
      SPRING_DATASOURCE_PASSWORD: postgres
      SPRING_REDIS_HOST: redis
      SPRING_REDIS_PORT: 6379
    depends_on:
      - db
      - redis

  db:
    image: postgres:15
    labels:
      kompose.service.type: nodeport
      kompose.controller.type: statefulset
    container_name: postgres-db
    environment:
      POSTGRES_DB: mydb
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
    ports:
      - "5432:5432"
    volumes:
      - db-data:/var/lib/postgresql/data

  redis:
    image: redis:7
    container_name: redis
    ports:
      - "6379:6379"

volumes:
  db-data:
kompose convert -f compose.yaml

ls -la
# app-deployment.yaml                 db-service.yaml
# app-service.yaml                    redis-deployment.yaml
# compose.yaml                        redis-service.yaml
# db-data-persistentvolumeclaim.yaml  db-deployment.yaml

PersistentVolumeClaim is generated if volumes are attached.

minikube

Basic

# start multinode KVM cluster
minikube start --cpus 2 --memory 8000 --nodes 3 --kvm-network='k8s_lab' --cni=cilium

# delete existing cluster (e.g. to change options)
minikube delete

# add nodes to an existing cluster (minikube node add)

# list logs
minikube logs