Files
ever-gauzy/.deploy/k8s/k8s-manifest.prod.yaml
T
samuel mbabhazi 8fe77c6c88 Feat/redis flexible configuration (#9187)
* feat(config): add individual Redis connection environment variables

- Add REDIS_HOST, REDIS_PORT, REDIS_USER, REDIS_PASSWORD to all env files
- Support flexible Redis configuration alongside REDIS_URL
- Allow connection via individual parameters or single URL

* feat(docker): add Redis env vars to Dockerfiles

- Add REDIS_ENABLED, REDIS_HOST, REDIS_PORT, REDIS_USER, REDIS_PASSWORD as build args and env vars
- Update API, MCP, and MCP-Auth Dockerfiles
- Enable flexible Redis configuration in containerized deployments

* feat(k8s): add Redis env vars to Kubernetes manifests

- Add REDIS_ENABLED, REDIS_HOST, REDIS_PORT, REDIS_USER, REDIS_PASSWORD to all k8s deployments
- Update manifests for prod, stage, and demo environments
- Support flexible Redis configuration in Kubernetes (Civo, CW, DO)
- Apply to API, MCP, and MCP-Auth deployments

* feat(deploy): add Redis env vars to Docker Compose templates

- Add REDIS_ENABLED, REDIS_HOST, REDIS_PORT, REDIS_USER, REDIS_PASSWORD to compose templates
- Update templates for Cloudflare and Let's Encrypt deployments
- Apply to prod, stage, and demo environments
- Enable flexible Redis configuration in SSH-based deployments

* feat(ci): add Redis env vars to GitHub workflows

- Add REDIS_ENABLED, REDIS_HOST, REDIS_PORT, REDIS_USER, REDIS_PASSWORD to deployment workflows
- Update workflows for Civo, CW, and DigitalOcean deployments
- Apply to API, MCP, and MCP-Auth deployment pipelines
- Support flexible Redis configuration in CI/CD

* feat(do): add Redis env vars to DigitalOcean App Platform config

- Add REDIS_ENABLED, REDIS_HOST, REDIS_PORT, REDIS_USER, REDIS_PASSWORD to app.yaml
- Enable flexible Redis configuration for DO App Platform deployments

* add redis_tls
2025-11-03 16:36:56 +01:00

379 lines
15 KiB
YAML

---
kind: Service
apiVersion: v1
metadata:
name: gauzy-prod-web-lb
spec:
type: ClusterIP
selector:
app: gauzy-prod-webapp
ports:
- name: http
protocol: TCP
port: 80
targetPort: 4200
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: gauzy-prod-web-ingress
annotations:
nginx.ingress.kubernetes.io/force-ssl-redirect: 'true'
spec:
ingressClassName: nginx
rules:
- host: app.gauzy.co
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: gauzy-prod-web-lb
port:
number: 80
tls:
- hosts:
- app.gauzy.co
secretName: app.gauzy.co-tls
---
kind: Service
apiVersion: v1
metadata:
name: gauzy-prod-api-lb
spec:
type: ClusterIP
selector:
app: gauzy-prod-api
ports:
- name: http
protocol: TCP
port: 80
targetPort: 3000
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: gauzy-prod-api-ingress
annotations:
nginx.ingress.kubernetes.io/force-ssl-redirect: 'true'
spec:
ingressClassName: nginx
rules:
- host: api.gauzy.co
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: gauzy-prod-api-lb
port:
number: 80
tls:
- hosts:
- api.gauzy.co
secretName: api.gauzy.co-tls
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: gauzy-prod-api
spec:
replicas: 6
selector:
matchLabels:
app: gauzy-prod-api
template:
metadata:
labels:
app: gauzy-prod-api
spec:
containers:
- name: gauzy-prod-api
image: registry.digitalocean.com/ever/gauzy-api:latest
resources:
requests:
memory: '1536Mi'
cpu: '1000m'
limits:
memory: '2048Mi'
env:
- name: API_HOST
value: 0.0.0.0
- name: DEMO
value: 'false'
- name: NODE_ENV
value: 'production'
- name: ADMIN_PASSWORD_RESET
value: 'true'
- name: LOG_LEVEL
value: 'info'
- name: CLOUD_PROVIDER
value: '$CLOUD_PROVIDER'
- name: SENTRY_DSN
value: '$SENTRY_DSN'
- name: SENTRY_HTTP_TRACING_ENABLED
value: '$SENTRY_HTTP_TRACING_ENABLED'
- name: SENTRY_PROFILING_ENABLED
value: '$SENTRY_PROFILING_ENABLED'
- name: SENTRY_POSTGRES_TRACKING_ENABLED
value: '$SENTRY_POSTGRES_TRACKING_ENABLED'
- name: API_BASE_URL
value: 'https://api.gauzy.co'
- name: CLIENT_BASE_URL
value: 'https://app.gauzy.co'
- name: DB_URI
value: '$DB_URI'
- name: DB_HOST
value: '$DB_HOST'
- name: DB_SSL_MODE
value: '$DB_SSL_MODE'
- name: DB_CA_CERT
value: '$DB_CA_CERT'
- name: DB_USER
value: '$DB_USER'
- name: DB_PASS
value: '$DB_PASS'
- name: DB_TYPE
value: '$DB_TYPE'
- name: DB_NAME
value: '$DB_NAME'
- name: DB_PORT
value: '$DB_PORT'
- name: DB_POOL_SIZE
value: '$DB_POOL_SIZE'
- name: DB_POOL_SIZE_KNEX
value: '$DB_POOL_SIZE_KNEX'
- name: REDIS_ENABLED
value: '$REDIS_ENABLED'
- name: REDIS_URL
value: '$REDIS_URL'
- name: REDIS_HOST
value: '$REDIS_HOST'
- name: REDIS_PASSWORD
value: '$REDIS_PASSWORD'
- name: REDIS_PORT
value: '$REDIS_PORT'
- name: REDIS_USER
value: '$REDIS_USER'
- name: REDIS_TLS
value: '$REDIS_TLS'
- name: AWS_ACCESS_KEY_ID
value: '$AWS_ACCESS_KEY_ID'
- name: AWS_SECRET_ACCESS_KEY
value: '$AWS_SECRET_ACCESS_KEY'
- name: AWS_REGION
value: '$AWS_REGION'
- name: AWS_S3_BUCKET
value: '$AWS_S3_BUCKET'
- name: WASABI_ACCESS_KEY_ID
value: '$WASABI_ACCESS_KEY_ID'
- name: WASABI_SECRET_ACCESS_KEY
value: '$WASABI_SECRET_ACCESS_KEY'
- name: WASABI_REGION
value: '$WASABI_REGION'
- name: WASABI_SERVICE_URL
value: '$WASABI_SERVICE_URL'
- name: WASABI_S3_BUCKET
value: '$WASABI_S3_BUCKET'
- name: WASABI_S3_FORCE_PATH_STYLE
value: '$WASABI_S3_FORCE_PATH_STYLE'
- name: DIGITALOCEAN_ACCESS_KEY_ID
value: '$DIGITALOCEAN_ACCESS_KEY_ID'
- name: DIGITALOCEAN_SECRET_ACCESS_KEY
value: '$DIGITALOCEAN_SECRET_ACCESS_KEY'
- name: DIGITALOCEAN_REGION
value: '$DIGITALOCEAN_REGION'
- name: DIGITALOCEAN_SERVICE_URL
value: '$DIGITALOCEAN_SERVICE_URL'
- name: DIGITALOCEAN_CDN_URL
value: '$DIGITALOCEAN_CDN_URL'
- name: DIGITALOCEAN_S3_BUCKET
value: '$DIGITALOCEAN_S3_BUCKET'
- name: DIGITALOCEAN_S3_FORCE_PATH_STYLE
value: '$DIGITALOCEAN_S3_FORCE_PATH_STYLE'
- name: EXPRESS_SESSION_SECRET
value: '$EXPRESS_SESSION_SECRET'
- name: JWT_SECRET
value: '$JWT_SECRET'
- name: JWT_REFRESH_TOKEN_SECRET
value: '$JWT_REFRESH_TOKEN_SECRET'
- name: JWT_REFRESH_TOKEN_EXPIRATION_TIME
value: '$JWT_REFRESH_TOKEN_EXPIRATION_TIME'
- name: CLOUDINARY_API_KEY
value: '$CLOUDINARY_API_KEY'
- name: CLOUDINARY_API_SECRET
value: '$CLOUDINARY_API_SECRET'
- name: CLOUDINARY_CLOUD_NAME
value: '$CLOUDINARY_CLOUD_NAME'
- name: DEFAULT_CURRENCY
value: 'USD'
- name: MAIL_FROM_ADDRESS
value: '$MAIL_FROM_ADDRESS'
- name: MAIL_HOST
value: '$MAIL_HOST'
- name: MAIL_PORT
value: '$MAIL_PORT'
- name: MAIL_USERNAME
value: '$MAIL_USERNAME'
- name: MAIL_PASSWORD
value: '$MAIL_PASSWORD'
- name: ALLOW_SUPER_ADMIN_ROLE
value: '$ALLOW_SUPER_ADMIN_ROLE'
- name: GOOGLE_CLIENT_ID
value: '$GOOGLE_CLIENT_ID'
- name: GOOGLE_CLIENT_SECRET
value: '$GOOGLE_CLIENT_SECRET'
- name: GOOGLE_CALLBACK_URL
value: '$GOOGLE_CALLBACK_URL'
- name: FACEBOOK_CLIENT_ID
value: '$FACEBOOK_CLIENT_ID'
- name: FACEBOOK_CLIENT_SECRET
value: '$FACEBOOK_CLIENT_SECRET'
- name: FACEBOOK_GRAPH_VERSION
value: '$FACEBOOK_GRAPH_VERSION'
- name: FACEBOOK_CALLBACK_URL
value: '$FACEBOOK_CALLBACK_URL'
- name: INTEGRATED_USER_DEFAULT_PASS
value: '$INTEGRATED_USER_DEFAULT_PASS'
- name: UPWORK_REDIRECT_URL
value: '$UPWORK_REDIRECT_URL'
- name: FILE_PROVIDER
value: '$FILE_PROVIDER'
- name: GAUZY_AI_GRAPHQL_ENDPOINT
value: '$GAUZY_AI_GRAPHQL_ENDPOINT'
- name: GAUZY_AI_REST_ENDPOINT
value: '$GAUZY_AI_REST_ENDPOINT'
- name: UNLEASH_APP_NAME
value: '$UNLEASH_APP_NAME'
- name: UNLEASH_API_URL
value: '$UNLEASH_API_URL'
- name: UNLEASH_INSTANCE_ID
value: '$UNLEASH_INSTANCE_ID'
- name: UNLEASH_REFRESH_INTERVAL
value: '$UNLEASH_REFRESH_INTERVAL'
- name: UNLEASH_METRICS_INTERVAL
value: '$UNLEASH_METRICS_INTERVAL'
- name: UNLEASH_API_KEY
value: '$UNLEASH_API_KEY'
- name: JITSU_SERVER_URL
value: '$JITSU_SERVER_URL'
- name: JITSU_SERVER_WRITE_KEY
value: '$JITSU_SERVER_WRITE_KEY'
- name: OTEL_ENABLED
value: '$OTEL_ENABLED'
- name: OTEL_PROVIDER
value: '$OTEL_PROVIDER'
- name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
value: '$OTEL_EXPORTER_OTLP_TRACES_ENDPOINT'
- name: OTEL_EXPORTER_OTLP_HEADERS
value: '$OTEL_EXPORTER_OTLP_HEADERS'
- name: GAUZY_GITHUB_CLIENT_ID
value: '$GAUZY_GITHUB_CLIENT_ID'
- name: GAUZY_GITHUB_CLIENT_SECRET
value: '$GAUZY_GITHUB_CLIENT_SECRET'
- name: GAUZY_GITHUB_WEBHOOK_URL
value: '$GAUZY_GITHUB_WEBHOOK_URL'
- name: GAUZY_GITHUB_WEBHOOK_SECRET
value: '$GAUZY_GITHUB_WEBHOOK_SECRET'
- name: GAUZY_GITHUB_APP_PRIVATE_KEY
value: '$GAUZY_GITHUB_APP_PRIVATE_KEY'
- name: GAUZY_GITHUB_APP_ID
value: '$GAUZY_GITHUB_APP_ID'
- name: GAUZY_GITHUB_APP_NAME
value: '$GAUZY_GITHUB_APP_NAME'
- name: GAUZY_GITHUB_POST_INSTALL_URL
value: '$GAUZY_GITHUB_POST_INSTALL_URL'
- name: GAUZY_GITHUB_OAUTH_CLIENT_ID
value: '$GAUZY_GITHUB_OAUTH_CLIENT_ID'
- name: GAUZY_GITHUB_OAUTH_CLIENT_SECRET
value: '$GAUZY_GITHUB_OAUTH_CLIENT_SECRET'
- name: GAUZY_GITHUB_OAUTH_CALLBACK_URL
value: '$GAUZY_GITHUB_OAUTH_CALLBACK_URL'
- name: MAGIC_CODE_EXPIRATION_TIME
value: '$MAGIC_CODE_EXPIRATION_TIME'
- name: APP_NAME
value: '$APP_NAME'
- name: APP_LOGO
value: '$APP_LOGO'
- name: APP_SIGNATURE
value: '$APP_SIGNATURE'
- name: APP_LINK
value: '$APP_LINK'
- name: APP_EMAIL_CONFIRMATION_URL
value: '$APP_EMAIL_CONFIRMATION_URL'
- name: APP_MAGIC_SIGN_URL
value: '$APP_MAGIC_SIGN_URL'
- name: COMPANY_LINK
value: '$COMPANY_LINK'
- name: COMPANY_NAME
value: '$COMPANY_NAME'
- name: FEATURE_OPEN_STATS
value: '$FEATURE_OPEN_STATS'
ports:
- containerPort: 3000
protocol: TCP
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: gauzy-prod-webapp
spec:
replicas: 3
selector:
matchLabels:
app: gauzy-prod-webapp
template:
metadata:
labels:
app: gauzy-prod-webapp
spec:
containers:
- name: gauzy-prod-webapp
image: registry.digitalocean.com/ever/gauzy-webapp:latest
env:
- name: DEMO
value: 'false'
- name: API_BASE_URL
value: 'https://api.gauzy.co'
- name: CLIENT_BASE_URL
value: 'https://app.gauzy.co'
- name: SENTRY_DSN
value: 'https://7cd381188b6f446ca0e69185227b9031@o51327.ingest.sentry.io/4397292'
- name: CHATWOOT_SDK_TOKEN
value: 'fPgSSzSQoAWRuDqYyNXmpGLM'
- name: CLOUDINARY_API_KEY
value: '256868982483961'
- name: CLOUDINARY_CLOUD_NAME
value: 'dv6ezkfxg'
- name: GOOGLE_MAPS_API_KEY
value: 'AIzaSyCJmnKzgTSq5Pc93HXar5bZrdmANTwtSIo'
- name: GOOGLE_PLACE_AUTOCOMPLETE
value: 'true'
- name: DEFAULT_LATITUDE
value: '42.6459136'
- name: DEFAULT_LONGITUDE
value: '23.3332736'
- name: DEFAULT_CURRENCY
value: 'USD'
- name: GAUZY_GITHUB_CLIENT_ID
value: '$GAUZY_GITHUB_CLIENT_ID'
- name: GAUZY_GITHUB_APP_NAME
value: '$GAUZY_GITHUB_APP_NAME'
- name: GAUZY_GITHUB_REDIRECT_URL
value: '$GAUZY_GITHUB_REDIRECT_URL'
- name: GAUZY_GITHUB_POST_INSTALL_URL
value: '$GAUZY_GITHUB_POST_INSTALL_URL'
- name: GAUZY_GITHUB_APP_ID
value: '$GAUZY_GITHUB_APP_ID'
- name: JITSU_BROWSER_URL
value: '$JITSU_BROWSER_URL'
- name: JITSU_BROWSER_WRITE_KEY
value: '$JITSU_BROWSER_WRITE_KEY'
ports:
- containerPort: 4200
protocol: TCP