Mission Control System YAML

JFrog Installation & Setup Documentation

Content Type
Installation & Setup
ft:sourceType
Paligo
Overview

The following is an example of a complete Mission Control system YAML file showing all the different parameters that you may configure.

Example Templates

It is recommended to use the templates available under $JFROG_HOME/mc/var/etc/

  • system.basic-template.yaml includes most commonly used system configurations

  • system.full-template.yaml includes a list of all available configurations

Mission Control is Moving to Artifactory as a Service

From JFrog Artifactory version 7.27.3, Mission Control has been integrated directly into Artifactory as a microservice. You longer need to install Mission Control to use the features it provides. Note that to run Mission Control as a service of Artifactory, you will need set the property mc.enabled in the Artifactory System YAML.

The metrics capabilities that were provided Mission Control will now be provided through JFrog Insight. To learn more about how to install Insight, see Installing Insight.

To learn more about how Mission Control has been integrated into Artifactory, see Migrating Platform Deployments and License Buckets.

However, you can continue to use the standalone Mission Control service until the end-of-life. Standalone Mission Control will continue to receive critical fixes and security updates.

YAML File Format

The YAML file is constructed with keys and entities, using the following key: [entity] format.

  • Sharedconfigurations specified under the shared section, are used by all micro-services.

  • Micro-service specific configuration are set under each micro-service section and override similar shared configurations for the specific micro-service.

Supported Configurations
Shared Configurations
## JFrog Mission Control config file.
## To comment-out any field and keep correct yaml indentation simply delete the leading '#' character.

configVersion: 1

## NOTE: JFROG_HOME is a place holder for the actual root of the deployed product.
## You should replace JFROG_HOME with the real path!
## For example, in RPM install, JFROG_HOME=/opt/jfrog

## NOTE: Sensitive information like passwords and join key are encrypted on first read.
## NOTE: The provided commented key and value is the default.

## SHARED CONFIGURATIONS
## A shared section for keys across all services in this config
shared:

  ## Base URL of the JFrog Platform Deployment (JPD)
  ## This is the URL to the machine where JFrog Artifactory is deployed, or the load balancer pointing to it. It is recommended to use DNS names rather than direct IPs.
  ## Examples: "http://jfrog.acme.com" or "http://10.20.30.40:8082"
  #jfrogUrl:
    
  ## Java 11 distribution to use
  #javaHome: "JFROG_HOME/mc/app/third-party/java"

  ## Shared security configuration
  security:
    ## Join key value for joining the cluster (takes precedence over 'joinKeyFile')
    #joinKey: "XXX"

    ## Join key file location
    #joinKeyFile: "JFROG_HOME/mc/var/etc/security/join.key"

    ## Master key file location
    ## Generated by the product on first startup if not provided
    #masterKeyFile: "JFROG_HOME/mc/var/etc/security/master.key"

    ## Maximum time to wait for key files (master.key and join.key)
    #bootstrapKeysReadTimeoutSecs: 120

  ## Shared logging configuration
  logging:
    consoleLog:
      ## If true, all services' console logs willl be redirected to a common console.log
      #enabled: true

    ## Log rotation settings
    rotation:
      ## The max file size at which enforce rotation
      #maxSizeMb: 25

      ## The number of backup files to maintain
      #maxFiles: 10

      ## Whether to compress the backup file
      #compress: true

  ## Shared node settings
  node:
    ## A unique id to identify this node.
    ## Default: auto generated at startup.
    #id: "mc1"

    ## Default: auto resolved by startup script
    #ip:

    ## Default: auto resolved by startup script
    #name: ""
    
  ## PostgreSQL database to use with the product
  database:
    ## Note: schema for each service is different in mission control
    ## therefore user credentials are at service level
    #type: postgresql
    #driver: org.postgresql.Driver
    #url: "jdbc:postgresql://localhost:5432/mission_control"
    #username: <username>
    #password: password

  ## ElasticSearch settings
  elasticsearch:
    #url: "http://localhost:8082"
    #username: admin
    #password: admin
    #nodeDiscovery: false
    
    ## Default set to false, set true on elasticsearch externalize 
    #external: false
    
    ## Add clusterSetup and set to yes on elasticsearch clustering
    #clusterSetup: "yes"
    ## Add unicast_hosts.txt file path on elasticsearch clustering
    #unicastFile: "<file path to unicast_hosts.txt, for example /etc/elasticsearch/unicast_hosts.txt>"

  ## Add any custom environment variables to be passed to this service
  ## Environment variables starting with JF_ are not allowed, will be ignored with a warning if it is added
  env:
    #EXAMPLE_VAR: example-value
    #LD_LIBRARY_PATH: /usr/lib64

  ## Run as a given user and group
  ## Note : This is only considered in linux archive installation which is installed as a service
  ##        Make sure to change ownership of JFROG_HOME/mc/app and JFROG_HOME/mc/var directory, if this is modified after install
  #user: jfmc
  #group: jfmc

