3. Setting Up Your Robin Cluster

Before your cluster becomes fully operational, there are additional steps that need to be performed in order to configure Robin correctly.

3.1. Robin license activation

After installing Robin software on any platform, whenever you run a command a notice will appear stating that the Robin license will expire in approximately two days. This is an indication that the license is yet to be activated. In order to avoid a cluster lockdown you can activate your Robin cluster via one of the following methods.

If the license is not activated, your Robin cluster will be locked after the allocated time.

3.1.1. Web license activation

Activate your Robin license by clicking this link: https://get.robin.io/activate. After following the instructions detailed on the website your Robin license should be activated and your cluster ready to use.

Note

You will be asked to provide the Robin cluster ID when activating your license. This can be discovered by running the ‘robin license id’ command via the client or when you are connected to the Robin pod. In addition, you can apply the generated key via the command robin license apply <key>.

3.1.2. CLI license activation

In order to activate your license via the CLI, first register here and retrieve your User ID. Next, run the following command:

# robin license activate <USERID>

This will activate your Robin license and ensure your cluster is ready to use.

Example:

# robin license activate demo1234
    License has been applied successfully

3.2. Robin client

3.2.1. Obtaining Robin Client

You can download the Robin client on your Linux or macOS machine to access your Robin cluster remotely. To retrieve the client binary, issue the following command:

# curl -k https://<master_ip>:<port>/api/v3/robin_server/download?file=robincli&os=<os> -o robin

Note

Depending on your Kubernetese distribution and cloud provider, you may want to set up a Loadbalancer to access the Robin server from outsite. Refer to this section to see how you can set up Loadbalancer specific to your installation. If this is the case, then you have to replace the <master_ip> from the above command with the ip address of the loadbalancer.

Example:

# curl -k 'https://vnode42:29442/api/v3/robin_server/download?file=robincli&os=linux' -o robin
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                Dload  Upload   Total   Spent    Left  Speed
100 10.1M  100 10.1M    0     0  1421k      0  0:00:07  0:00:07 --:--:-- 1483k

# ls -lart
-rw-r--r--    1 demo  staff    10655536 Mar 26 14:12 robin

After running the curl command a file should have been downloaded to your current working directory. Make it an executable and setup the appropriate context based on the type of installation:

Before setting up the context for highly available clusters make sure the robincp_mode config attribute is enabled by logging into the appropriate node and issuing the following command:

# robin config list | grep "robincp_mode"
manager          | robincp_mode                                  | False

If the aformentioned attribute is not enabled, issue the following command:

# robin config update manager robincp_mode True --wait
Job:  163 Name: HostConfigUpdateMulti State: VALIDATED       Error: 0
Job:  163 Name: HostConfigUpdateMulti State: COMPLETED       Error: 0

# robin config list | grep "robincp_mode"
manager          | robincp_mode                                  | True

Once this step is complete, finish setting up the client by issuing the following commands:

# chmod +x robin

# ./robin client add-context <master_ip> --port 29465 --file-port 29465 --event-port 29465 --set-current

Note

The variable master_ip can either be the IP address of your Robin master node or the VIP for HA installations. For more information about client contexts please refer to the documentation here.

Before you can use the CLI you will have to login with the username and password (by default it is admin/Robin123):

# ./robin login <username>

Enter the password when prompted.

3.2.2. Setting Up Load Balancer

Depending on your Kubernetese distribution and cloud provider, you may want to set up a Loadbalancer to access the Robin server from outsite. Refer to this section to see how you can set up Loadbalancer specific to your installation. You can use the Loadbalancer to access the Robin server from the robin client. In this section we will describe how to set up loadbalancers for various deployments.

  • Log into the Openshift Web UI console

  • Go to the “Developer” option in the drop down menu at the top left and click on “+Add”

  • Click on the box saying “Create resources from their YAML or JSON definitions” and Enter the following in to the box that opens up:

apiVersion: v1
kind: Service
metadata:
  name: robin-admin
  namespace: robinio
spec:
  ports:
  - name: rcmserver
    port: 29442
    protocol: TCP
    targetPort: 29442
  - name: rcmwatchdog
    port: 29444
    protocol: TCP
    targetPort: 29444
  selector:
    robin.io/robinrole: master
  type: LoadBalancer
  • Click “Create”

  • Upon success, you will see the created LoadBalancer object. Make a note of the Location string. This is the hostname to plug into the “server” attribute in the entry for your cluster in your Robin CLI config file… Here is an example cluster entry for that file:

"robin-cluster":{
  "last_login":1602002784,
  "version":"5.3.2-3",
  "tenant":"Administrators",
  "server":"af773efdea0da496396e20564ff2fd07-929370758.us-west-1.elb.amazonaws.com",
  "token_timestamp":1602089171,
  "metrics_port":29446,
  "token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0ZW5hbnRfaWQiOjEsInVzZXJfaWQiOjMsImV4cCI6MTYwMjA4OTE3MX0.O98uV_YVRwsxiVhWD1JtmxkGZiqpKlibJrKQocDQEYo",
  "port":29442,
  "watchdog_port":29444,
  "file_server_port":29445,
  "namespace":"t001-u000003",
  "tenants":[
    "Administrators"
  ],
  "log_level":40,
  "event_server_port":29449
},
  • Make sure this cluster is set as the current cluster: “current”:”robin-cluster”

  • After that, you should be able to log in to Robin:

[root@centos-60-120 robin_cluster]# robin login admin
Password:
User admin is logged into Administrators tenant

[root@centos-60-120 robin_cluster]# robin host list
Id           | Hostname                                   | Version | Status | RPool   | LastOpr | Roles | Isol Cores(SHR/DED/Total) | Non-Isol Cores | GPUs | Mem(Free/Alloc/Total) | HDD(#/Alloc/Total) | SSD(#/Alloc/Total) | Pod Usage | Joined Time
-------------+--------------------------------------------+---------+--------+---------+---------+-------+---------------------------+----------------+------+-----------------------+--------------------+--------------------+-----------+----------------------
1601911167:1 | ip-10-0-167-211.us-west-1.compute.internal | 5.3.2-3 | Ready  | default | ONLINE  | M*,S  | 0/0/0                     | 2/20           | 0/0  | 1G/5G/7G              | -/-/-              | 2/5G/400G          | 21/250    | 05 Oct 2020 08:20:07
1601911167:2 | ip-10-0-128-218.us-west-1.compute.internal | 5.3.2-3 | Ready  | default | ONLINE  | S,M   | 0/0/0                     | 3/20           | 0/0  | 1G/6G/7G              | -/-/-              | 2/5G/400G          | 19/250    | 05 Oct 2020 08:20:19
1601911167:3 | ip-10-0-220-43.us-west-1.compute.internal  | 5.3.2-3 | Ready  | default | ONLINE  | M,S   | 0/0/0                     | 2/20           | 0/0  | 0.41G/7G/7G           | -/-/-              | 2/17G/400G         | 26/250    | 05 Oct 2020 08:20:25

[root@centos-60-120 robin_cluster]# robin user list
ID | Username | Full Name     | Email | Tenants        | Current Tenant | Current Role | Current Namespace | Authentication
---+----------+---------------+-------+----------------+----------------+--------------+-------------------+----------------
3  | admin    | Robin Systems |       | Administrators | Administrators | superadmin   | t001-u000003      | local
4  | user1    |               |       | t1             | t1             | user         | t003-u000004      | local
5  | user2    |               |       | Administrators | Administrators | user         | t001-u000005      | local

Note

Please note that you can add the entry for your cluster into any existing Robin config file. If you wish to view the LoadBalancer object again, while still in the Developer section, click on “Search” and then in the drop-down menu, check the box next to “Service” and enter “robin-admin” as the name of the object. This will display the LoadBalancer Service that you just created. Or, if you have a kubeconfig file set up and can access the Kubernetes cluster directly using kubectl or oc, then just put the LoadBalancer definition into a file and do a “kubectl create -f <filename>” to create it.

3.3. Disk Management

ROBIN discovers the disks attached to the kuberenetes nodes and uses them for providing storage to the application.

To discover new disks attached to the hosts, run following command.

$ robin host probe [<hostname>|--all] --rediscover

To verify new disks are discovered, run following command

$ robin disk list

To add new disks to Robin storage, run

$ robin host add-role <hostnames> storage [--disks <disks>]

hostnames: List of comma seperated list of hostnames <Required> disks : List of comma seperated wwn of disks <Optional>. WWNs are listed as part of “robin disk list” output.

If no “–disks” parameters provided, robin will use all the newly discovered disks.

In addition ROBIN makes sure that re-attachable disks (Disks which can be attached to any host eg. SAN/EBS/GCP disks) are always accessible even in the event of kubernetes node failure. When a kuberenetes node goes down, ROBIN detaches the disk from failed node and attaches it to a healthy node so that application data remains accessible.

ROBIN can provision disks in GKE to use for ROBIN CNS. eg. To create 100 GB disk in GKE, run following command

$ robin disk create <hostname> --type <pd-standard | pd-ssd> --size 100

These disks will be attached automatically and auto discovered by ROBIN so they will be ready to use straightaway.

Note

Due to ROBIN’s advanced feature to make sure disks are always accessible, it needs disks permission to be selected while deploying cluster on GKE.

On the Google Anthos platform, you can add disks to cluster VMs from vSphere and ROBIN will automatically use them for storage.

ROBIN can provision disks in AWS to use for ROBIN CNS. eg. To create 100 GB disk in AWS, run following command

$ robin disk create <hostname> --type <gp2 | io1 | st1> --size 100

These disks will be attached automatically to the EC2 instances and auto discovered by ROBIN so they will be ready to use straightaway.

Note

Due to ROBIN’s advanced feature to make sure disks are always accessible, IAM Profiles associated with the host (or permissions granted to a user) must contain all Volume write and list actions.

3.4. User Management

You must be logged into the ROBIN cluster to take advantage of ROBIN CNS data management capabilities. You can log in as the cluster administrator (an admin account is created during installation), or you can log in as a regular user (after the cluster administrator creates a user account for you). This is explained in more detail in the User Management section.

3.5. Importing Namespaces

In order to manage the applications, Robin needs to have access to the namespaces in which applications are created. Run the following command to import namespaces to Robin. More details on Namespaces and commands to manage them can be found here.

$ robin namespace add statefullapps  --import-namespace

$ robin namespace list
+--------------------+----------------------+-------------------+
| Name               | Owner/Tenant         | Primary Namespace |
+--------------------+----------------------+-------------------+
| t001-u000003       | admin/Administrators | True              |
| statefullapps      | admin/Administrators | False             |
+--------------------+----------------------+-------------------+

3.6. Disabling Telemetry

With every installation ROBIN collects usage statistics to improve overall user experience with the product. The telemetry data collected is strictly anonymous and does not contain any hostnames or application names.

Details such as the number of hosts in the ROBIN cluster and their individual configurations (CPU, memory and storage space statistics) are aggregated and collected. In addition information about the PVs and storage classes available on the cluster is saved. In order to disable telemetry data collection, run the following command:

$ robin config update cluster enable_telemetry False