Initial commit: VMware vSphere API simulator scaffold.
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.
This commit is contained in:
@@ -0,0 +1,180 @@
|
||||
## Default values for vmware-api-simulator.
|
||||
## Image: https://hub.docker.com/r/inecs/vmware-api-simulator
|
||||
|
||||
replicaCount: 1
|
||||
|
||||
image:
|
||||
repository: inecs/vmware-api-simulator
|
||||
pullPolicy: IfNotPresent
|
||||
# Overrides the image tag whose default is the chart appVersion.
|
||||
tag: ""
|
||||
|
||||
imagePullSecrets: []
|
||||
nameOverride: ""
|
||||
fullnameOverride: ""
|
||||
|
||||
serviceAccount:
|
||||
create: true
|
||||
annotations: {}
|
||||
name: ""
|
||||
|
||||
podAnnotations: {}
|
||||
podLabels: {}
|
||||
|
||||
podSecurityContext:
|
||||
fsGroup: 10001
|
||||
|
||||
securityContext:
|
||||
runAsNonRoot: true
|
||||
runAsUser: 10001
|
||||
runAsGroup: 10001
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop: ["ALL"]
|
||||
readOnlyRootFilesystem: true
|
||||
|
||||
service:
|
||||
type: ClusterIP
|
||||
# Internal app port. Publish VMware service ports via Ingress/Service separately.
|
||||
port: 8080
|
||||
|
||||
## Application environment (non-secret).
|
||||
config:
|
||||
logLevel: INFO
|
||||
enablePveStub: "false"
|
||||
# Optional cold-start contract path (vSphere majors use evidence + UI hot-swap).
|
||||
contractSnapshot: ""
|
||||
contractFallback: error
|
||||
taskWorkerConcurrency: 2
|
||||
taskLeaseSeconds: "30"
|
||||
simulationTimeScale: "10"
|
||||
requestIdHeader: X-Request-ID
|
||||
compatibilityEvidence: /app/evidence/vsphere-8.0.2.json
|
||||
|
||||
## Secrets. Prefer existingSecret in production.
|
||||
secret:
|
||||
# Create a Secret from the values below when existingSecret is empty.
|
||||
create: true
|
||||
existingSecret: ""
|
||||
# Keys expected in an existing secret (when existingSecret is set):
|
||||
# DATABASE_URL, TICKET_SIGNING_KEY
|
||||
ticketSigningKey: "change-me-to-a-long-random-secret"
|
||||
# Used only when postgresql.enabled=true and databaseUrl is empty.
|
||||
# The chart builds postgresql://USER:PASSWORD@HOST:5432/DB
|
||||
databaseUrl: ""
|
||||
|
||||
## Bundled PostgreSQL (official image — same major as docker-compose.release.yml).
|
||||
postgresql:
|
||||
enabled: true
|
||||
image:
|
||||
repository: postgres
|
||||
tag: "17.5-bookworm"
|
||||
pullPolicy: IfNotPresent
|
||||
auth:
|
||||
username: vmware
|
||||
password: vmware
|
||||
database: vmware_simulator
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 8Gi
|
||||
storageClass: ""
|
||||
resources:
|
||||
requests:
|
||||
cpu: 50m
|
||||
memory: 128Mi
|
||||
limits:
|
||||
memory: 512Mi
|
||||
|
||||
## External database when postgresql.enabled=false.
|
||||
## Provide either full URL (secret.databaseUrl / existingSecret) or discrete fields.
|
||||
externalDatabase:
|
||||
host: ""
|
||||
port: 5432
|
||||
user: vmware
|
||||
password: ""
|
||||
database: vmware_simulator
|
||||
# Optional existing secret with key database-password (or set password above).
|
||||
existingSecret: ""
|
||||
existingSecretPasswordKey: database-password
|
||||
|
||||
## Database migrations.
|
||||
## Default: idempotent initContainer on the Deployment (recommended).
|
||||
## Set asJob=true to run a standalone Job instead.
|
||||
migrate:
|
||||
enabled: true
|
||||
asJob: false
|
||||
backoffLimit: 20
|
||||
activeDeadlineSeconds: 600
|
||||
resources: {}
|
||||
|
||||
## Optional post-install seed Job (lab data).
|
||||
seed:
|
||||
enabled: false
|
||||
profile: small
|
||||
backoffLimit: 3
|
||||
resources: {}
|
||||
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: "1"
|
||||
memory: 1Gi
|
||||
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /health/live
|
||||
port: http
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 10
|
||||
timeoutSeconds: 3
|
||||
failureThreshold: 3
|
||||
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /health/ready
|
||||
port: http
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 10
|
||||
timeoutSeconds: 3
|
||||
failureThreshold: 8
|
||||
|
||||
nodeSelector: {}
|
||||
tolerations: []
|
||||
affinity: {}
|
||||
|
||||
## Ingress + TLS via cert-manager (Let's Encrypt).
|
||||
ingress:
|
||||
enabled: false
|
||||
className: nginx
|
||||
annotations: {}
|
||||
# Extra annotations merged after cert-manager ones when certManager.enabled.
|
||||
hosts:
|
||||
- host: vmware-sim.example.com
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
tls:
|
||||
- secretName: vmware-api-simulator-tls
|
||||
hosts:
|
||||
- vmware-sim.example.com
|
||||
|
||||
## cert-manager ClusterIssuers for Let's Encrypt.
|
||||
## Requires cert-manager already installed in the cluster.
|
||||
certManager:
|
||||
enabled: false
|
||||
# Create ClusterIssuer resources from this chart.
|
||||
createClusterIssuer: true
|
||||
email: admin@example.com
|
||||
# Production issuer (used by Ingress by default).
|
||||
issuerName: letsencrypt-prod
|
||||
server: https://acme-v02.api.letsencrypt.org/directory
|
||||
# Staging issuer (optional; useful for dry-runs).
|
||||
createStagingIssuer: true
|
||||
stagingIssuerName: letsencrypt-staging
|
||||
stagingServer: https://acme-staging-v02.api.letsencrypt.org/directory
|
||||
# Which issuer the Ingress annotation should reference.
|
||||
useStaging: false
|
||||
# ACME HTTP-01 solver ingress class (usually same as ingress.className).
|
||||
solverIngressClassName: ""
|
||||
Reference in New Issue
Block a user