Mission Control Operational Microservices
## Mission control template
mc:
  #port: 8080

  ## Mission control database settings
  database:
    #username: jfmc
    #password: password
    #schema: jfmc_server

    ## Max connections to the database the main connection pool can consume
    #maxOpenConnections: 10

  ## Extra Java options to pass to the JVM. These values add to or override the defaults.
  #extraJavaOpts: "-Xms3g -Xmx4g"

  ## Add any custom environment variables to be passed to this service
  ## Environment variables starting with JF_ are not allowed, will be ignored with a warning if it is added
  env:
    #EXAMPLE_VAR: example-value
    #LD_LIBRARY_PATH: /usr/lib64


## Insight scheduler template
insight-scheduler:
  #port: 8085

  ## Insight scheduler database settings
  database:
    #schema: insight_scheduler
    #username: jfisc
    #password: password

    ## Max connections to the database the main connection pool can consume
    #maxOpenConnections: 10

  ## Extra Java options to pass to the JVM. These values add to or override the defaults.
  #extraJavaOpts: "-Xms3g -Xmx4g"

  ## Scheduler to go standby in ha scenario when services in this node are down
  ha:
  #nodeHealthCheck:
    #autoKillOnMaxFailures: false

  ## Clients settings
  clients:
    ## Time outs and retry count for access client
    access:
      #joinRetry: 5
      #connectionTimeoutSecs: 5
      #socketTimeoutSecs: 45

    ## Time outs and retry count for insight client
    insight:
      #tokenRetry: 5
      #tokenRetryIntervalMillis: 10000

  ## Add any custom environment variables to be passed to this service
  ## Environment variables starting with JF_ are not allowed, will be ignored with a warning if it is added
  env:
    #EXAMPLE_VAR: example-value
    #LD_LIBRARY_PATH: /usr/lib64


## Insight server template
insight-server:
  #port: 8087

  #maxThreads: 50

  ## Insight server database settings
  database:
    #schema: insight_server
    #username: jfisv
    #password: password

    ## Max connections to the database the main connection pool can consume
    #maxOpenConnections: 10

  ## Extra Java options to pass to the JVM. These values add to or override the defaults.
  #extraJavaOpts: "-Xms3g -Xmx4g"

  ## Clients settings
  clients:
    ## Time upto when insight-server will wait until the connection is established with the client
    elasticsearch:
      #connectionWaitTimeoutSecs: 60
      searchguard:
        #connectionWaitTimeoutSecs: 1800
    insight:
      #tokenRetry: 5
      #tokenRetryIntervalMillis: 10000

    artifactory:
      #connectionTimeoutSecs: 5
      #socketTimeoutSecs: 180

      ## Number of days to fetch the replication data from artifactory
      #replicationStartedAfterPeriodDays: -6

    xray:
      #connectionTimeoutSecs: 5
      #socketTimeoutSecs: 45

    access:
      #joinRetry: 5
      #joinRetryIntervalMillis: 10000
      #connectionTimeoutSecs: 5
      #socketTimeoutSecs: 45

    distribution:
      #connectionTimeoutSecs: 5
      #socketTimeoutSecs: 45

    missioncontrol:
      #connectionTimeoutSecs: 5
      #socketTimeoutSecs: 45

  insightMetrics:
    #concurrentServices: 10

  ## Add any custom environment variables to be passed to this service
  ## Environment variables starting with JF_ are not allowed, will be ignored with a warning if it is added
  env:
    #EXAMPLE_VAR: example-value
    #LD_LIBRARY_PATH: /usr/lib64

