Upgrading from Insight Version 1.x to 1.17

JFrog Installation & Setup Documentation

Content Type
Installation & Setup
ft:sourceType
Paligo

The following upgrade methods are supported:

  • Interactive Script (Recommended)

  • Manual RPM / Debian

  • Linux Archive

  • Helm

Note

When you upgrade a Insight high availability cluster, ensure that you trigger the upgrade process on all the nodes simultaneously.

Insight Interactive Script Upgrade

This supports all install types, including Docker Compose, RPM, and Debian.

  1. Stop the service.

    systemctl stop insight //For systemd OS
    
    service insight stop //For systemv OS
    
    cd jfrog-insight-<version>-compose // For Docker Compose
    docker-compose -p insight down

    For HA Installation

    Stop all the Insight nodes in the cluster first followed by the primary node.

  2. Extract the contents of the compressed archive and go to the extracted folder.

    Note

    Make sure to merge your customizations in your current docker-compose.yaml file to the new extracted version of the docker-compose.yaml file.

    tar -xvf jfrog-insight-<version>-<compose|rpm|deb>.tar.gz
    cd jfrog-insight-<version>-<compose|rpm|deb>
    

    Note

    Copy the contents of the .env file in the previous installation to the newly created .env file in this archive without copying the versions, as this will affect the upgrade.

  3. If you are upgrading to Insight 1.17.x or later with Deb or RPM-based OS, run the following commands to remove the Search Guard plugin.

    cd /usr/share/elasticsearch/bin/elasticsearch-plugin 
    
    remove search-guard-7

    Since Insight 1.17.x and later uses Elasticsearch 8, Search Guard is no longer required.

    For HA Installation

    You need to run the commands in each node in the cluster to remove Search Guard.

  4. Run the installer script.

    Note

    If needed, the script will prompt you with a series of mandatory inputs, including the jfrogURL (custom base URL) and joinKey.

    ./config.sh //For Docker Compose
    
    ./install.sh //For RPM and Debian

    For HA Installation

    Create a  certs. folder in the install directory and copy the Elasticsearch Certificate file /etc/elasticsearch/certs/elastic-certificates.p12 from primary to the certs folder. The installation script will copy the certificate to the right location.

  5. Start and manage the Insight service.

    systemctl start|stop insight //For systemd OS
    
    service insight start|stop //For systemv OS
    
    cd jfrog-insight-<version>-compose //For Docker Compose
    docker-compose -p insight up -d 
    docker-compose -p insight ps 
    docker-compose -p insight down
  6. Access Insight from your browser at: http://<jfrogUrl>/ui/, go to the Dashboard tab in the Application module in the UI.

  7. Check the Insight log.

    tail -f $JFROG_HOME/insight/var/log/console.log
  8. Update the Filebeat configurations of any Artifactory or Xray node which have Filebeat enabled:

    shared:
        metrics:
            enabled: true
            filebeat:
                enabled: true
                elasticsearch:
                    url: https://[ELASTICSEARCH_URL]:9200
                    username: admin
                    password: password
                    ssl:
                        verification_mode: none
Insight HA Helm Upgrade

When you upgrade Insight HA from Insight 1.17.x and later, the upgrade process depends on the Elastic persistence storage setting because of Elasticsearch upgrade.

If Elasticsearch Persistence Storage is Enabled (Default)

If the value of elasticsearch.persistence.enabled is set as true, run the following commands to upgrade.

  1. Run the following commands from inside the primary Elasticsearch container.

    Note

    Change the default username and password (admin:admin) if you have updated it manually.

    • List all the available nodes.

      curl -uadmin:admin -k "localhost:9200/_cat/nodes?format=json&filter_path=name&pretty"
    • Remove all the nodes other than primary from voting configuration.

      curl -uadmin:admin -k -XPOST "localhost:9200/_cluster/voting_config_exclusions?node_names=<node-name>&pretty”
    • Remove all nodes other than the primary from the cluster routing allocation list.

      curl -uadmin:admin -XPUT 
      "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d'
      {  "transient" : {    
        "cluster.routing.allocation.exclude._name" : 
      "<node-name>"  
        }
      }
      '
  2. Bring down Insight HA cluster with ReplicaCount set to 1.

    kubectl scale sts <insight-sts> –replicas=1
  3. Run the following commands from inside the primary Elasticsearch container.

    • Delete the voting configuration.

      curl -uadmin:admin -k -XDELETE 
      "localhost:9200/_cluster/voting_config_exclusions?wait_for_removal=false"
    • Restore allocation settings to default.

      curl -uadmin:admin -k -XPUT "http://localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d'
      {
        "transient" : {
          "cluster.routing.allocation.exclude._name" : null
        }
      }
      '
  4. Update the repository and run helm upgrade with replicaCount set to 1.

    helm repo update
    helm upgrade --install insight --set replicaCount=1 --namespace insight jfrog/insight
  5. Verify the upgrade completed.

    helm status insight
  6. Bring up Insight HA cluster with the desired ReplicaCount.

    helm upgrade --install insight --set replicaCount=3 --namespace insight jfrog/insight
  7. Update the Filebeat configurations of any Artifactory or Xray node which have Filebeat enabled:

    shared:
        metrics:
            enabled: true
            filebeat:
                enabled: true
                elasticsearch:
                    url: https://[ELASTICSEARCH_URL]:9200
                    username: admin
                    password: password
                    ssl:
                        verification_mode: none

If Elasticsearch Persistence Storage is Disabled

If the value of elasticsearch.persistence.enabled is set as false, run the following commands to upgrade.

  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. Uninstall existing release.

    helm uninstall insight --namespace insight

    The Insight PVCs are not touched by the uninstallation.

  4. Initiate installation by providing a join key and JFrog url as a parameter to the Insight chart installation.

    helm upgrade --install insight --set replicaCount=3 --set insight.joinKey=<YOUR_PREVIOUSLY_RETIREVED_JOIN_KEY> \
                 --set insightServer.jfrogUrl=<YOUR_PREVIOUSLY_RETIREVED_BASE_URL> --namespace insight jfrog/insight

    Alternatively, you can manually create a secret containing the join key and then pass it to the template during install/upgrade. the key must be named join-key.

    # Create a secret containing the key:
    kubectl create secret generic my-secret --from-literal=join-key=<YOUR_PREVIOUSLY_RETIREVED_JOIN_KEY>
     
    # Pass the created secret to helm
    helm upgrade --install insight --set insight.joinKeySecretName=my-secret --namespace insight jfrog/insight

    Note

    In either case, make sure to pass the same join key on all future calls to helm install and helm upgrade! This means always passing --set insight.joinKey=<YOUR_PREVIOUSLY_RETIREVED_JOIN_KEY>. In the second, this means always passing --set missionControl.joinKeySecretName=my-secret and ensuring the contents of the secret remain unchanged.

    Ensure that you provide the same namespace that you had before this upgrade process in the installation command .

  5. Access Insight from your browser at: http://<jfrogUrl>/ui/ and go to the Dashboard tab in the Application module in the UI.

  6. Check the status of your deployed Helm releases.

    helm status insight
  7. Update the Filebeat configurations of any Artifactory or Xray node which have Filebeat enabled:

    shared:
        metrics:
            enabled: true
            filebeat:
                enabled: true
                elasticsearch:
                    url: https://[ELASTICSEARCH_URL]:9200
                    username: admin
                    password: password
                    ssl:
                        verification_mode: none