Series
This is part of a series of JFrog blogs that will help guide you through installing their new Unified Platform.
General
https://github.com/jfrog/charts/tree/master/stable/mission-control
Add repo
helm repo add jfrog https://charts.jfrog.io
Update repo
helm repo update
Important: To install Mission Control 4.x, you must first install JFrog Artifactory 7.x.
Join Key & JFrog URL
In order to install Mission Control, you will need at least one Join Key and JFrog URL from the Artifactory installation.
Go to Artifactory.
Security → Settings
Under Connection details, enter your password and click Unlock.
Copy the Join Key.
You should be using the same join key as Artifactroy HA. In my case, the secret has already been generated within the same namespace, so there is no reason for me to create another one.
Helm
--set missionControl.joinKeySecretName=artifactory-ha-join-key \
--set missionControl.jfrogUrl=https://yourdomain.com \
Google SQL
Create a Google PostgreSQL 9.6 database with a user and database named mission-control.
As of writing this post, I had to run the following against the database. This however should be ran automatically from an init container during iinstallation.
I ran the SQL commands against the database by simply creating a centos pod and installing postgresql.
Create centos pod and connect to it
kubectl run -it centos --image=centos --restart=Never --rm -- sh
Install postgresql and assign variables.
yum -y install postgresql DB_HOST="[DATABASE_IP]" DB_PORT="5432"
DB_USER="mission-control"
DATABASE="mission-control"
Connect to the database.
psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DATABASE
Run the following commands against the database.
CREATE SCHEMA IF NOT EXISTS jfmc_server AUTHORIZATION "mission-control";
CREATE SCHEMA IF NOT EXISTS insight_executor AUTHORIZATION "mission-control";
CREATE SCHEMA IF NOT EXISTS insight_server AUTHORIZATION "mission-control";
CREATE SCHEMA IF NOT EXISTS insight_scheduler AUTHORIZATION "mission-control";
GRANT ALL ON SCHEMA jfmc_server TO "mission-control";
GRANT ALL ON SCHEMA insight_scheduler TO "mission-control";
GRANT ALL ON SCHEMA insight_server TO "mission-control";
GRANT ALL ON SCHEMA insight_executor TO "mission-control";
Create database secret
DB_USER=mission-control
DB_PASSWORD='[DATABABASE_PASSWORD]' DB_URL='jdbc:postgresql://[DATABASE_IP]:5432/mission-control' DB_HOST=[DATABASE_IP]
DB_PORT=5432
Helm
--set postgresql.enabled=false \
--set database.user=${DB_USER} \
--set database.password=${DB_PASSWORD} \
--set database.host=${DB_HOST} \
--set database.port=${DB_PORT} \
--set database.url=${DB_URL} \
Master Key
Create Master Key
export MASTER_KEY=$(openssl rand -hex 32)
Create secret
kubectl create secret generic mission-control-master-key \
--from-literal=master-key=${MASTER_KEY} \
-n jfrog
Replica count
Helm
--set replicaCount=2 \
Resources & Limits
Add recommended resources and limits
I’m using the values-large.yaml option as the recommended resources and limits. You can choose from values-small.yaml, values-medium.yaml or values-large.yaml.
Download values-large.yaml.
wget https://raw.githubusercontent.com/jfrog/charts/master/stable/mission-control/values-large.yaml
Helm
-f values-large.yaml
Elasticsearch
Option 1 – Use built-in elasticsearch
In this case, there is no additional options needed.
Option 2 – Use Bitnami elasticsearch
I am using an external Elasticsearch. Check out my Bitnami Elasticsearch blog to set it up.
Helm
ES_URL=http://elasticsearch-coordinating-only:9200
--set elasticsearch.enabled=false \
--set elasticsearch.url=$ES_URL \
--set elasticsearch.username=admin \
--set elasticsearch.password=admin \
Install
helm install mission-control \
--set missionControl.joinKeySecretName=artifactory-ha-join-key \
--set missionControl.jfrogUrl=https://yourdomain.com \
--set postgresql.enabled=false \
--set database.type=postgresql \
--set database.user=mission-control \
--set database.password=vgexCuqjKFHH9dQty \
--set database.url=jdbc:postgresql://[DATABASE_IP]:5432/mission-control \
--set elasticsearch.enabled=false \
--set elasticsearch.url=${ES_URL} \
--set elasticsearch.username=${ES_USERNAME} \
--set elasticsearch.password=${ES_PASSWORD} \
--set missionControl.masterKeySecretName=mission-control-master-key \
--set replicaCount=2 \
-f values-large.yaml \
--version 3.4.2 \
-n jfrog \
jfrog/mission-control
Connect
Connect to Artifactory (unified UI) using yourdomain.com and view Mission Control.
Applications → Dashboard → Topology
Bucket License
Once you’ve installed Mission Control, add your bucket licenses.
Administration → Licenses → + Add New Bucket
Add New Bucket and add your license, then click Attach License from the drop-down.
This will attach a license to each instance.
Uninstall
helm uninstall mission-control -n jfrog && sleep 90 && kubectl delete pvc -l app=mission-control -n jfrog
Delete SQL database.
gcloud sql instances delete [INSTANCE_NAME]