Router
# Router template
router:
  ## Profiling related settings
  profiling:
    ## Enable profiling endpoints
    #enabled: true

  ## Corporate proxy related settings
  proxy:
    ## Proxy url for all outgoing http requests
    #httpUrl: ""

    ## Proxy url for all outgoing https requests
    #httpsUrl: ""

    ## List of target hosts to communicate with directly, bypassing the proxy.
    ## "localhost" will always be added to this list automatically.
    #ignoredHosts:
    #- "ignore.me.com"
    #- "ignore.me2.com"

  ## Router entry points
  entrypoints:
    ## The internal port, used by local services to communicate with the router and any other service (local and external)
    #internalPort: 8046

    ## The external port, registered in the service registry, used by external services to communicate with services in this node
    #externalPort: 8082

    ## An internal port used for internal Traefik (and Router) REST API
    #traefikApiPort: 8049

    ## An internal port used for Router's gRPC API
    #grpcPort: 8047

  ## Service registry (Access) communication settings
  serviceRegistry:

    ## Service registry (Access) TLS verification skipped if enabled
    #insecure: false

    ## Service registry (Access) request timeout
    #requestTimeout: 15s

  ## Topology related settings
  topology:
    ## Local topology settings
    local:
      ## On elasticsearch externalize - requiredServiceTypes will be "jfisc,jfisv,jfmc"
      #requiredServiceTypes: "jfesc,jfisc,jfisv,jfmc"

      ## Settings for checking the health of local services
      healthCheck:
        ## Duration between health checks
        #interval: 5s

        ## Health check request timeout
        #requestTimeout: 5s

        ## The number of consecutive successful health checks that must occur before declaring an instance healthy
        #healthyThreshold: 2

        ## The number of consecutive failed health checks that must occur before declaring an instance unhealthy
        #unhealthyThreshold: 2

    ## External topology settings
    external:
      ## Settings for refreshing the router with external topology from the service registry
      refresh:
        ## Refresh interval
        #interval: 3s

        ## The maximum duration a service can be considered as healthy since its last heartbeat
        #maxStaleHeartbeat: 30s

  ## Support bundle aggregation settings
  supportBundle:
    ## The maximum duration support bundle aggregation is allowed before it is automatically cancelled
    #aggregationTimeout: 1h

  ## Logging settings
  logging:
    ## Router log settings
    application:
      ## The log level: error, warning, info, debug, trace
      #level: "info"

      ## The log format: jftext, json
      #format: "jftext"

      ## Whether to include the caller information (runtime frame)
      #caller: false

      ## Whether to print the log also to stdout
      #console: true

      ## Log rotation settings
      rotation:
        #compress: true
        #maxSizeMb: 25
        #maxAgeDays: 0
        #maxFiles: 10

    ## Traefik log settings
    traefik:
      ## The log level: error, warning, info, debug, trace
      #level: "info"

      ## The log format: jftext, json
      #format: "jftext"

      ## Whether to include the caller information (runtime frame)
      #caller: false

      ## Whether to print the log also to stdout
      #console: true

      ## Log rotation settings
      rotation:
        #compress: true
        #maxSizeMb: 25
        #maxAgeDays: 0
        #maxFiles: 10

    ## Request log settings
    request:
      ## If true, request log will contain additional information
      ## This may result in a slight performance overhead
      #verbose: false

      ## Log rotation settings
      rotation:
        #compress: true
        #maxSizeMb: 100
        #maxAgeDays: 0
        #maxFiles: 10

  ## Add any custom environment variables to be passed to this service
  ## Environment variables starting with JF_ are not allowed, will be ignored with a warning if it is added
  env:
    #EXAMPLE_VAR: example-value
    #LD_LIBRARY_PATH: /usr/lib64