Cloud customer?
Start for Free >
Upgrade in MyJFrog >
What's New in Cloud >





Overview

The JFrog Platform installation using Helm Chart enables you to install the JFrog Platform–with all products–in one installation package. Using this installer, you can choose to either install all of the JFrog products, or to cherry pick the products you wish to deploy.

When would you use the JFrog Platform installation versus installing JFrog products individually using the installations below?

The most common use case would be if you want to install several product (or all of them) at the same time; using this installation saves you the need to repeat steps, repeating configuration of join keys and more, making the installation process easy and straightforward.

To learn more about installing specific products, see the following:

Upgrade from the Beta Version of JFrog Platform Helm Chart is Not Supported

JFrog Platform Installer 10.x is the GA version of the JFrog Platform Installer helm charts. Upgrade is not supported from previous versions, which were beta.



Before You Begin

System Requirements

Before installing the JFrog Platform, see System Requirements for information on supported platforms, supported browsers, and other requirements.

System Architecture

To learn about the JFrog Platform Deployment, see System Architecture.

Prerequisites

Before installing JFrog Platform, verify that the following are in place.

  • Kubernetes 1.14+
  • Artifactory  license (see note below)
  • Kubectl installed and set up to use the cluster

  • Helm v3  installed

JFrog validates compatibility with the core Kubernetes distribution. Since Kubernetes distribution vendors may apply additional logic or hardening (for example, OpenShift and Rancher) JFrog Platform deployment with such platform vendors might not be fully supported.

Subscription Levels

If you install only Artifactory and Xray, you need either an  Enterprise or Enterprise+ trial   license  ( get one from here)  or a Pro trial license  ( get one from here). If you install additional JFrog products, you need an Enterprise+ license.

JFrog Subscription Levels

SELF-HOSTED 
ENTERPRISE+
Page Contents



Installation Steps

