This Helm chart deploys the official Saleor Apps to a Kubernetes cluster. It supports multiple apps that can be enabled or disabled as needed, with a shared Redis instance for persistence (APL).
- CRM Klaviyo: Integration with Klaviyo CRM
- SMTP: Email sending functionality
- Products Feed: Product feed generation and management
- Search: Provides search functionality
- Avatax: Tax calculations via Avatax
- CMS v2: Content Management System
- Kubernetes 1.19+
- Helm 3.0+
- Ingress controller (e.g., nginx-ingress)
- Redis (Bitnami chart)
- Add the Bitnami repository for Redis dependency:
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
- Create a values file (e.g.,
my-values.yaml
) to configure your deployment:
global:
domain: "your-domain.com"
secretKey: "your-secret-key" # Required for app security
redis:
auth:
password: "your-redis-password" # Set a secure password
# Enable the apps you need
apps:
crm-klaviyo:
enabled: true
hostname: crm-klaviyo.your-domain.com
emails-and-messages:
enabled: true
hostname: emails.your-domain.com
# ... configure other apps as needed
- Install the chart:
helm install saleor-apps . -f my-values.yaml
Parameter | Description | Default |
---|---|---|
global.domain |
Base domain for all apps | apps.example.com |
global.secretKey |
Secret key for app security | "" |
Parameter | Description | Default |
---|---|---|
redis.enabled |
Enable Redis deployment | true |
redis.auth.enabled |
Enable Redis authentication | true |
redis.auth.password |
Redis password | "" |
Parameter | Description | Default |
---|---|---|
common.image.registry |
Docker registry | ghcr.io |
common.image.repository |
Docker repository | trieb-work/saleor-apps-docker |
common.image.tag |
Docker image tag | latest |
common.image.pullPolicy |
Image pull policy | IfNotPresent |
Each app supports the following configuration parameters:
Parameter | Description | Default |
---|---|---|
apps.<app-name>.enabled |
Enable the app | false |
apps.<app-name>.hostname |
Hostname for the app | <app>.apps.example.com |
apps.<app-name>.port |
Container port | 3000 |
apps.<app-name>.ingress.enabled |
Enable ingress | true |
apps.<app-name>.ingress.annotations |
Ingress annotations | {} |
The chart includes a marketplace service that provides a custom marketplace JSON endpoint for your Saleor apps. This allows you to have a self-hosted marketplace that lists all your enabled Saleor apps with their correct manifest URLs.
Enable and configure the marketplace in your values.yaml:
marketplace:
# Enable or disable the marketplace service
enabled: true
# Your marketplace hostname
hostname: marketplace.apps.example.com
ingress:
enabled: true
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod # Optional: for automatic SSL
tls:
enabled: true
secretName: "" # Leave empty to use default name: <release>-marketplace-tls
To use your custom marketplace with Saleor Dashboard, set the APPS_MARKETPLACE_API_URL
environment variable in your dashboard deployment:
env:
- name: APPS_MARKETPLACE_API_URL
value: "https://marketplace.apps.example.com/marketplace.json"
This will allow you to install your apps directly from the Saleor Dashboard with one click. The marketplace JSON will only include apps that are enabled in your saleor-apps deployment.
The marketplace service generates a JSON file that follows the official Saleor marketplace format. For each enabled app, it includes:
- App name and description
- Logo and branding information
- Integration details
- Manifest URL pointing to your deployed app instance
- Standard privacy and support URLs
The manifest URLs are automatically set to match your app hostnames as configured in the chart.
- After installation, each enabled app will be available at its configured hostname.
- All apps share the same Redis instance for persistence.
- Configure your DNS to point the hostnames to your ingress controller.
To upgrade the release:
helm upgrade saleor-apps . -f my-values.yaml
To uninstall the release:
helm uninstall saleor-apps
- The Redis password must be set before installation
- Each app requires its own hostname for ingress
- The secret key should be securely generated and kept private
- All apps use port 3000 by default inside their containers