Skip to content

sergeyantropoff/simulators

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Language / Язык: English | Русский

API simulators lab (self-contained)

Four published simulators and one PostgreSQL. No source checkouts required. Run locally with Docker Compose, or on Kubernetes with the Helm chart.

Layout

simulators/
  Makefile
  docker-compose.yml
  docker/
    postgres-init/01-simulators.sql
    tls/server.{crt,key}         # shared lab TLS for Compose gateways
    ovirt/ovirt-engine.conf
    vmware/vmware-ports.conf
    openstack/openstack-ports.conf
  charts/api-simulators-lab/     # Helm: all four simulators + Ingress

Images: inecs/proxmox-api-simulator, inecs/ovirt-api-simulator, inecs/vmware-api-simulator, inecs/openstack-api-simulator.


Docker Compose

Postgres data lives in the Compose volume postgres-data.

cd /Users/inecs/Разработка/simulators
make help
make up          # pull → migrate → apps → seed; prints URLs
make urls        # print Compose endpoints again
make logs        # or: make logs SERVICE=proxmox
make restart
make down        # stop containers, keep DB volume
make clean       # stop + remove volumes, leftovers, project networks
make shell       # or: make shell SERVICE=ovirt
make push        # git add . → multiline commit (Ctrl-D) → push origin

make up runs migrate/seed via docker compose run --rm (profile init), so those containers do not stay in Exited state.

Equivalent Compose:

docker compose pull
docker compose up -d

The first start creates databases via docker/postgres-init (only on an empty postgres-data volume). Seed jobs run once after each simulator becomes healthy.

Pin an image tag:

IMAGE_TAG=0.1.0 docker compose up -d
# or: IMAGE_TAG=0.1.0 make up

Compose endpoints

Simulator URL
Proxmox http://localhost:8006/
oVirt Engine https://localhost:7443/
oVirt Web UI http://localhost:7500/
VMware (HTTPS) https://localhost:8443/
VMware (HTTP) http://localhost:8081/
OpenStack Keystone http://localhost:9500/
OpenStack Nova http://localhost:8774/
OpenStack HTTPS https://localhost:9443/
PostgreSQL 127.0.0.1:5432 (user lab / lab)

Reset the Compose database

make clean
make up
# or: docker compose down -v && docker compose up -d

Kubernetes (Helm)

Chart: charts/api-simulators-lab.

Configure before deploy: charts/api-simulators-lab/values.yaml

Key Purpose
namespace Target namespace (simulators by default; namespaceCreate: true)
ingresses Hosts, TLS secrets, annotations (one Ingress per entry)
certManager Let's Encrypt via cert-manager (letsencrypt-prod)
imageTag / secrets / postgres.persistence Images, keys, PVC

Default Ingress hosts (override for real DNS before Let's Encrypt):

Simulator Host
Proxmox https://proxmox.lab.local/
oVirt https://ovirt.lab.local/
VMware https://vmware.lab.local/
OpenStack https://openstack.lab.local/
make helm up       # warns → confirm [y/N] → helm upgrade --install
make helm down     # uninstall release
make helm-urls     # print Ingress hosts from values
make helm-template
make helm-lint

Skip the confirmation prompt (CI): make helm-up HELM_YES=1

Override namespace without editing values: HELM_NAMESPACE=other make helm-up

Equivalent Helm:

helm upgrade --install simulators charts/api-simulators-lab \
  --namespace simulators --create-namespace --wait

How the chart starts

  1. Namespace — created from values.namespace when namespaceCreate: true.
  2. PostgreSQL — StatefulSet + init SQL for four simulator databases.
  3. Simulators — Deployments with init containers:
    • wait-postgresmigrate (idempotent; no-op if schema is current).
  4. Seed — post-install / post-upgrade Jobs per simulator.
    • Each Job waits until the app is ready, then seeds.
    • seed.skipIfSql skips when the DB already has lab data (no wipe/re-seed).
  5. Ingress — TLS via cert-manager annotation cert-manager.io/cluster-issuer.
    • Set certManager.createClusterIssuer: true and certManager.email to create ClusterIssuers from the chart; otherwise an existing letsencrypt-prod is used.
    • Let's Encrypt HTTP-01 needs public DNS pointing at the Ingress controller (not *.lab.local).

Git

origin pushes to both remotes (same pattern as other simulators):

  • git@github.com:sergeyantropoff/simulators.git
  • ssh://git@git.antropoff.ru:30022/DevOpsTools/Simulators.git
make push   # stage all → multiline commit message (end with Ctrl-D) → push origin

Same UX as proxmox_api_simulator.


Laboratory defaults only — do not expose this stack to the public Internet without rotating secrets (ticketSigningKey, DB passwords, Ingress hosts).

About

Self-contained lab of Proxmox, oVirt, VMware, and OpenStack API simulators - Docker Compose or Helm, one Postgres, shared Makefile.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors