Table of Contents
This helm chart is designed to provide everything you need to get ClusterControl running in a vanila Kubernetes cluster. This includes dependencies like:
- Ingress-Nginx Controller
- MySQL Operator
- VictoriaMetrics Operator
If you do not wish to install any of those, see Helm chart dependencies.
Installation
1. Add a helm chart repository with the following commands:
helm repo add s9s https://severalnines.github.io/helm-charts/
helm repo update
2. It’s recommended to create a namespace for ClusterControl. It’s also required to run in a custom namespace (not default) when using mysql-operator:
kubectl create ns clustercontrol
kubectl config set-context --current --namespace=clustercontrol
3. Install ClusterControl using helm:
helm install clustercontrol s9s/clustercontrol
The installation above will generate an example SSH key for you to use to access your database nodes. However, you can use your own SSH key as described below.
Providing your own SSH keys for ClusterControl to use
ClusterControl provides an example SSH key for you to use, however, you should provide your SSH keys for ClusterControl to use and connect to your target machines. These should already be configured on the target server’s authorized_keys
.
1. Create k8s secrets with your SSH keys:
kubectl create secret generic my-ssh-keys --from-file=key1=/path/to/my/.ssh/id_rsa
key1
is the filename of your SSH key in ClusterControl – this will be created under /root/.ssh-keys-user
You can use multiple --from-file
– be sure to provide unique key names – key1
, key2
, key3
2. Install or upgrade ClusterControl by providing cmon.sshKeysSecretName
value with our secret name created above:
helm upgrade --install clustercontrol s9s/clustercontrol --set cmon.sshKeysSecretName=my-ssh-keys
Custom configuration via values.yaml
To create your own override file, export it from Helm using the show command:
helm show values s9s/clustercontrol > values.yaml
Look at the generated values.yaml
and customize your configuration here. To install or upgrade using your custom values.yaml
, include the override file with the -f
flag:
helm install clustercontrol s9s/clustercontrol -f values.yaml
Notes
- CMON API is accessible within the cluster via cmon-master:9501
- ClusterControl V2 is accessible within the cluster via cmon-master:3000
- We highly recommend ingress as ClusterControl V2 requires cmon API to be exposed and available externally.
Helm chart dependencies
Oracle MySQL Operator or NGINX ingress controller
If you already have Oracle MySQL Operator or NGINX ingress controller installed, you can set the following flags:
helm install clustercontrol s9s/clustercontrol --debug --set fqdn=clustercontrol.example.com --set installMysqlOperator=false --set ingressController.enabled=false
- oracle-mysql-operator
- Oracle MySQL operator is required for running the MySQL database within the Kubernetes cluster.
- You can disable this by setting:
installMysqlOperator: false
- oracle-mysql-innodbcluster
- A MySQL InnoDB Cluster is required for ClusterControl.
- You must provide a different MySQL/MariaDB for ClusterControl to use. Please refer to the official Helm chart documentation for MySQL InnoDB Cluster.
- You can disable this by setting:
createDatabases: false
- nginx-ingress-controller
- An ingress controller to access ClusterControl.
- For more information, please refer to the official Helm chart documentation for the NGINX-Ingress Controller.
- If you already have an ingress controller installed or wish to use a different one, you can disable this by:
ingressController:
enabled: false
VictoriaMetrics or other Prometheus-compatible monitoring
If you wish to use your VictoriaMetrics or other Prometheus-compatible monitoring systems, please refer to victoria-metrics-single parameters. These defaults provide a minimal need for ClusterControl metrics and dashboards to work. Feel free to adjust as needed, however, keep in mind the required labels annotations, and service discovery. If you already have your own VictoriaMetrics or Prometheus cluster and don’t want to install this, you can disable it by setting the following inside values.yaml
:
prometheusHostname: my-prometheus-server
monitoring:
enabled: false