Sequin is a powerful data streaming and processing platform that integrates with PostgreSQL and Redis for robust data management capabilities.
Trademarks: This software listing is packaged following Bitnami standards. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement.
helm install my-release oci://registry-1.docker.io/sequinstream/sequin
This chart bootstraps a Sequin deployment on a Kubernetes cluster using the Helm package manager.
- Kubernetes 1.19+
- Helm 3.0+
- PV provisioner support in the underlying infrastructure
To install the chart with the release name my-release
:
helm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/sequin
Note: You need to substitute the placeholders
REGISTRY_NAME
andREPOSITORY_NAME
with a reference to your Helm chart registry and repository.
The command deploys Sequin on the Kubernetes cluster in the default configuration. The Parameters section lists the parameters that can be configured during installation.
Tip: List all releases using
helm list
To uninstall/delete the my-release
deployment:
helm delete my-release
The command removes all the Kubernetes components associated with the chart and deletes the release.
Name | Description | Value |
---|---|---|
global.imageRegistry |
Global Docker image registry | "" |
global.imagePullSecrets |
Global Docker registry secret names as an array | [] |
Name | Description | Value |
---|---|---|
kubeVersion |
Override Kubernetes version | "" |
nameOverride |
String to partially override common.names.fullname | "" |
fullnameOverride |
String to fully override common.names.fullname | "" |
commonLabels |
Labels to add to all deployed objects | {} |
commonAnnotations |
Annotations to add to all deployed objects | {} |
clusterDomain |
Kubernetes cluster domain name | cluster.local |
Name | Description | Value |
---|---|---|
image.registry |
Sequin image registry | docker.io |
image.repository |
Sequin image repository | sequin/sequin |
image.tag |
Sequin image tag (immutable tags are recommended) | latest |
image.digest |
Sequin image digest in the way sha256:aa.... | "" |
image.pullPolicy |
Sequin image pull policy | IfNotPresent |
image.pullSecrets |
Sequin image pull secrets | [] |
image.debug |
Enable Sequin image debug mode | false |
Name | Description | Value |
---|---|---|
postgresqlPoolSize |
The maximum number of concurrent connections to PostgreSQL | 10 |
redisPoolSize |
Number of Redis connections in the pool | 5 |
existingSecret |
Name of a secret with the application password | "" |
command |
Override default container command | [] |
args |
Override default container args | [] |
extraEnvVars |
Array with extra environment variables | [] |
extraEnvVarsCM |
Name of existing ConfigMap containing extra env vars | "" |
extraEnvVarsSecret |
Name of existing Secret containing extra env vars | "" |
Name | Description | Value |
---|---|---|
livenessProbe.enabled |
Enable livenessProbe on Sequin containers | true |
livenessProbe.initialDelaySeconds |
Initial delay seconds for livenessProbe | 5 |
livenessProbe.periodSeconds |
Period seconds for livenessProbe | 10 |
livenessProbe.timeoutSeconds |
Timeout seconds for livenessProbe | 5 |
livenessProbe.failureThreshold |
Failure threshold for livenessProbe | 5 |
livenessProbe.successThreshold |
Success threshold for livenessProbe | 1 |
readinessProbe.enabled |
Enable readinessProbe on Sequin containers | true |
readinessProbe.initialDelaySeconds |
Initial delay seconds for readinessProbe | 5 |
readinessProbe.periodSeconds |
Period seconds for readinessProbe | 10 |
readinessProbe.timeoutSeconds |
Timeout seconds for readinessProbe | 5 |
readinessProbe.failureThreshold |
Failure threshold for readinessProbe | 5 |
readinessProbe.successThreshold |
Success threshold for readinessProbe | 1 |
resources.limits |
The resources limits for the Sequin containers | {} |
resources.requests |
The requested resources for the Sequin containers | {} |
podSecurityContext.enabled |
Enabled Sequin pods' Security Context | true |
podSecurityContext.fsGroup |
Set Sequin pod's Security Context fsGroup | 1001 |
containerSecurityContext.enabled |
Enabled containers' Security Context | true |
containerSecurityContext.runAsUser |
Set containers' Security Context runAsUser | 1001 |
containerSecurityContext.runAsNonRoot |
Set container's Security Context runAsNonRoot | true |
Name | Description | Value |
---|---|---|
service.type |
Sequin service type | LoadBalancer |
service.ports.http |
Sequin service HTTP port | 80 |
service.nodePorts.http |
Node port for HTTP | "" |
service.clusterIP |
Sequin service Cluster IP | "" |
service.loadBalancerIP |
Sequin service Load Balancer IP | "" |
service.loadBalancerSourceRanges |
Sequin service Load Balancer sources | [] |
service.externalTrafficPolicy |
Sequin service external traffic policy | Cluster |
service.annotations |
Additional custom annotations for Sequin service | {} |
service.extraPorts |
Extra ports to expose in Sequin service | [] |
service.sessionAffinity |
Session Affinity for Kubernetes service | None |
service.sessionAffinityConfig |
Additional settings for the sessionAffinity | {} |
ingress.enabled |
Enable ingress record generation for Sequin | false |
ingress.pathType |
Ingress path type | ImplementationSpecific |
ingress.apiVersion |
Force Ingress API version (automatically detected if not set) | "" |
ingress.hostname |
Default host for the ingress record | sequin.local |
ingress.path |
Default path for the ingress record | / |
ingress.annotations |
Additional annotations for the Ingress resource | {} |
ingress.tls |
Enable TLS configuration for the host defined at ingress.hostname | false |
ingress.selfSigned |
Create a TLS secret for this ingress record using self-signed certificates | false |
ingress.extraHosts |
An array with additional hostname(s) to be covered with the ingress record | [] |
ingress.extraPaths |
An array with additional arbitrary paths that may need to be added to the ingress | [] |
ingress.extraTls |
TLS configuration for additional hostname(s) to be covered with this ingress record | [] |
ingress.secrets |
Custom TLS certificates as secrets | [] |
Name | Description | Value |
---|---|---|
postgresql.enabled |
Deploy PostgreSQL subchart | true |
postgresql.nameOverride |
Override name of the PostgreSQL chart | "" |
postgresql.auth.existingSecret |
Existing secret containing the password | "" |
postgresql.auth.password |
Password for the postgres user (auto-generated if not set) | "" |
postgresql.auth.username |
Username to create when deploying the PostgreSQL chart | sequin |
postgresql.auth.database |
Database to create when deploying the PostgreSQL chart | sequin |
postgresql.primary.service.ports.postgresql |
PostgreSQL service port | 5432 |
postgresql.primary.persistence.enabled |
Enable PostgreSQL Primary data persistence | true |
postgresql.primary.persistence.size |
PVC Storage Request for PostgreSQL volume | 8Gi |
Name | Description | Value |
---|---|---|
externalDatabase.host |
Host of an external PostgreSQL instance to connect | "" |
externalDatabase.user |
User of an external PostgreSQL instance to connect | postgres |
externalDatabase.password |
Password of an external PostgreSQL instance to connect | "" |
externalDatabase.existingSecret |
Secret containing the password of an external PostgreSQL instance | "" |
externalDatabase.database |
Database inside an external PostgreSQL to connect | sequin |
externalDatabase.port |
Port of an external PostgreSQL to connect | 5432 |
Name | Description | Value |
---|---|---|
redis.enabled |
Switch to enable or disable the Redis helm chart | true |
redis.auth.enabled |
Enable password authentication | false |
redis.auth.password |
Redis password | "" |
redis.auth.existingSecret |
The name of an existing secret with Redis credentials | "" |
redis.architecture |
Redis architecture. Allowed values: standalone or replication | standalone |
Name | Description | Value |
---|---|---|
externalRedis.host |
Redis host | localhost |
externalRedis.port |
Redis port number | 6379 |
externalRedis.password |
Redis password | "" |
externalRedis.existingSecret |
Name of an existing secret resource containing Redis credentials | "" |
To use an external database, set postgresql.enabled=false
and configure the externalDatabase
parameters:
postgresql.enabled=false
externalDatabase.host=myexternalhost
externalDatabase.user=myuser
externalDatabase.password=mypassword
externalDatabase.database=mydatabase
externalDatabase.port=5432
To use an external Redis instance, set redis.enabled=false
and configure the externalRedis
parameters:
redis.enabled=false
externalRedis.host=myexternalhost
externalRedis.port=6379
externalRedis.password=mypassword
This chart provides support for Ingress resources. If you have an ingress controller installed on your cluster, such as nginx-ingress-controller or contour you can utilize the ingress controller to serve your application.
To enable Ingress integration, set ingress.enabled
to true
. The ingress.hostname
property can be used to set the host name. The ingress.tls
parameter can be used to add the TLS configuration for this host.
In case you want to add extra environment variables (useful for advanced operations like custom init scripts), you can use the extraEnvVars
property.
extraEnvVars:
- name: LOG_LEVEL
value: error
Alternatively, you can use a ConfigMap or a Secret with the environment variables. To do so, use the extraEnvVarsCM
or the extraEnvVarsSecret
values.
If additional containers are needed in the same pod as Sequin (such as additional metrics or logging exporters), they can be defined using the sidecars
parameter.
sidecars:
- name: your-image-name
image: your-image
imagePullPolicy: Always
ports:
- name: portname
containerPort: 1234
The new Sequin Helm chart (v0.2.0) follows the Bitnami chart standard and includes several improvements over the old chart (v0.1.0):
- Dependency Management: Uses Bitnami's PostgreSQL and Redis charts as dependencies
- Security Enhancements: Improved security context settings and secret management
- Configuration Options: More granular configuration options for all components
- Resource Management: Better defaults for resource requests and limits
- Ingress Support: Enhanced ingress configuration with TLS support
To migrate from the old chart (v0.1.0) to the new chart (v0.2.0), follow these steps:
-
Backup Your Data
Before migration, backup your PostgreSQL database:
kubectl exec -it <your-postgres-pod> -- pg_dump -U postgres -d sequin > sequin_backup.sql
-
Get Current Configuration Values
Extract your current configuration values:
helm get values <release-name> > old_values.yaml
-
Map Old Values to New Format
Create a new values file for the v0.2.0 chart using this mapping:
Old Chart Path (v0.1.0) New Chart Path (v0.2.0) sequin.image.repository
image.repository
sequin.image.tag
image.tag
sequin.image.pullPolicy
image.pullPolicy
sequin.service.type
service.type
sequin.service.port
service.ports.http
sequin.service.nodePort
service.nodePorts.http
sequin.config.pgHostname
Use postgresql.enabled=true
orexternalDatabase.host
sequin.config.pgDatabase
postgresql.auth.database
orexternalDatabase.database
sequin.config.pgPort
postgresql.primary.service.ports.postgresql
orexternalDatabase.port
sequin.config.pgUsername
postgresql.auth.username
orexternalDatabase.user
sequin.config.pgPassword
postgresql.auth.password
orexternalDatabase.password
sequin.config.pgPoolSize
postgresqlPoolSize
sequin.config.redisUrl
Use redis.enabled=true
or configureexternalRedis.*
postgres.image.*
postgresql.*
(if using built-in PostgreSQL)postgres.service.*
postgresql.primary.service.*
postgres.config.database
postgresql.auth.database
postgres.config.username
postgresql.auth.username
postgres.config.password
postgresql.auth.password
postgres.persistence.*
postgresql.primary.persistence.*
redis.image.*
redis.*
(if using built-in Redis)redis.service.*
Managed by Redis subchart redis.persistence.*
Managed by Redis subchart -
Uninstall Old Chart
helm uninstall <release-name>
IMPORTANT: If you want to preserve your PVCs, add the
--keep-history
flag -
Install New Chart
helm install <release-name> oci://registry-1.docker.io/sequinstream/sequin -f new_values.yaml
Or install from the local directory:
helm install <release-name> ./helm-chart-sequin -f new_values.yaml
Old values.yaml (v0.1.0):
sequin:
image:
repository: sequin/sequin
tag: latest
service:
type: NodePort
port: 7376
nodePort: 31376
config:
pgHostname: sequin-postgres
pgDatabase: sequin
pgPort: 5432
pgUsername: postgres
pgPassword: postgres
pgPoolSize: 20
redisUrl: "redis://sequin-redis:6379"
postgres:
persistence:
enabled: true
size: 1Gi
redis:
persistence:
enabled: true
size: 1Gi
New values.yaml (v0.2.0):
image:
repository: sequin/sequin
tag: latest
postgresqlPoolSize: 20
service:
type: NodePort
ports:
http: 7376
nodePorts:
http: 31376
postgresql:
enabled: true
auth:
username: postgres
password: postgres
database: sequin
primary:
persistence:
enabled: true
size: 1Gi
redis:
enabled: true
master:
persistence:
enabled: true
size: 1Gi
If you encounter issues during migration:
- Database Connection Issues: Ensure the database connection parameters are correctly mapped
- Redis Connection Issues: Verify Redis connection settings
- Persistence Issues: Check that PVCs are correctly mounted
- Service Access Issues: Verify service configuration and port mappings
For additional help, please:
- Check the Sequin documentation
- Open an issue in the GitHub repository
This chart is licensed under the MIT License - see the LICENSE file for details.