kubectl
and helm
on the client system that you will use to install our Helm chartsstable
. Always specify the latest version number (e.g., 1.8.0
). Using stable
can lead to unexpected issues.longhorn
storage class. This also sets up the Ingress routes for you using nginx
ingress class. To customize these settings, see the Custom ingress routes.plane
, the default app name from plane-app
, the default storage class from longhorn
, and the default ingress class from nginx
to whatever you would like to.values.yaml
file and and edit using any editor like Vim or Nano.planeVersion: v1.10.0
license.licenseDomain: <The domain you have specified to host Plane>
license.licenseServer: https://prime.plane.so
ingress.enabled: <true | false>
ingress.ingressClass: <nginx or any other ingress class configured in your cluster>
env.storageClass: <longhorn or any other storage class configured in your cluster>
values.yaml
file, run the following command to deploy Plane:Setting | Default | Required | Description |
---|---|---|---|
planeVersion | v1.10.0 | Yes | Specifies the version of Plane to be deployed. Copy this from prime.plane.so. |
license.licenseServer | https://prime.plane.so | Yes | Sets the value of the licenseServer that gets you your license and validates it periodically. Don’t change this. |
license.licenseDomain | ’plane.example.com’ | Yes | The fully-qualified domain name (FQDN) in the format sudomain.domain.tld or domain.tld that the license is bound to. It is also attached to your ingress host to access Plane. |
Setting | Default | Required | Description |
---|---|---|---|
services.postgres.local_setup | true | Plane uses postgres as the primary database to store all the transactional data. This database can be hosted within kubernetes as part of helm chart deployment or can be used as hosted service remotely (e.g. aws rds or similar services). Set this to true when you choose to setup stateful deployment of postgres . Mark it as false when using a remotely hosted database | |
services.postgres.image | postgres:15.7-alpine | Using this key, user must provide the docker image name to setup the stateful deployment of postgres . (must be set when services.postgres.local_setup=true ) | |
services.postgres.servicePort | 5432 | This key sets the default port number to be used while setting up stateful deployment of postgres . | |
services.postgres.cliConnectPort | If you intend to access the hosted stateful deployment of postgres using any of the client tools (e.g Postico), this key helps you expose the port. The mentioned port must not be occupied by any other applicaiton | ||
services.postgres.volumeSize | 2Gi | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | |
env.pgdb_username | plane | Database credentials are requried to access the hosted stateful deployment of postgres . Use this key to set the username for the stateful deployment. | |
env.pgdb_password | plane | Database credentials are requried to access the hosted stateful deployment of postgres . Use this key to set the password for the stateful deployment. | |
env.pgdb_name | plane | Database name to be used while setting up stateful deployment of Postgres | |
services.postgres.assign_cluster_ip | false | Set it to true if you want to assign ClusterIP to the service | |
env.pgdb_remote_url | Users can also decide to use the remote hosted database and link to Plane deployment. Ignoring all the above keys, set services.postgres.local_setup to false and set this key with remote connection url. |
Setting | Default | Required | Description |
---|---|---|---|
services.redis.local_setup | true | Plane uses redis to cache the session authentication and other static data. This database can be hosted within kubernetes as part of helm chart deployment or can be used as hosted service remotely (e.g. aws rds or similar services). Set this to true when you choose to setup stateful deployment of redis . Mark it as false when using a remotely hosted database | |
services.redis.image | valkey/valkey:7.2.5-alpine | Using this key, user must provide the docker image name to setup the stateful deployment of redis . (must be set when services.redis.local_setup=true ) | |
services.redis.servicePort | 6379 | This key sets the default port number to be used while setting up stateful deployment of redis . | |
services.redis.volumeSize | 500Mi | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | |
services.redis.assign_cluster_ip | false | Set it to true if you want to assign ClusterIP to the service | |
env.remote_redis_url | Users can also decide to use the remote hosted database and link to Plane deployment. Ignoring all the above keys, set services.redis.local_setup to false and set this key with remote connection url. |
Setting | Default | Required | Description |
---|---|---|---|
services.rabbitmq.local_setup | true | Plane uses rabbitmq as message queuing system. This can be hosted within kubernetes as part of helm chart deployment or can be used as hosted service remotely (e.g. aws mq or similar services). Set this to true when you choose to setup stateful deployment of rabbitmq . Mark it as false when using a remotely hosted service | |
services.rabbitmq.image | rabbitmq:3.13.6-management-alpine | Using this key, user must provide the docker image name to setup the stateful deployment of rabbitmq . (must be set when services.rabbitmq.local_setup=true ) | |
services.rabbitmq.pullPolicy | IfNotPresent | Using this key, user can set the pull policy for the stateful deployment of rabbitmq . (must be set when services.rabbitmq.local_setup=true ) | |
services.rabbitmq.servicePort | 5672 | This key sets the default port number to be used while setting up stateful deployment of rabbitmq . | |
services.rabbitmq.managementPort | 15672 | This key sets the default management port number to be used while setting up stateful deployment of rabbitmq . | |
services.rabbitmq.volumeSize | 100Mi | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | |
services.rabbitmq.default_user | plane | Credentials are requried to access the hosted stateful deployment of rabbitmq . Use this key to set the username for the stateful deployment. | |
services.rabbitmq.default_password | plane | Credentials are requried to access the hosted stateful deployment of rabbitmq . Use this key to set the password for the stateful deployment. | |
services.rabbitmq.assign_cluster_ip | false | Set it to true if you want to assign ClusterIP to the service | |
services.rabbitmq.external_rabbitmq_url | Users can also decide to use the remote hosted service and link to Plane deployment. Ignoring all the above keys, set services.rabbitmq.local_setup to false and set this key with remote connection url. |
Setting | Default | Required | Description |
---|---|---|---|
services.minio.local_setup | true | Plane uses minio as the default file storage drive. This storage can be hosted within kubernetes as part of helm chart deployment or can be used as hosted service remotely (e.g. aws S3 or similar services). Set this to true when you choose to setup stateful deployment of minio . Mark it as false when using a remotely hosted database | |
services.minio.image | minio/minio:latest | Using this key, user must provide the docker image name to setup the stateful deployment of minio . (must be set when services.minio.local_setup=true ) | |
services.minio.image_mc | minio/mc:latest | Using this key, user must provide the docker image name to setup the job deployment of minio client . (must be set when services.minio.local_setup=true ) | |
services.minio.volumeSize | 3Gi | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | |
services.minio.root_user | admin | Storage credentials are requried to access the hosted stateful deployment of minio . Use this key to set the username for the stateful deployment. | |
services.minio.root_password | password | Storage credentials are requried to access the hosted stateful deployment of minio . Use this key to set the password for the stateful deployment. | |
env.docstore_bucket | uploads | Yes | Storage bucket name is required as part of configuration. This is where files will be uploaded irrespective of if you are using Minio or external S3 (or compatible) storage service |
env.doc_upload_size_limit | 5242880 | Yes | Document Upload Size Limit (default to 5Mb) |
services.minio.assign_cluster_ip | false | Set it to true if you want to assign ClusterIP to the service | |
env.aws_access_key | External S3 (or compatible) storage service provides access key for the application to connect and do the necessary upload or download operations. To be provided when services.minio.local_setup=false | ||
env.aws_secret_access_key | External S3 (or compatible) storage service provides secret access key for the application to connect and do the necessary upload or download operations. To be provided when services.minio.local_setup=false | ||
env.aws_region | External S3 (or compatible) storage service providers creates any buckets in user selected region. This is also shared with the user as region for the application to connect and do the necessary upload or download operations. To be provided when services.minio.local_setup=false | ||
env.aws_s3_endpoint_url | External S3 (or compatible) storage service providers shares a endpoint_url for the integration purpose for the application to connect and do the necessary upload or download operations. To be provided when services.minio.local_setup=false |
Setting | Default | Required | Description |
---|---|---|---|
services.web.replicas | 1 | Yes | Kubernetes helps you with scaling up or down the deployments. You can run 1 or more pods for each deployment. This key helps you set up the number of replicas you want to run for this deployment. It must be >=1 |
services.web.memoryLimit | 1000Mi | Every deployment in Kubernetes can be set to use the maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | |
services.web.cpuLimit | 500m | Every deployment in Kubernetes can be set to use the maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | |
services.web.image | artifacts.plane.so/makeplane/web-commercial | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | |
services.web.assign_cluster_ip | false | Set it to true if you want to assign ClusterIP to the service |
Setting | Default | Required | Description |
---|---|---|---|
services.space.replicas | 1 | Yes | Kubernetes helps you with scaling up or down the deployments. You can run 1 or more pods for each deployment. This key helps you set up the number of replicas you want to run for this deployment. It must be >=1 |
services.space.memoryLimit | 1000Mi | Every deployment in kubernetes can be set to use the maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | |
services.space.cpuLimit | 500m | Every deployment in kubernetes can be set to use the maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | |
services.space.image | artifacts.plane.so/makeplane/space-commercial | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | |
services.space.assign_cluster_ip | false | Set it to true if you want to assign ClusterIP to the service |
Setting | Default | Required | Description |
---|---|---|---|
services.admin.replicas | 1 | Yes | Kubernetes helps you with scaling up or down the deployments. You can run 1 or more pods for each deployment. This key helps you set up the number of replicas you want to run for this deployment. It must be >=1 |
services.admin.memoryLimit | 1000Mi | Every deployment in kubernetes can be set to use the maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | |
services.admin.cpuLimit | 500m | Every deployment in kubernetes can be set to use the maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | |
services.admin.image | artifacts.plane.so/makeplane/admin-commercial | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | |
services.admin.assign_cluster_ip | false | Set it to true if you want to assign ClusterIP to the service |
Setting | Default | Required | Description |
---|---|---|---|
services.live.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be >=1 |
services.live.memoryLimit | 1000Mi | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | |
services.live.cpuLimit | 500m | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | |
services.live.image | artifacts.plane.so/makeplane/live-commercial | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | |
env.live_sentry_dsn | (optional) Live service deployment comes with some of the preconfigured integration. Sentry is one among those. Here user can set the Sentry provided DSN for this integration. | ||
env.live_sentry_environment | (optional) Live service deployment comes with some of the preconfigured integration. Sentry is one among those. Here user can set the Sentry environment name (as configured in Sentry) for this integration. | ||
env.live_sentry_traces_sample_rate | (optional) Live service deployment comes with some of the preconfigured integration. Sentry is one among those. Here user can set the Sentry trace sample rate (as configured in Sentry) for this integration. | ||
services.live.assign_cluster_ip | false | Set it to true if you want to assign ClusterIP to the service |
Setting | Default | Required | Description |
---|---|---|---|
services.monitor.memoryLimit | 1000Mi | Every deployment in kubernetes can be set to use the maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | |
services.monitor.cpuLimit | 500m | Every deployment in kubernetes can be set to use the maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | |
services.monitor.image | artifacts.plane.so/makeplane/monitor-commercial | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | |
services.monitor.volumeSize | 100Mi | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | |
services.monitor.assign_cluster_ip | false | Set it to true if you want to assign ClusterIP to the service |
Setting | Default | Required | Description |
---|---|---|---|
services.api.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you set up the number of replicas you want to run for this deployment. It must be >=1 |
services.api.memoryLimit | 1000Mi | Every deployment in kubernetes can be set to use the maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | |
services.api.cpuLimit | 500m | Every deployment in kubernetes can be set to use the maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | |
services.api.image | artifacts.plane.so/makeplane/backend-commercial | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | |
env.sentry_dsn | (optional) API service deployment comes with some of the preconfigured integration. Sentry is one among those. Here user can set the Sentry-provided DSN for this integration. | ||
env.sentry_environment | (optional) API service deployment comes with some of the preconfigured integration. Sentry is one among those. Here user can set the Sentry environment name (as configured in Sentry) for this integration. | ||
services.api.assign_cluster_ip | false | Set it to true if you want to assign ClusterIP to the service |
Setting | Default | Required | Description |
---|---|---|---|
services.silo.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be >=1 |
services.silo.memoryLimit | 1000Mi | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | |
services.silo.cpuLimit | 500m | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | |
services.silo.image | artifacts.plane.so/makeplane/silo-commercial | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | |
services.silo.pullPolicy | Always | Using this key, user can set the pull policy for the deployment of silo . | |
services.silo.assign_cluster_ip | false | Set it to true if you want to assign ClusterIP to the service | |
services.silo.connectors.slack.enabled | false | Slack Integration | |
services.silo.connectors.slack.client_id | "" | required if services.silo.connectors.slack.enabled is true | Slack Client ID |
services.silo.connectors.slack.client_secret | "" | required if services.silo.connectors.slack.enabled is true | Slack Client Secret |
services.silo.connectors.github.enabled | false | Github App Integration | |
services.silo.connectors.github.client_id | "" | required if services.silo.connectors.github.enabled is true | Github Client ID |
services.silo.connectors.github.client_secret | "" | required if services.silo.connectors.github.enabled is true | Github Client Secret |
services.silo.connectors.github.app_name | "" | required if services.silo.connectors.github.enabled is true | Github App Name |
services.silo.connectors.github.app_id | "" | required if services.silo.connectors.github.enabled is true | Github App ID |
services.silo.connectors.github.private_key | "" | required if services.silo.connectors.github.enabled is true | Github Private Key |
services.silo.connectors.gitlab.enabled | false | Gitlab App Integration | |
services.silo.connectors.gitlab.client_id | "" | required if services.silo.connectors.gitlab.enabled is true | Gitlab Client ID |
services.silo.connectors.gitlab.client_secret | "" | required if services.silo.connectors.gitlab.enabled is true | Gitlab Client Secret |
env.silo_envs.mq_prefetch_count | 10 | Prefetch count for RabbitMQ | |
env.silo_envs.batch_size | 60 | Batch size for Silo | |
env.silo_envs.request_interval | 400 | Request interval for Silo | |
env.silo_envs.sentry_dsn | Sentry DSN | ||
env.silo_envs.sentry_environment | Sentry Environment | ||
env.silo_envs.sentry_traces_sample_rate | Sentry Traces Sample Rate | ||
env.silo_envs.hmac_secret_key | <random-32-bit-string> | HMAC Secret Key |
Setting | Default | Required | Description |
---|---|---|---|
services.worker.replicas | 1 | Yes | Kubernetes helps you with scaling up or down the deployments. You can run 1 or more pods for each deployment. This key helps you set up the number of replicas you want to run for this deployment. It must be >=1 |
services.worker.memoryLimit | 1000Mi | Every deployment in kubernetes can be set to use the maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | |
services.worker.cpuLimit | 500m | Every deployment in kubernetes can be set to use the maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. |
Setting | Default | Required | Description |
---|---|---|---|
services.beatworker.replicas | 1 | Yes | Kubernetes helps you with scaling up or down the deployments. You can run 1 or more pods for each deployment. This key helps you set up the number of replicas you want to run for this deployment. It must be >=1 |
services.beatworker.memoryLimit | 1000Mi | Every deployment in kubernetes can be set to use the maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | |
services.beatworker.cpuLimit | 500m | Every deployment in kubernetes can be set to use the maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. |
Secret Name | Env Var Name | Required | Description | Example Value |
---|---|---|---|---|
rabbitmq_existingSecret | RABBITMQ_DEFAULT_USER | Required if rabbitmq.local_setup=true | The default RabbitMQ user | plane |
RABBITMQ_DEFAULT_PASS | Required if rabbitmq.local_setup=true | The default RabbitMQ password | plane | |
pgdb_existingSecret | POSTGRES_PASSWORD | Required if postgres.local_setup=true | Password for PostgreSQL database | plane |
POSTGRES_DB | Required if postgres.local_setup=true | Name of the PostgreSQL database | plane | |
POSTGRES_USER | Required if postgres.local_setup=true | PostgreSQL user | plane | |
doc_store_existingSecret | USE_MINIO | Yes | Flag to enable MinIO as the storage backend | 1 |
MINIO_ROOT_USER | Yes | MinIO root user | admin | |
MINIO_ROOT_PASSWORD | Yes | MinIO root password | password | |
AWS_ACCESS_KEY_ID | Yes | AWS Access Key ID | your_aws_key | |
AWS_SECRET_ACCESS_KEY | Yes | AWS Secret Access Key | your_aws_secret | |
AWS_S3_BUCKET_NAME | Yes | AWS S3 Bucket Name | your_bucket_name | |
AWS_S3_ENDPOINT_URL | Yes | Endpoint URL for AWS S3 or MinIO | http://plane-minio.plane-ns.svc.cluster.local:9000 | |
AWS_REGION | Optional | AWS region where your S3 bucket is located | your_aws_region | |
FILE_SIZE_LIMIT | Yes | Limit for file uploads in your system | 5MB | |
app_env_existingSecret | SECRET_KEY | Yes | Random secret key | 60gp0byfz2dvffa45cxl20p1scy9xbpf6d8c5y0geejgkyp1b5 |
REDIS_URL | Yes | Redis URL | redis://plane-redis.plane-ns.svc.cluster.local:6379/ | |
DATABASE_URL | Yes | PostgreSQL connection URL | k8s service example: postgresql://plane:plane@plane-pgdb.plane-ns.svc.cluster.local:5432/plane external service example: postgresql://username:password@your-db-host:5432/plane | |
AMQP_URL | Yes | RabbitMQ connection URL | k8s service example: amqp://plane:plane@plane-rabbitmq.plane-ns.svc.cluster.local:5672/ external service example: amqp://username:password@your-rabbitmq-host:5672/ | |
live_env_existingSecret | REDIS_URL | Yes | Redis URL | redis://plane-redis.plane-ns.svc.cluster.local:6379/ |
silo_env_existingSecret | SILO_HMAC_SECRET_KEY | Yes | Silo HMAC secret Key | <random-32-bit-string> |
REDIS_URL | Yes | Redis URL | redis://plane-redis.plane-ns.svc.cluster.local:6379/ | |
DATABASE_URL | Yes | PostgreSQL connection URL | k8s service example: postgresql://plane:plane@plane-pgdb.plane-ns.svc.cluster.local:5432/plane external service example: postgresql://username:password@your-db-host:5432/plane | |
AMQP_URL | Yes | RabbitMQ connection URL | k8s service example: amqp://plane:plane@plane-rabbitmq.plane-ns.svc.cluster.local:5672/ external service example: amqp://username:password@your-rabbitmq-host:5672/ | |
GITHUB_APP_NAME | required if services.silo.connectors.github.enabled is true | GitHub app name | your_github_app_name | |
GITHUB_APP_ID | required if services.silo.connectors.github.enabled is true | GitHub app ID | your_github_app_id | |
GITHUB_CLIENT_ID | required if services.silo.connectors.github.enabled is true | GitHub client ID | your_github_client_id | |
GITHUB_CLIENT_SECRET | required if services.silo.connectors.github.enabled is true | GitHub client secret key | your_github_client_secret_key | |
GITHUB_PRIVATE_KEY | required if services.silo.connectors.github.enabled is true | GitHub private key | your_github_private_key | |
SLACK_CLIENT_ID | required if services.silo.connectors.slack.enabled is true | Slack client ID | your_slack_client_id | |
SLACK_CLIENT_SECRET | required if services.silo.connectors.slack.enabled is true | Slack client secret key | your_slack_client_secret_key | |
GITLAB_CLIENT_ID | required if services.silo.connectors.gitlab.enabled is true | GitLab client ID | your_gitlab_client_id | |
GITLAB_CLIENT_SECRET | required if services.silo.connectors.gitlab.enabled is true | GitLab client secret key | your_gitlab_client_secret_key |
Setting | Default | Required | Description |
---|---|---|---|
ingress.enabled | true | Ingress setup in kubernetes is a common practice to expose the application to the intended audience. Set it to false if you are using an external ingress providers like Cloudflare | |
ingress.minioHost | ’plane-services.minio.example.com’ | Based on the above configuration, if you want to expose the minio web console to a set of users, use this key to set the host mapping or leave it as EMPTY to not expose the interface. | |
ingress.ingressClass | ’nginx’ | Yes | Kubernetes cluster setup comes with various options of ingressClass . Based on your setup, set this value to the right one (eg. nginx, traefik, etc). Leave it to default in case you are using an external ingress provider. |
ingress.ingress_annotations | { "nginx.ingress.kubernetes.io/proxy-body-size": "5m" } | Ingress controllers come with various configuration options which can be passed as annotations. Setting this value lets you change the default value to user required. | |
ssl.createIssuer | false | Kubernets cluster setup supports creating issuer type resource. After deployment, this is the step towards creating secure access to the ingress url. Issuer is required for you to generate SSL certificate. Kubernetes can be configured to use any certificate authority to generate SSL (depending on CertManager configuration). Set it to true to create the issuer. Applicable only when ingress.enabled=true | |
ssl.issuer | http | CertManager configuration allows user to create issuers using http or any of the other DNS Providers like cloudflare , digitalocean , etc. As of now, Plane supports http , cloudflare , digitalocean | |
ssl.token | To create issuers using DNS challenge, set the issuer api token of dns provider like cloudflareor digitalocean`(not required for http) | ||
ssl.server | https://acme-v02.api.letsencrypt.org/directory | Issuer creation configuration needs the certificate generation authority server url. Default URL is the Let's Encrypt server | |
ssl.email | plane@example.com | Certificate generation authority needs a valid email id before generating certificate. Required when ssl.createIssuer=true | |
ssl.generateCerts | false | After creating the issuers, the user can still not create the certificate until sure of the configuration. Setting this to true will try to generate SSL certificate and associate with ingress. Applicable only when ingress.enabled=true and ssl.createIssuer=true | |
ssl.tls_secret_name | If you have a custom TLS secret name, set this to the name of the secret. Applicable only when ingress.enabled=true and ssl.createIssuer=false |
Setting | Default | Required | Description |
---|---|---|---|
env.storageClass | longhorn | Creating the persitant volumes for the stateful deployments needs the storageClass name. Set the correct value as per your kubernetes cluster configuration. | |
env.secret_key | 60gp0byfz2dvffa45cxl20p1scy9xbpf6d8c5y0geejgkyp1b5 | Yes | This must be a random string which is used for hashing/encrypting the sensitive data within the application. Once set, changing this might impact the already hashed/encrypted data |
Host | Path | Service | |
---|---|---|---|
plane.example.com | / | <http://plane-app-web.plane:3000> | |
plane.example.com | /spaces/* | <http://plane-app-space.plane:3000> | |
plane.example.com | /god-mode/* | <http://plane-app-admin.plane:3000> | |
plane.example.com | /live/* | <http://plane-app-live.plane:3000> | |
plane.example.com | /api/* | <http://plane-app-api.plane:8000> | |
plane.example.com | /auth/* | <http://plane-app-api.plane:8000> | |
plane.example.com | /uploads/* | <http://plane-app-minio.plane:9000> | |
plane-minio.example.com | / | <http://plane-app-minio.plane:9090> | |
plane-mq.example.com | / | <http://plane-app-rabbitmq.plane:15672> | (Optional) if using local setup, this will enable management console access |
Install Community Edition
kubectl
and helm
on the client system that you will use to install our Helm chartslonghorn
storage class. This also sets up the ingress routes for you using nginx
ingress class.
Custom ingress routes
below. plane-ce
, the default app name from plane-app
, the default storage class from [postgres, redis, minio].storageClass
, and the default ingress class from ingress.ingressClass
to whatever you would like to.You can also pass other settings referring to Configuration Settings
section.values.yaml
file and and edit using any editor like Vim or Nano.
Available customizations
for more details. values.yaml
file, continue to be on the same Terminal window as on the previous steps, copy the code below, and paste it on your Terminal screen.
Setting | Default | Required | Description |
---|---|---|---|
planeVersion | stable | Yes |
Setting | Default | Required | Description |
---|---|---|---|
postgres.local_setup | true | Plane uses postgres as the primary database to store all the transactional data. This database can be hosted within kubernetes as part of helm chart deployment or can be used as hosted service remotely (e.g. aws rds or similar services). Set this to true when you choose to setup stateful deployment of postgres . Mark it as false when using a remotely hosted database | |
postgres.image | postgres:15.7-alpine | Using this key, user must provide the docker image name to setup the stateful deployment of postgres . (must be set when postgres.local_setup=true ) | |
postgres.pullPolicy | IfNotPresent | Using this key, user can set the pull policy for the stateful deployment of postgres . (must be set when postgres.local_setup=true ) | |
postgres.servicePort | 5432 | This key sets the default port number to be used while setting up stateful deployment of postgres . | |
postgres.volumeSize | 5Gi | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | |
env.pgdb_username | plane | Database credentials are requried to access the hosted stateful deployment of postgres . Use this key to set the username for the stateful deployment. | |
env.pgdb_password | plane | Database credentials are requried to access the hosted stateful deployment of postgres . Use this key to set the password for the stateful deployment. | |
env.pgdb_name | plane | Database name to be used while setting up stateful deployment of Postgres | |
env.pgdb_remote_url | Users can also decide to use the remote hosted database and link to Plane deployment. Ignoring all the above keys, set postgres.local_setup to false and set this key with remote connection url. | ||
postgres.storageClass | <k8s-default-storage-class> | Creating the persitant volumes for the stateful deployments needs the storageClass name. Set the correct value as per your kubernetes cluster configuration. | |
postgres.assign_cluster_ip | false | Set it to true if you want to assign ClusterIP to the service |
Setting | Default | Required | Description |
---|---|---|---|
redis.local_setup | true | Plane uses redis to cache the session authentication and other static data. This database can be hosted within kubernetes as part of helm chart deployment or can be used as hosted service remotely (e.g. aws rds or similar services). Set this to true when you choose to setup stateful deployment of redis . Mark it as false when using a remotely hosted database | |
redis.image | valkey/valkey:7.2.5-alpine | Using this key, user must provide the docker image name to setup the stateful deployment of redis . (must be set when redis.local_setup=true ) | |
redis.pullPolicy | IfNotPresent | Using this key, user can set the pull policy for the stateful deployment of redis . (must be set when redis.local_setup=true ) | |
redis.servicePort | 6379 | This key sets the default port number to be used while setting up stateful deployment of redis . | |
redis.volumeSize | 1Gi | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | |
env.remote_redis_url | Users can also decide to use the remote hosted database and link to Plane deployment. Ignoring all the above keys, set redis.local_setup to false and set this key with remote connection url. | ||
redis.storageClass | <k8s-default-storage-class> | Creating the persitant volumes for the stateful deployments needs the storageClass name. Set the correct value as per your kubernetes cluster configuration. | |
redis.assign_cluster_ip | false | Set it to true if you want to assign ClusterIP to the service |
Setting | Default | Required | Description |
---|---|---|---|
rabbitmq.local_setup | true | Plane uses rabbitmq as message queuing system. This can be hosted within kubernetes as part of helm chart deployment or can be used as hosted service remotely (e.g. aws mq or similar services). Set this to true when you choose to setup stateful deployment of rabbitmq . Mark it as false when using a remotely hosted service | |
rabbitmq.image | rabbitmq:3.13.6-management-alpine | Using this key, user must provide the docker image name to setup the stateful deployment of rabbitmq . (must be set when rabbitmq.local_setup=true ) | |
rabbitmq.pullPolicy | IfNotPresent | Using this key, user can set the pull policy for the stateful deployment of rabbitmq . (must be set when rabbitmq.local_setup=true ) | |
rabbitmq.servicePort | 5672 | This key sets the default port number to be used while setting up stateful deployment of rabbitmq . | |
rabbitmq.managementPort | 15672 | This key sets the default management port number to be used while setting up stateful deployment of rabbitmq . | |
rabbitmq.volumeSize | 100Mi | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | |
rabbitmq.storageClass | <k8s-default-storage-class> | Creating the persitant volumes for the stateful deployments needs the storageClass name. Set the correct value as per your kubernetes cluster configuration. | |
rabbitmq.default_user | plane | Credentials are requried to access the hosted stateful deployment of rabbitmq . Use this key to set the username for the stateful deployment. | |
rabbitmq.default_password | plane | Credentials are requried to access the hosted stateful deployment of rabbitmq . Use this key to set the password for the stateful deployment. | |
rabbitmq.assign_cluster_ip | false | Set it to true if you want to assign ClusterIP to the service | |
rabbitmq.external_rabbitmq_url | Users can also decide to use the remote hosted service and link to Plane deployment. Ignoring all the above keys, set rabbitmq.local_setup to false and set this key with remote connection url. |
Setting | Default | Required | Description |
---|---|---|---|
minio.local_setup | true | Plane uses minio as the default file storage drive. This storage can be hosted within kubernetes as part of helm chart deployment or can be used as hosted service remotely (e.g. aws S3 or similar services). Set this to true when you choose to setup stateful deployment of postgres . Mark it as false when using a remotely hosted database | |
minio.image | minio/minio:latest | Using this key, user must provide the docker image name to setup the stateful deployment of minio . (must be set when minio.local_setup=true ) | |
minio.image_mc | minio/mc:latest | Using this key, user must provide the docker image name to setup the job deployment of minio client . (must be set when services.minio.local_setup=true ) | |
minio.pullPolicy | IfNotPresent | Using this key, user can set the pull policy for the stateful deployment of minio . (must be set when minio.local_setup=true ) | |
minio.volumeSize | 5Gi | While setting up the stateful deployment, while creating the persistant volume, volume allocation size need to be provided. This key helps you set the volume allocation size. Unit of this value must be in Mi (megabyte) or Gi (gigabyte) | |
minio.root_user | admin | Storage credentials are requried to access the hosted stateful deployment of minio . Use this key to set the username for the stateful deployment. | |
minio.root_password | password | Storage credentials are requried to access the hosted stateful deployment of minio . Use this key to set the password for the stateful deployment. | |
minio.env.minio_endpoint_ssl | false | (Optional) Env to enforce HTTPS when connecting to minio uploads bucket | |
env.docstore_bucket | uploads | Yes | Storage bucket name is required as part of configuration. This is where files will be uploaded irrespective of if you are using Minio or external S3 (or compatible) storage service |
env.doc_upload_size_limit | 5242880 | Yes | Document Upload Size Limit (default to 5Mb) |
env.aws_access_key | External S3 (or compatible) storage service provides access key for the application to connect and do the necessary upload/download operations. To be provided when minio.local_setup=false | ||
env.aws_secret_access_key | External S3 (or compatible) storage service provides secret access key for the application to connect and do the necessary upload/download operations. To be provided when minio.local_setup=false | ||
env.aws_region | External S3 (or compatible) storage service providers creates any buckets in user selected region. This is also shared with the user as region for the application to connect and do the necessary upload/download operations. To be provided when minio.local_setup=false | ||
env.aws_s3_endpoint_url | External S3 (or compatible) storage service providers shares a endpoint_url for the integration purpose for the application to connect and do the necessary upload/download operations. To be provided when minio.local_setup=false | ||
minio.storageClass | <k8s-default-storage-class> | Creating the persitant volumes for the stateful deployments needs the storageClass name. Set the correct value as per your kubernetes cluster configuration. | |
minio.assign_cluster_ip | false | Set it to true if you want to assign ClusterIP to the service |
Setting | Default | Required | Description |
---|---|---|---|
web.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be >=1 |
web.memoryLimit | 1000Mi | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | |
web.cpuLimit | 500m | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | |
web.image | artifacts.plane.so/makeplane/plane-frontend | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | |
web.pullPolicy | Always | Using this key, user can set the pull policy for the deployment of web . | |
web.assign_cluster_ip | false | Set it to true if you want to assign ClusterIP to the service |
Setting | Default | Required | Description |
---|---|---|---|
space.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be >=1 |
space.memoryLimit | 1000Mi | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | |
space.cpuLimit | 500m | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | |
space.image | artifacts.plane.so/makeplane/plane-space | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | |
space.pullPolicy | Always | Using this key, user can set the pull policy for the deployment of space . | |
space.assign_cluster_ip | false | Set it to true if you want to assign ClusterIP to the service |
Setting | Default | Required | Description |
---|---|---|---|
admin.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be >=1 |
admin.memoryLimit | 1000Mi | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | |
admin.cpuLimit | 500m | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | |
admin.image | artifacts.plane.so/makeplane/plane-admin | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | |
admin.pullPolicy | Always | Using this key, user can set the pull policy for the deployment of admin . | |
admin.assign_cluster_ip | false | Set it to true if you want to assign ClusterIP to the service |
Setting | Default | Required | Description |
---|---|---|---|
live.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be >=1 |
live.memoryLimit | 1000Mi | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | |
live.cpuLimit | 500m | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | |
live.image | artifacts.plane.so/makeplane/plane-live | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | |
live.pullPolicy | Always | Using this key, user can set the pull policy for the deployment of live . | |
env.live_sentry_dsn | (optional) Live service deployment comes with some of the preconfigured integration. Sentry is one among those. Here user can set the Sentry provided DSN for this integration. | ||
env.live_sentry_environment | (optional) Live service deployment comes with some of the preconfigured integration. Sentry is one among those. Here user can set the Sentry environment name (as configured in Sentry) for this integration. | ||
env.live_sentry_traces_sample_rate | (optional) Live service deployment comes with some of the preconfigured integration. Sentry is one among those. Here user can set the Sentry trace sample rate (as configured in Sentry) for this integration. | ||
live.assign_cluster_ip | false | Set it to true if you want to assign ClusterIP to the service |
Setting | Default | Required | Description |
---|---|---|---|
api.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you setting up number of replicas you want to run for this deployment. It must be >=1 |
api.memoryLimit | 1000Mi | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | |
api.cpuLimit | 500m | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | |
api.image | artifacts.plane.so/makeplane/plane-backend | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment | |
api.pullPolicy | Always | Using this key, user can set the pull policy for the deployment of api . | |
env.sentry_dsn | (optional) API service deployment comes with some of the preconfigured integration. Sentry is one among those. Here user can set the Sentry provided DSN for this integration. | ||
env.sentry_environment | (optional) API service deployment comes with some of the preconfigured integration. Sentry is one among those. Here user can set the Sentry environment name (as configured in Sentry) for this integration. | ||
env.api_key_rate_limit | 60/minute | (optional) User can set the maximum number of requests the API can handle in a given time frame. | |
api.assign_cluster_ip | false | Set it to true if you want to assign ClusterIP to the service |
Setting | Default | Required | Description |
---|---|---|---|
worker.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you set up the number of replicas you want to run for this deployment. It must be >=1 |
worker.memoryLimit | 1000Mi | Every deployment in kubernetes can be set to use the maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | |
worker.cpuLimit | 500m | Every deployment in kubernetes can be set to use the maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | |
worker.image | artifacts.plane.so/makeplane/plane-backend | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment |
Setting | Default | Required | Description |
---|---|---|---|
beatworker.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for each deployment. This key helps you set up the number of replicas you want to run for this deployment. It must be >=1 |
beatworker.memoryLimit | 1000Mi | Every deployment in kubernetes can be set to use the maximum memory they are allowed to use. This key sets the memory limit for this deployment to use. | |
beatworker.cpuLimit | 500m | Every deployment in kubernetes can be set to use the maximum cpu they are allowed to use. This key sets the cpu limit for this deployment to use. | |
beatworker.image | artifacts.plane.so/makeplane/plane-backend | This deployment needs a preconfigured docker image to function. Docker image name is provided by the owner and must not be changed for this deployment |
Secret Name | Env Var Name | Required | Description | Example Value |
---|---|---|---|---|
rabbitmq_existingSecret | RABBITMQ_DEFAULT_USER | Required if rabbitmq.local_setup=true | The default RabbitMQ user | plane |
RABBITMQ_DEFAULT_PASS | Required if rabbitmq.local_setup=true | The default RabbitMQ password | plane | |
pgdb_existingSecret | POSTGRES_PASSWORD | Required if postgres.local_setup=true | Password for PostgreSQL database | plane |
POSTGRES_DB | Required if postgres.local_setup=true | Name of the PostgreSQL database | plane | |
POSTGRES_USER | Required if postgres.local_setup=true | PostgreSQL user | plane | |
doc_store_existingSecret | USE_MINIO | Yes | Flag to enable MinIO as the storage backend | 1 |
MINIO_ROOT_USER | Yes | MinIO root user | admin | |
MINIO_ROOT_PASSWORD | Yes | MinIO root password | password | |
AWS_ACCESS_KEY_ID | Yes | AWS Access Key ID | your_aws_key | |
AWS_SECRET_ACCESS_KEY | Yes | AWS Secret Access Key | your_aws_secret | |
AWS_S3_BUCKET_NAME | Yes | AWS S3 Bucket Name | your_bucket_name | |
AWS_S3_ENDPOINT_URL | Yes | Endpoint URL for AWS S3 or MinIO | http://plane-minio.plane-ns.svc.cluster.local:9000 | |
AWS_REGION | Optional | AWS region where your S3 bucket is located | your_aws_region | |
FILE_SIZE_LIMIT | Yes | Limit for file uploads in your system | 5MB | |
app_env_existingSecret | SECRET_KEY | Yes | Random secret key | 60gp0byfz2dvffa45cxl20p1scy9xbpf6d8c5y0geejgkyp1b5 |
REDIS_URL | Yes | Redis URL | redis://plane-redis.plane-ns.svc.cluster.local:6379/ | |
DATABASE_URL | Yes | PostgreSQL connection URL | k8s service example: postgresql://plane:plane@plane-pgdb.plane-ns.svc.cluster.local:5432/plane external service example: postgresql://username:password@your-db-host:5432/plane | |
AMQP_URL | Yes | RabbitMQ connection URL | k8s service example: amqp://plane:plane@plane-rabbitmq.plane-ns.svc.cluster.local:5672/ external service example: amqp://username:password@your-rabbitmq-host:5672/ |
Setting | Default | Required | Description |
---|---|---|---|
ingress.enabled | true | Ingress setup in kubernetes is a common practice to expose application to the intended audience. Set it to false if you are using external ingress providers like Cloudflare | |
ingress.appHost | plane.example.com | Yes | The fully-qualified domain name (FQDN) in the format sudomain.domain.tld or domain.tld that the license is bound to. It is also attached to your ingress host to access Plane. |
ingress.minioHost | Based on above configuration, if you want to expose the minio web console to set of users, use this key to set the host mapping or leave it as EMPTY to not expose interface. | ||
ingress.rabbitmqHost | Based on above configuration, if you want to expose the rabbitmq web console to set of users, use this key to set the host mapping or leave it as EMPTY to not expose interface. | ||
ingress.ingressClass | nginx | Yes | Kubernetes cluster setup comes with various options of ingressClass . Based on your setup, set this value to the right one (eg. nginx, traefik, etc). Leave it to default in case you are using external ingress provider. |
ingress.ingress_annotations | { "nginx.ingress.kubernetes.io/proxy-body-size": "5m" } | Ingress controllers comes with various configuration options which can be passed as annotations. Setting this value lets you change the default value to user required. | |
ssl.createIssuer | false | Kubernets cluster setup supports creating issuer type resource. After deployment, this is step towards creating secure access to the ingress url. Issuer is required for you generate SSL certifiate. Kubernetes can be configured to use any of the certificate authority to generate SSL (depending on CertManager configuration). Set it to true to create the issuer. Applicable only when ingress.enabled=true | |
ssl.issuer | http | CertManager configuration allows user to create issuers using http or any of the other DNS Providers like cloudflare , digitalocean , etc. As of now Plane supports http , cloudflare , digitalocean | |
ssl.token | To create issuers using DNS challenge, set the issuer api token of dns provider like cloudflareor digitalocean`(not required for http) | ||
ssl.server | <https://acme-v02.api.letsencrypt.org/directory> | Issuer creation configuration need the certificate generation authority server url. Default URL is the Let's Encrypt server | |
ssl.email | <plane@example.com> | Certificate generation authority needs a valid email id before generating certificate. Required when ssl.createIssuer=true | |
ssl.generateCerts | false | After creating the issuers, user can still not create the certificate untill sure of configuration. Setting this to true will try to generate SSL certificate and associate with ingress. Applicable only when ingress.enabled=true and ssl.createIssuer=true | |
ssl.tls_secret_name | If you have a custom TLS secret name, set this to the name of the secret. Applicable only when ingress.enabled=true and ssl.createIssuer=false |
Setting | Default | Required | Description |
---|---|---|---|
env.secret_key | 60gp0byfz2dvffa45cxl20p1scy9xbpf6d8c5y0geejgkyp1b5 | Yes | This must be a random string that is used for hashing/encrypting the sensitive data within the application. Once set, changing this might impact the already hashed/encrypted data |