Seatmap Helm chart documentation
Overview
The Seatmap Helm chart deploys a complete Seatmap.pro application stack including Editor, Booking, and converter services along with the required dependencies like PostgreSQL and Redis.
- Chart Version: 1.1.2
- Application Version: 1.40.0
Prerequisites
- Kubernetes 1.19+
- Helm 3.2.0+
- PV provisioner support in the underlying infrastructure
- LoadBalancer support (for ingress)
Dependencies
The chart includes the following Bitnami dependencies:
- PostgreSQL (version 12.x.x)
- Redis (version 17.x.x)
Installation
Installation from GitLab registry
- Log in to the GitLab registry:
helm registry login registry.gitlab.com \
--username ${REGISTRY_USERNAME} \
--password ${REGISTRY_PASSWORD}
- Install or upgrade the chart:
helm upgrade --install seatmap oci://registry.gitlab.com/seatmap.pro/helm-charts/stable/seatmap \
--version 1.1.2 \
--create-namespace \
--namespace seatmap \
--set global.s3.bucket=${S3_BUCKET} \
--set global.s3.region=${S3_REGION} \
--set global.s3.endpoint=${S3_ENDPOINT} \
--set global.mail.host=${MAIL_HOST} \
--set global.mail.fromAddress=${MAIL_FROM} \
--set global.mail.port=${MAIL_PORT} \
--set global.mail.socket.port=${MAIL_SOCKET_PORT} \
--set-string secrets.s3.accessKey=${S3_ACCESS_KEY} \
--set-string secrets.s3.secretKey=${S3_SECRET_KEY} \
--set-string secrets.mail.username=${MAIL_USERNAME} \
--set-string secrets.mail.password=${MAIL_PASSWORD} \
--set-string secrets.google.apiKey=${GOOGLE_API_KEY} \
--set imageCredentials.registry=${REGISTRY} \
--set-string imageCredentials.username=${REGISTRY_USERNAME} \
--set-string imageCredentials.password=${REGISTRY_PASSWORD}
Configuration
Global parameters
Host Configuration
global:
hosts:
editor: editor.test-5.seatmap.dev
booking: booking.test-5.seatmap.dev
Image Registry
imageCredentials:
registry: registry.gitlab.com
username: seatmap
password: <password>
Resource configurations
global:
resources:
default:
requests:
cpu: "500m"
memory: "2Gi"
limits:
cpu: "1000m"
memory: "3Gi"
frontend:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "200m"
memory: "256Mi"
Ingress configuration
The chart provides ingress configurations for both Editor and Booking services with separate hostnames.
Global ingress settings
global:
ingress:
className: public
proxyBodySize: "50m"
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
hosts:
editor: editor.test-5.seatmap.dev
booking: booking.test-5.seatmap.dev
Editor Ingress
The Editor service ingress is configured to handle both web and API traffic on its dedicated domain.
editor:
ingress:
enabled: true
annotations: {} # Additional service-specific annotations
apiPaths:
- /api
- /swagger-ui
- /preview
- /ws
- /webjars
- /v3
Features:
- Host:
editor.{domain}
(e.g., editor.test-5.seatmap.dev) - TLS enabled with hostname-based certificate
- Default web path (/) routes to web port
- API paths route to API port
- WebSocket support enabled
- Configurable max body size
Booking Ingress
The Booking service ingress is configured on its own dedicated domain.
booking:
ingress:
enabled: true
annotations: {} # Additional service-specific annotations
apiPaths:
- /api
- /swagger-ui
- /webjars
- /v3
- /csrf
- /oauth2
- /login
- /.well-known
- /actuator
Features:
- Host:
booking.{domain}
(e.g., booking.test-5.seatmap.dev) - TLS enabled with hostname-based certificate
- Default web path (/) routes to web port
- API paths route to API port
- WebSocket support enabled
- Shared proxy body size configuration with Editor
Common ingress features
Both ingresses include:
- NGINX annotations for body size limits
- WebSocket support
- TLS configuration
- Implementation-specific path types for root paths
- Prefix path types for API endpoints
Component configurations
PostgreSQL
- Authentication managed through
postgresql-secret
- Default database and username:
seatmap
- Includes
uuid-ossp
extension initialization
postgresql:
enabled: true
auth:
existingSecret: "postgresql-secret"
username: seatmap
database: seatmap
Redis
- Standalone architecture
- Authentication enabled through
redis-secret
- Memory configuration:
- Max memory: 512MB
- Policy: allkeys-lru
redis:
enabled: true
architecture: standalone
auth:
enabled: true
existingSecret: "redis-secret"
master:
persistence:
enabled: true
size: 8Gi
Service components
Editor service
editor:
image:
repository: registry.gitlab.com/seatmap.pro/seatmap/editor-service
tag: 1.40.0
frontend:
image:
repository: registry.gitlab.com/seatmap.pro/seatmap/editor-client
tag: 1.40.0
Key configurations:
- HikariCP connection pool settings
- Token expiration settings
- SSO integration support
- API paths for ingress
Booking service
booking:
image:
repository: registry.gitlab.com/seatmap.pro/seatmap/booking-service
tag: 1.40.0
frontend:
image:
repository: registry.gitlab.com/seatmap.pro/seatmap/booking-client
tag: 1.40.0
Features:
- JPA/Hibernate configuration
- Connection pool settings
- OAuth2 support
- Actuator endpoints
Converter service
converter:
image:
repository: registry.gitlab.com/seatmap.pro/converter
tag: 1.40.0-f8ac8b4c
Limitations:
- Max content length: 32MB
- Max image dimensions: 15000x15000 pixels
- S3 storage integration
External service configuration
S3 storage
global:
s3:
bucket: "seatmap-storage"
region: "us-east-1"
endpoint: "https://s3.amazonaws.com"
Mail server
global:
mail:
host: "smtp.gmail.com"
port: 587
socket:
port: 465
fromAddress: "seatmap@seatmap.pro"
Security considerations
Secrets management
The following secrets must be provided:
- PostgreSQL credentials
- Redis password
- S3 access credentials
- Mail server credentials
- Google API key
Network security
- TLS termination through ingress
- cert-manager integration for automated certificate management
- Separate API and web ports for services
Scaling
Horizontal pod autoscaling
HPA is configurable for all services with default settings:
global:
hpa:
enabled: false
targetCPUUtilizationPercentage: 80
targetMemoryUtilizationPercentage: 80
Service-specific HPA configurations:
- Editor: 2-6 replicas
- Booking: 2-6 replicas
- Converter: 1-4 replicas
Monitoring and metrics
- Actuator endpoints enabled for Spring Boot services
- Redis metrics disabled by default
- Custom metrics endpoints configured for editor and booking services
Troubleshooting
Common issues
-
Image pull errors
- Verify registry credentials
- Check image tags exist
-
Database connection issues
- Verify PostgreSQL secret exists
- Check connection pool settings
-
Storage issues
- Validate S3 credentials and bucket accessibility
- Check storage quotas and limits
Debugging
-
Access logs through:
kubectl logs -f deployment/seatmap-<component>
-
Check service status:
kubectl get pods -l app.kubernetes.io/instance=seatmap
Configuration variables reference
Global variables
Parameter | Description | Default Value |
---|---|---|
global.hostname |
Main hostname for the application | seat-113.seatmap.dev |
global.ports.editor.api |
Editor API port | 8080 |
global.ports.editor.web |
Editor web port | 80 |
global.ports.booking.api |
Booking API port | 9090 |
global.ports.booking.web |
Booking web port | 80 |
global.ports.converter.api |
Converter API port | 8080 |
global.resources.default.requests.cpu |
Default CPU request | 500m |
global.resources.default.requests.memory |
Default memory request | 2Gi |
global.resources.default.limits.cpu |
Default CPU limit | 1000m |
global.resources.default.limits.memory |
Default memory limit | 3Gi |
global.resources.frontend.requests.cpu |
Frontend CPU request | 100m |
global.resources.frontend.requests.memory |
Frontend memory request | 128Mi |
global.resources.frontend.limits.cpu |
Frontend CPU limit | 200m |
global.resources.frontend.limits.memory |
Frontend memory limit | 256Mi |
PostgreSQL variables
Parameter | Description | Default Value |
---|---|---|
postgresql.enabled |
Enable PostgreSQL deployment | true |
postgresql.auth.existingSecret |
Secret name for auth | postgresql-secret |
postgresql.auth.username |
PostgreSQL username | seatmap |
postgresql.auth.database |
PostgreSQL database name | seatmap |
postgresql.service.port |
PostgreSQL service port | 5432 |
Redis variables
Parameter | Description | Default Value |
---|---|---|
redis.enabled |
Enable Redis deployment | true |
redis.architecture |
Redis architecture type | standalone |
redis.auth.enabled |
Enable Redis authentication | true |
redis.auth.existingSecret |
Secret name for auth | redis-secret |
redis.master.persistence.enabled |
Enable persistence | true |
redis.master.persistence.size |
Persistence size | 8Gi |
redis.port |
Redis service port | 6379 |
Editor service variables
Parameter | Description | Default Value |
---|---|---|
editor.image.repository |
Editor service image repository | registry.gitlab.com/seatmap.pro/seatmap/editor-service |
editor.image.tag |
Editor service image tag | 1.40.0 |
editor.frontend.image.repository |
Editor frontend image repository | registry.gitlab.com/seatmap.pro/seatmap/editor-client |
editor.frontend.image.tag |
Editor frontend image tag | 1.40.0 |
editor.config.initial.delay |
Initial delay | 5000 |
editor.config.spring.datasource.hikari.connectionTimeout |
Database connection timeout | 60000 |
editor.config.spring.datasource.hikari.maximumPoolSize |
Database connection pool size | 20 |
editor.hpa.minReplicas |
Minimum replicas for HPA | 2 |
editor.hpa.maxReplicas |
Maximum replicas for HPA | 6 |
Booking service variables
Parameter | Description | Default Value |
---|---|---|
booking.image.repository |
Booking service image repository | registry.gitlab.com/seatmap.pro/seatmap/booking-service |
booking.image.tag |
Booking service image tag | 1.40.0 |
booking.frontend.image.repository |
Booking frontend image repository | registry.gitlab.com/seatmap.pro/seatmap/booking-client |
booking.frontend.image.tag |
Booking frontend image tag | 1.40.0 |
booking.config.spring.profiles.include |
Spring active profiles | prod |
booking.config.spring.jpa.generateDdl |
Enable DDL generation | true |
booking.config.spring.jpa.hibernate.ddlAuto |
Hibernate DDL auto | update |
booking.hpa.minReplicas |
Minimum replicas for HPA | 2 |
booking.hpa.maxReplicas |
Maximum replicas for HPA | 6 |
Converter service variables
Parameter | Description | Default Value |
---|---|---|
converter.image.repository |
Converter service image repository | registry.gitlab.com/seatmap.pro/converter |
converter.image.tag |
Converter service image tag | 1.40.0-f8ac8b4c |
converter.config.max.contentLength |
Maximum content length | 33554432 |
converter.config.max.image.width |
Maximum image width | 15000 |
converter.config.max.image.height |
Maximum image height | 15000 |
converter.hpa.minReplicas |
Minimum replicas for HPA | 1 |
converter.hpa.maxReplicas |
Maximum replicas for HPA | 4 |
External service variables
Parameter | Description | Default Value |
---|---|---|
secrets.s3.accessKey |
S3 access key | secrets.s3.accessKey |
secrets.s3.secretKey |
S3 secret key | secrets.s3.secretKey |
secrets.mail.username |
Mail server username | secrets.mail.username |
secrets.mail.password |
Mail server password | secrets.mail.password |
secrets.google.apiKey |
Google API key | secrets.google.apiKey |
global.s3.bucket |
S3 bucket name | seatmap-storage |
global.s3.region |
S3 region | us-east-1 |
global.s3.endpoint |
S3 endpoint | https://s3.amazonaws.com |
global.mail.host |
Mail server host | smtp.gmail.com |
global.mail.port |
Mail server port | 587 |
global.mail.socket.port |
Mail socket port | 465 |
global.mail.fromAddress |
Mail from address | seatmap@seatmap.pro |
Support and maintenance
- Regular updates through version tags
- Configuration changes through Helm upgrade
- Persistent storage management for PostgreSQL and Redis