Skip to content
Closed
2 changes: 1 addition & 1 deletion charts/plane-enterprise/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ description: Meet Plane. An Enterprise software development tool to manage issue

type: application

version: 3.0.0
version: 3.0.1
appVersion: "3.0.0"

home: https://plane.so/
Expand Down
4 changes: 4 additions & 0 deletions charts/plane-enterprise/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -498,6 +498,10 @@ securityContext:
| env.web_url | | | (optional) Custom Web URL for the application. If not set, it will be auto-generated based on the license domain and SSL settings |
| env.webhook_allowed_ips | | | (optional) Comma-separated list of IPs/CIDRs that webhooks are allowed to target. Leave empty to allow all. |
| env.webhook_allowed_hosts | | | (optional) Comma-separated list of hostnames that webhooks are allowed to target. Leave empty to allow all. |
| env.gunicorn_max_requests | 1000 | | Maximum requests a gunicorn worker handles before restart. Set to `0` to disable rotation. |
| env.gunicorn_max_requests_jitter | 150 | | Random jitter added to `GUNICORN_MAX_REQUESTS` to stagger worker restarts across replicas. Set to `0` when rotation is disabled. |
| env.celery_task_publish_retry | true | | When `true` (rendered as `1`), Celery retries task publishing on transient AMQP failures instead of silently dropping tasks. Prevents stuck export/import records caused by brief broker reconnect windows. |
| env.celery_broker_pool_limit | 10 | | Bounds the Celery broker connection pool. Prevents stale connections from accumulating without bound; tune relative to worker concurrency. |
| services.api.assign_cluster_ip | false | | Set it to `true` if you want to assign `ClusterIP` to the service |
| services.api.nodeSelector | {} | | This key allows you to set the node selector for the deployment of `api`. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. |
| services.api.tolerations | [] | | This key allows you to set the tolerations for the deployment of `api`. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. |
Expand Down
20 changes: 20 additions & 0 deletions charts/plane-enterprise/questions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -550,6 +550,26 @@ questions:
label: "Webhook Allowed Hosts"
type: string
default: ""
- variable: env.gunicorn_max_requests
label: "Gunicorn Max Requests"
description: "Maximum number of requests a gunicorn worker handles before being restarted. Set to 0 to disable rotation."
type: int
default: 1000
- variable: env.gunicorn_max_requests_jitter
label: "Gunicorn Max Requests Jitter"
description: "Random jitter added to GUNICORN_MAX_REQUESTS to stagger worker restarts. Set to 0 when rotation is disabled."
type: int
default: 150
- variable: env.celery_task_publish_retry
label: "Celery Task Publish Retry"
description: "Retry task publishing on transient AMQP failures instead of silently dropping tasks."
type: boolean
default: true
- variable: env.celery_broker_pool_limit
label: "Celery Broker Pool Limit"
description: "Maximum number of connections in the Celery broker connection pool. Limits stale connection accumulation."
type: int
default: 10
- variable: services.external_api.enabled
label: "Enable External API"
type: boolean
Expand Down
4 changes: 4 additions & 0 deletions charts/plane-enterprise/templates/config-secrets/app-env.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,10 @@ data:
DEBUG: "0"
DOCKERIZED: "1"
GUNICORN_WORKERS: "1"
GUNICORN_MAX_REQUESTS: {{ .Values.env.gunicorn_max_requests | quote }}
GUNICORN_MAX_REQUESTS_JITTER: {{ .Values.env.gunicorn_max_requests_jitter | quote }}
CELERY_TASK_PUBLISH_RETRY: {{ .Values.env.celery_task_publish_retry | ternary "1" "0" | quote }}
CELERY_BROKER_POOL_LIMIT: {{ .Values.env.celery_broker_pool_limit | quote }}
{{- if .Values.env.web_url}}
WEB_URL: {{ .Values.env.web_url | default "" | quote }}
{{- else if or .Values.ssl.tls_secret_name (and .Values.ssl.createIssuer .Values.ssl.generateCerts) }}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ data:

FEATURE_FLAG_SERVER_BASE_URL: "http://{{ .Release.Name }}-monitor.{{ .Release.Namespace }}.svc.{{ .Values.env.default_cluster_domain | default "cluster.local" }}:8080"
PI_BASE_PATH: "/pi"
PLANE_INTERNAL_API_HOST: "http://{{ .Release.Name }}-api.{{ .Release.Namespace }}.svc.{{ .Values.env.default_cluster_domain | default "cluster.local" }}:8000"


{{- if eq .Values.env.pi_envs.cors_allowed_origins "*"}}
Expand Down
10 changes: 10 additions & 0 deletions charts/plane-enterprise/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -598,6 +598,16 @@ env:
secret_key: "60gp0byfz2dvffa45cxl20p1scy9xbpf6d8c5y0geejgkyp1b5"
api_key_rate_limit: "60/minute"

# Gunicorn worker rotation settings.
gunicorn_max_requests: 1000
gunicorn_max_requests_jitter: 150

# Celery broker settings.
# celery_task_publish_retry: retry task publishing on transient AMQP failures instead of silently dropping.
# celery_broker_pool_limit: bound the connection pool to prevent stale connections accumulating.
celery_task_publish_retry: true
celery_broker_pool_limit: 10

sentry_dsn: ''
sentry_environment: ''

Expand Down