Installing the JFrog Platform using the jfrog-platform Helm Chart will install the products in the following setup by default:

  • JFrog Artifactory
  • JFrog Xray/JFrog Insight/JFrog Distribution/JFrog Pipelines: Single Node
  1. Add the   https://charts.jfrog.io   to your Helm client.

    helm repo add jfrog https://charts.jfrog.io 
    
  2. Update the repository.

    helm repo update
  3. Install the chart with the release name  jfrog-platform.

    helm upgrade --install jfrog-platform --namespace jfrog-platform jfrog/jfrog-platform
  4. Optional: Customize the Helm Chart installation to install one or more of the JFrog products.

    The JFrog Platform Helm Chart provides the flexibility of enabling one or more of the JFrog additional products during the installation, which means that you can choose to install all of the products (Distribution, Insight, Pipelines, and Xray), or only some of them.

    For example:

    1. To enable Xray and Insight with Artifactory, you can create a custom-values.yaml  with the following content and then pass it during installation. 

      xray:
        enabled: true
      insight:
        enabled: true
    2. Run the installation.

      helm upgrade --install jfrog-platform --namespace jfrog-platform jfrog/jfrog-platform -f custom-values.yaml
    3. To configure each JFrog product separately , you will need to do the following.

      1. Copy the main values.yaml file (create a custom-values.yaml ).

      2. Edit that product's section in the  custom-values.yaml .

      3. Make the changes and then run the upgrade command.

        helm upgrade --install jfrog-platform --namespace jfrog-platform jfrog/jfrog-platform -f custom-values.yaml

    If you wish to enable Artifactory and disable all the other products, you can create a custom-values.yaml with the following content and then pass it during installation.

    xray:
      enabled: false
    insight:
      enabled: false
    distribution:
      enabled: false
    pipelines:
      enabled: false
    rabbitmq:
      enabled: false
    redis:
      enabled: false

    For more specific product configuration information, see  System YAML Configuration File .

    Once the installation completes, you will be able to see the products that have been installed.

    NOTES:
    Congratulations. You have just deployed JFrog Platform Chart with the following products:
    - artifactory
    - xray
    - insight
    - distribution
    - pipelines
  5. Connect to Artifactory.

    It may take  a few minutes for Artifactory's public IP to become available. Follow the instructions that are output by the install command above to get the Artifactory IP to access it.  Below you will find a sample instruction of what to look for to pick the URL to reach Artifactory  (in the example below,  jfrog-platform  is the release name and  jfrog-platform  is the namespace).

    Congratulations. You have just deployed JFrog Artifactory.
    1. Get the Artifactory URL by running these commands:
       NOTE: It may take a few minutes for the LoadBalancer IP to be available.
             You can watch the status of the service by running 'kubectl get svc --namespace jfrog-platform -w jfrog-platform-artifactory-nginx'
       export SERVICE_IP=$(kubectl get svc --namespace jfrog-platform jfrog-platform-artifactory-nginx -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
       echo http://$SERVICE_IP/
    2. Open Artifactory in your browser
       Default credential for Artifactory:
       user: admin
       password: password
  6. Install the JFrog Platform license using one of three methods: REST API, Artifactory UI, or a Kubernetes Secret. For more information, click the link below.

    To activate Artifactory HA, you must install an appropriate license as part of the installation. There are three ways to manage the license: via Artifactory UI, REST API, or a Kubernetes Secret.

    Specifying multiple licenses

    Whether in the Artifactory UI, using the REST API or in the artifactory.cluster.license file, make sure that the licenses are separated by a newline.

    The easiest and recommended way is by using Artifactory UI. Using the Kubernetes Secret or REST API is for advanced users and is better suited for automation.

    You should use only one of these methods. Switching between them while a cluster is running might disable your Artifactory HA cluster.


    Option A: Using REST API

    You can add licenses via REST API. Note that the REST API uses "\n" for the newlines in the licenses (this is currently recommended method).

    Option B: Using the Artifactory UI

    Once the primary cluster is running, open Artifactory UI and insert the license(s) in the UI. See HA installation and setup for more details.

    Enter all of the licenses at once, with each license separated by a newline. If you add the licenses one at a time, you may get redirected to a node without a license and the UI will not load for that node.

    Option C: Using a Kubernetes Secret

    Important

    This method is relevant for initial deployment only. Once Artifactory is deployed, you should not keep passing these parameters, since the license is already persisted into Artifactory's storage (and they will be ignored). Updating the license should be done via Artifactory UI or REST API.


    You can deploy the Artifactory license(s) as a
    Kubernetes Secret
    You will need to prepare a text file with the license(s) written in it. If adding multiple licenses, they are added in the same file. Remember to add two new lines between each license block.

    1. Create the Kubernetes secret (assuming the local license file is 'art.lic').

      kubectl create secret generic artifactory-cluster-license --from-file=./art.lic
      
    2. Create a license-values.yaml.

      artifactory:
        license:
          secret: artifactory-cluster-license
          dataKey: art.lic
    3. Install with the license-values.yaml.
      Run the following command for JFrog Platform.

      helm upgrade --install jfrog-platform --namespace jfrog-platform jfrog/jfrog-platform -f license-values.yaml

      Run the following command for Artifactory.

      helm upgrade --install artifactory --set artifactory.license.secret=artifactory-cluster-license,artifactory.license.dataKey=artifactory.lic --namespace artifactory jfrog/artifactory
    Create the Kubernetes Secret as Part of the Helm Release
    1. Create a license-values.yaml.

      artifactory:
        license:
          licenseKey: |-
            <LICENSE_KEY1>
      
      
            <LICENSE_KEY2>
      
      
            <LICENSE_KEY3>
    2. Install with the license-values.yaml.

      helm upgrade --install jfrog-platform --namespace jfrog-platform jfrog/jfrog-platform -f license-values.yaml

    This method is relevant for initial deployment only. Once Artifactory is deployed, you should not keep passing these parameters, since the license is already persisted into Artifactory's storage (and they will be ignored). Updating the license should be done via Artifactory UI or REST API.

    If you want to keep managing the Artifactory license using the same method, you can use the copyOnEveryStartup example shown in the values.yaml file.

  7. To access the logs, find the name of the pod using this command.

    kubectl --namespace <your namespace> get pods
  8. To get the specific container logs, run the following command.

    kubectl --namespace <your namespace> logs -f <name of the pod> -c <name of the container>
  9. Customize the product configuration   (optional)  including database, Java Opts, and filestore. 


Product Configuration

After installing and before running Artifactory, you may set the following configurations.

System YAML Configuration File

You can configure all your system settings using the system.yaml file located in the $JFROG_HOME/artifactory/var/etc folder. For more information, see System Configuration. If you don't have a System YAML file in your folder, copy the template available in the folder and name it system.yaml.

Unlike other installations, Helm Chart configurations are made to the values.yaml and are then applied to the system.yaml.

Follow these steps to apply the configuration changes.

  1. Make the changes to values.yaml. 
  2. Run the command.

    helm upgrade --install <jfrog product> --namespace <jfrog product> -f values.yaml

Database

The JFrog Platform Helm Chart comes with a bundled PostgreSQL Database out-of-the-box. If you're planning to use it in production, it is  highly recommended  to first  configure any alternate supported databases, and then deploy the JFrog Platform.

Customize Java Opts (Optional)

You can modify your JVM Parameters as needed by setting JAVA_OPTIONS in $JFROG_HOME/artifactory/var/etc/system.yaml. The property to pass extra Java opts is artifactory.extraJavaOpts. It is highly recommended to set your Java memory parameters as follows:

The larger your repository or number of concurrent users, the larger you need to make the -Xms and -Xmx values accordingly. If you can reserve at least 512MB for Artifactory, the recommended minimal values are:

-server -Xms512m -Xmx2g -Xss256k -XX:+UseG1GC

For more recommendations about your hardware configuration (especially the -Xmx parameter), see  System Requirements.

Additional Settings

Additional settings include: customizing ports,  joinKey (join.key), masterKey (master.key).

Configuring the Filestore

By default, Artifactory is configured to use the local file system as its filestore. Artifactory supports a variety of  additional filestore configurations  to meet a variety of needs for binary storage providers, storage size and redundancy.


Advanced JFrog Platform Installation

Installing Other JFrog Products with an Existing Artifactory Installation

In cases where you have already installed Artifactory on your system and wish to add some or all of the JFrog products, you can use the JFrog Platform Installer to perform an advanced installation.

  1. Create a   custom-values.yaml, which you will then pass during installation.
  2. In this file, disable the Artifactory installation and enable other products to install them on your system in the following way.

    artifactory:
      enabled: false
    xray:
      enabled: true
    insight:
      enabled: true
  3. Run the installation.

    helm upgrade --install jfrog-platform --namespace jfrog-platform center/jfrog/jfrog-platform -f custom-values.yaml

For more information, see Installing the JFrog Platform Using Helm Chart.

Using an External PostgreSQL Database in the JFrog Platform Installation

You can configure the JFrog Platform installation to use an external PostgreSQL database instead of the bundled PostgreSQL database.

Create values-external-postgresql.yaml  file with the following YAML configuration.

global:
  database:
    initDBCreation: false
postgresql:
  enabled: false
artifactory:
  database:
    type: postgresql
    driver: org.postgresql.Driver
    url: 'jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/${ARTIFACTORY_DATABASE}'
    user: ${ARTIFACTORY_DATABASE_USER}
    password: ${ARTIFACTORY_DATABASE_PASSWORD}
xray:
  database:
    url: 'postgres://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/${XRAY_DATABASE}?sslmode=disable'
    user: ${XRAY_DATABASE_USER}
    password: ${XRAY_DATABASE_PASSWORD}
distribution:
  database:
    url: 'jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/${DISTRIBUTION_DATABASE}?sslmode=disable'
    user: ${DISTRIBUTION_DATABASE_USER}
    password: ${DISTRIBUTION_DATABASE_PASSWORD}
insight:
  database:
    url: 'jdbc:postgresql://${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/${INSIGHT_DATABASE}'
    user: ${INSIGHT_DATABASE_USER}
    password: ${INSIGHT_DATABASE_PASSWORD}
pipelines:
  global:
    postgresql:
      user: ${PIPELINES_DATABASE_USER}
      password: ${PIPELINES_DATABASE_PASSWORD}
      host: ${POSTGRESQL_HOST}
      port: 5432
      database: ${PIPELINES_DATABASE}
      ssl: false / true

Set   postgresql.enabled=false in the YAML file and provide the external database details before you run the helm install or upgrade. You must create the database and users before you run Helm install or upgrade. If you use Mission Control, you must set up databases, users, and schemas. For more information, refer to Setting up Your Postgre SQL Databases, Users, and Schemas.

Refer the Using an External Database for more information on using an external database. 

You can also provide the database configuration using database.secrets in the YAML file. For more information, see Kubernetes Secrets.

  • No labels
Copyright © 2022 JFrog Ltd.