Add the FastAPI app, PostgreSQL migrations, Docker/Helm packaging, API contracts, docs, client examples, and the unit/integration/compatibility test suite for local client and tooling labs without a real vCenter.
6.7 KiB
Language / Язык: English | Русский
Kubernetes / Helm
Разверните опубликованный образ runtime из Docker Hub с помощью чарта
helm/vmware-api-simulator.
Образ: inecs/vmware-api-simulator
Требования
- Kubernetes 1.27+ (или сопоставимая версия)
- Helm 3.14+
- Ingress NGINX (или другой IngressClass с поддержкой HTTP-01)
- cert-manager, установленный на весь кластер
Пример установки cert-manager:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.17.2/cert-manager.yaml
Быстрая установка (Hub-релиз + Ingress + Let's Encrypt)
Из git checkout этого репозитория:
helm upgrade --install vmware-sim ./helm/vmware-api-simulator \
-n vmware-sim --create-namespace \
-f ./helm/vmware-api-simulator/values-ingress-example.yaml \
--set certManager.email=you@example.com \
--set ingress.hosts[0].host=vmware-sim.example.com \
--set ingress.tls[0].hosts[0]=vmware-sim.example.com \
--set secret.ticketSigningKey="$(openssl rand -hex 32)" \
--set postgresql.auth.password="$(openssl rand -hex 16)"
Что это делает:
- Скачивает
inecs/vmware-api-simulator:0.1.0(см.image.tagв примерном файле). - Устанавливает встроенный PostgreSQL 17 (
postgres:17.5-bookworm, как и в Compose). - Выполняет миграции схемы в init-контейнере (идемпотентно).
- Загружает лабораторный профиль
small(seed.enabled=true). - Создаёт ресурсы
ClusterIssuer:letsencrypt-prodletsencrypt-staging
- Создаёт Ingress с
cert-manager.io/cluster-issuer: letsencrypt-prodи TLS-секретомvmware-api-simulator-tls.
DNS для vmware-sim.example.com должен указывать на ваш Ingress-контроллер.
Затем:
kubectl -n vmware-sim get certificate,ingress,pods
# дождитесь Certificate READY=True
curl -sS https://vmware-sim.example.com/health/ready
open https://vmware-sim.example.com/
Seeded-логин по умолчанию: administrator@vsphere.local / VMware1!.
Сначала staging (рекомендуется)
Проверьте HTTP-01, не расходуя лимиты запросов production:
helm upgrade --install vmware-sim ./helm/vmware-api-simulator \
-n vmware-sim --create-namespace \
-f ./helm/vmware-api-simulator/values-ingress-example.yaml \
--set certManager.email=you@example.com \
--set certManager.useStaging=true \
--set ingress.hosts[0].host=vmware-sim.example.com \
--set ingress.tls[0].hosts[0]=vmware-sim.example.com \
--set secret.ticketSigningKey="$(openssl rand -hex 32)"
Браузеры не будут доверять staging CA — используйте curl -k во время
тестирования. Переключите certManager.useStaging=false и пересоздайте
Certificate/TLS-секрет для production.
Минимальная установка (ClusterIP + port-forward)
helm upgrade --install vmware-sim ./helm/vmware-api-simulator \
-n vmware-sim --create-namespace \
--set secret.ticketSigningKey="$(openssl rand -hex 32)" \
--set seed.enabled=true
kubectl -n vmware-sim port-forward svc/vmware-sim-vmware-api-simulator 8080:8080
Откройте http://127.0.0.1:8080/. Service выставляет внутренний порт
приложения (8080, см. Порты) — чарт не запускает TLS-gateway
nginx, используемый Compose; в production выставляйте TLS перед сервисом
через Ingress, либо обращайтесь к обычному HTTP-сервису для локального
тестирования.
Внешний PostgreSQL
helm upgrade --install vmware-sim ./helm/vmware-api-simulator \
-n vmware-sim --create-namespace \
--set postgresql.enabled=false \
--set secret.ticketSigningKey="$(openssl rand -hex 32)" \
--set secret.databaseUrl='postgresql://user:pass@pg.example.com:5432/vmware_simulator'
Либо используйте secret.existingSecret с ключами DATABASE_URL и
TICKET_SIGNING_KEY.
Как работает выпуск TLS
Когда certManager.enabled=true и certManager.createClusterIssuer=true,
чарт создаёт объекты ACME ClusterIssuer, которые решают HTTP-01 через ваш
Ingress-класс. Шаблон Ingress добавляет:
metadata:
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
tls:
- secretName: vmware-api-simulator-tls
hosts: [vmware-sim.example.com]
Затем cert-manager создаёт Certificate, проходит HTTP-01 и сохраняет пару
ключей Let's Encrypt в этом TLS-секрете. Чарт не устанавливает
cert-manager или Ingress-контроллер — только issuer'ы и связку с Ingress.
Если ClusterIssuer'ы уже существуют на уровне кластера, задайте:
certManager:
enabled: true
createClusterIssuer: false
issuerName: your-existing-issuer
Эксплуатация
# логи
kubectl -n vmware-sim logs -l app.kubernetes.io/instance=vmware-sim -c simulator -f
# reseed
kubectl -n vmware-sim exec deploy/vmware-sim-vmware-api-simulator -- \
python -m app.simulation.seed_cli
# SEED_VSPHERE_PROFILE через: kubectl set env ... либо --set seed.profile=demo-cluster и upgrade
# удаление
helm -n vmware-sim uninstall vmware-sim
Справочник по values
См. helm/vmware-api-simulator/values.yaml
и README чарта. Связанная
документация:
- Быстрый старт — пути через Compose
- Эксплуатация — публикация в Docker Hub / release compose
- Безопасность — лабораторные учётные данные и граница доверия
- Порты — внутренний
8080в сравнении с опубликованными портами gateway