JFROG PLATFORM: Getting started with the JFrog Platform Helm Chart
This article aims to provide a comprehensive guide on configuring the JFrog Platform chart, including essential settings that are frequently utilized, and an overview of its functioning. It is noteworthy that this article will not delve into individual chart configurations unless they are pertinent to the JFrog Platform chart.
Use Case:This chart is an excellent option for implementing JFrog products in a Kubernetes environment as it allows for the management of all JFrog products in one chart. This enables upgrades for all JFrog products simultaneously, ensuring continuous compatibility.
How it Works:The JFrog Platform deploys each independent JFrog product chart simultaneously. This means enabling Artifactory, Xray, and Distribution in your values.yaml file will result in the deployment of all three products as shown below example.
artifactory: enabled: true xray: enabled: true distribution: enabled: true
In turn, this will deploy each product chart, with the provided values that you configure (You may see the list of our charts here). With this in mind, we can configure each chart’s sub-section, with any values that it has in its corresponding chart. To further explain, let’s take a look at this example:
artifactory: enabled: true mc: enabled: true artifactory: replicaCount: 2 xray: enabled: true distribution: enabled: true
All of the added values under Artifactory can be found in Artifactory’s chart, and the same logic applies to the rest of the products.
Important to note that all of the products are enabled by default, so you will have to specify which products you don’t want to enable, including the non-JFrog products, such as RabbitMQ.
How to Deploy the Chart in a Testing Environment?
The chart comes with a bundled PostgreSQL database that can be used by all JFrog products. This is a fast way to deploy the chart and see how it works. However, it is important to note that this bundled PostgreSQL is not recommended for production use. We highly recommend that each product have its own database connected to it.
To deploy the chart with the bundled PostgreSQL, we need to specify the following configuration:
global: database: initDBCreation: true postgresql: enabled: true
You may also use the singular chart-specific PostgreSQL, although it's not recommended since you will need to deploy a bundled PostgreSQL for each product. However, if you choose to use the singular chart-specific PostgreSQL, you will have to disable the shared one described above, or you will run into errors. Here's an example of deploying Artifactory's chart with the in-built PostgreSQL while disabling the JFrog Platform's shared PostgreSQL:
global: database: initDBCreation: false postgresql: enabled: false artifactory: artifactory: postgresql: enabled: true
Once we are ready to deploy with external databases, the above configurations MUST be disabled.
Mounting Certificates Across All Products:
To ensure that specific certificates are readily available for use by all the products that you intend to deploy, you can leverage the customCertificates key. This secret allows you to add certificates that will be automatically deployed to the "trusted" directory located at $JFROG_HOME/<product>/var/etc/security/keys.
Example:
global: customCertificates: enabled: true certificateSecretName: your-custom-certificate-secret
Using a Custom Image Registry:For customers who operate within an air-gapped network and prefer to use their own registry for all JFrog product images, the imageRegistry key is available as an option. Alternatively, if you prefer to use a secret instead, the imagePullSecrets key is also available. These features allow you to customize the image registry and access credentials for JFrog products, enabling you to work within your network constraints while maintaining secure and efficient operations.
global: imageRegistry: your-image-registry-url
OR
global: imagePullSecrets: - name: your-image-registry-key
Specifying Versions:
To specify the version to be deployed for each product, you can configure it under the global.versions setting in the values.yaml. This allows for more precise and efficient management of product versions, ensuring that the correct version is deployed to the intended product.
Example:
global: versions: artifactory: app-version xray: app-version distribution: app-version insight: app-version pipelines: app-version pdnServer: app-version
Note: You should specify the app version for each product, rather than the chart version.
Production Deployment Example:Here is an example of a working / tested configuration, that deploys Artifactory, Xray, and Distribution, all with their own external databases connected to:
global: database: initDBCreation: false joinKey: 933a5a01f0dd923e9d408b9ef9fa84333aaecd4bad384dcd6723d8648ae9b4f2 masterKey: f17000f714adfa6ba168ce3945ba3ab4f694dace8e64d4e29a42ca912d992ea5 postgresql: enabled: false pipelines: enabled: false redis: enabled: false insight: enabled: false distribution: enabled: true database: url: jdbc:postgresql://psql-dist.default.svc.cluster.local:5432/distribution user: distribution password: password rabbitmq: enabled: true xray: enabled: true database: url: postgres://psql-xray.default.svc.cluster.local:5432/xraydb?sslmode=disable user: xray password: xray artifactory: enabled: true database: url: jdbc:postgresql://psql-art.default.svc.cluster.local:5432/artifactorydb user: artifactory password: password mc: enabled: true
Extra important notes:- RabbitMQ is needed when you want to use Xray or Pipelines (Or both), and Redis is needed when you want to use Pipelines or Distribution (Or both).
- Additionally when using Pipelines, make sure that you change the jfrogUrlUI value, under global.
- TLS for Xray with RabbitMQ is supported for chart versions 3.78.10 and above only.
Glossary:
Installing the JFrog Platform using Helm Chart.
How to configure Artifactory with an external database when using Artifactory Helm Installation