The JFrog Platform Helm Chart provides a unified deployment solution for the JFrog DevOps Platform on Kubernetes. It orchestrates deployment of
-
Platform (All JFrog products like Artifactory, Xray and others) allowing for a fully customizable and scalable environment.
-
PostgreSQL database using the
bitnami/postgresqlchart (can be changed)Production Warning: This chart bundles a PostgreSQL deployment (
bitnami/postgresql) by default. For production-grade installations, it is highly recommended to use an external managed PostgreSQL database (like AWS RDS or Azure Flexible Server for PostgreSQL) rather than the bundled PostgreSQL. -
RabbitMQ using the
bitnami/rabbitmqchart (can be changed) -
Optional Nginx server
β οΈ Important Versioning Notes
- GA Release: This is the General Availability release. Backward compatibility with versions
< 10.0.0is not supported.- Pipelines & Insights: As of version
11.x, JFrog Pipelines and Insights are decoupled from this chart. If you require these products, please utilize the10.xchart versions.
Ensure your environment meets the following requirements before proceeding.
| Requirement | Details |
|---|---|
| Kubernetes | Version 1.23 or higher. |
| Helm | Helm v3 is required. |
| License | Artifactory Enterprise(+) or Pro license. Get a Free Trial License |
| Resources | Sufficient CPU/RAM based on your sizing selection. For more information, see JFrog Platform Reference Architecture Docs. |
Initialize your Helm client with the official JFrog repository.
helm repo add jfrog https://charts.jfrog.io
helm repo updateDeploy the JFrog Platform with the release name jfrog-platform.
helm upgrade --install jfrog-platform jfrog/jfrog-platform \
--namespace jfrog-platform \
--create-namespaceFor OpenShift deployments, security contexts must be disabled because OpenShift manages pod security policies automatically. An OpenShift-optimized values file (openshift-values.yaml) is provided that disables all security contexts for the platform's products and services.
π Note: For additional background on OpenShift's handling of pod security, refer to Red Hat's documentation.
To deploy JFrog Platform on OpenShift:
helm upgrade --install jfrog-platform jfrog/jfrog-platform \
-f values.yaml \
-f openshift-values.yaml \
--namespace jfrog-platform \
--create-namespace
β οΈ Important: Theopenshift-values.yamlfile must be applied last. When using multiple-fflags in Helm, later files override earlier ones. This guarantees that the OpenShift-specific settings take precedence.
The openshift-values.yaml file disables the following for all products and services deployed using this Helm chart:
- Pod security contexts
- Container security contexts
This ensures compatibility with OpenShift's built-in security model and allows the platform to operate under OpenShift's default pod security enforcement.
The JFrog Platform supports various sizing tiers (Small, Medium, Large) to match your workload.
π Note: Deployments with
replicaCount > 1(High Availability) require an Enterprise or Enterprise+ license.
Apply a Sizing Profile:
To apply a pre-configured sizing profile (e.g., small), use the files found in the sizing/ directory:
helm upgrade --install jfrog-platform jfrog/jfrog-platform \
-f sizing/platform-small.yaml \
--namespace jfrog-platform \
--create-namespaceRefer to the JFrog Platform Reference Architecture for detailed resource specifications.
π Note: High availability is only supported with an Artifactory Enterprise license.
For production environments requiring redundancy.
- Replica Count: Set
artifactory.artifactory.replicaCountto 2 or more (3 is recommended). - Filestore: Do not use
file-systemfor persistence in HA. You must usecluster-file-systemor an object storage provider (S3, GCS, Azure).
For more details on configuring the filestore, Refer here.
helm upgrade --install jfrog-platform jfrog/jfrog-platform \
--set artifactory.artifactory.replicaCount=3 \
--set artifactory.artifactory.persistence.type=cluster-file-system \
--namespace jfrog-platform \
--create-namespaceThis chart is modular. You can enable or disable specific products via your customvalues.yaml.
Available Modules: Xray, Distribution, Worker, Catalog, Curation, JAS.
Example customvalues.yaml:
# Enable Distribution and Xray
distribution:
enabled: true
xray:
enabled: trueThere are three methods to apply your Artifactory license. Choose only one method to avoid conflicts.
Best for manual setup.
Via UI
- Deploy the chart and wait for the Artifactory pod to be
Running. - Access the Artifactory UI.
- Paste all license keys into the activation window. See HA Installation & Setup
- π‘ Tip: If using HA, paste all licenses at once, separated by newlines.
Best for CI/CD or IaC deployments. This method is used for initial bootstrapping only.
-
Create the Secret: Create a file
art.liccontaining your license keys (separated by two newlines).kubectl create secret generic artifactory-cluster-license --from-file=./art.lic -n jfrog-platform
-
Reference in
customvalues.yaml:artifactory: artifactory: license: secret: artifactory-cluster-license dataKey: art.lic
π Note: Once Artifactory is deployed, you should not keep passing these parameters as the license is already persisted into Artifactory's storage (they will be ignored). Updating the license should be done via Artifactory UI or REST API.
Pass the license directly in the values file (Caution: exposes license in plain text).
artifactory:
artifactory:
license:
licenseKey: |-
<LICENSE_KEY_1>
<LICENSE_KEY_2>π Note: For initial deployment only. After Artifactory starts, the license persists in storage and parameters will be ignored. Update licenses via Artifactory UI or REST API. To re-apply on each startup, use the
copyOnEveryStartupoption incustomvalues.yaml.
CRITICAL: If you are upgrading the Chart and use the bundled PostgreSQL, you must pin the PostgreSQL version to match your current running version to avoid data incompatibility or restart loops.
- Identify Current Version:
kubectl get pod jfrog-platform-postgresql-0 -n jfrog-platform -o jsonpath="{.spec.containers[*].image}" - Pin Version in
customvalues.yaml: Take the tag obtained above and configure it:postgresql: image: tag: <CURRENT_POSTGRES_TAG> databaseUpgradeReady: true
- Perform Upgrade:
helm upgrade --install jfrog-platform jfrog/jfrog-platform -f customvalues.yaml --namespace jfrog-platform --create-namespace
Xray is migrating from mirrored classic queues to Quorum Queues.
To install a fresh environment with Quorum queues enabled immediately:
helm upgrade --install jfrog-platform jfrog/jfrog-platform \
-f rabbitmq/ha-quorum.yaml \
--namespace jfrog-platformTo migrate an existing Xray installation to Quorum queues:
helm upgrade --install jfrog-platform jfrog/jfrog-platform \
-f rabbitmq/ha-quorum.yaml \
-f rabbitmq/migration-to-ha-quorum.yaml \
--namespace jfrog-platformTo remove the JFrog Platform:
helm uninstall jfrog-platform --namespace jfrog-platformπ Note: This command deletes the application deployments but does not delete the Persistent Volume Claims (PVCs) associated with your data. You must manually delete the PVCs if you wish to destroy all data.
- π Official JFrog Helm Installation Documentation
- ποΈ Filestore Configuration
- π§Ύ REST API for Licensing