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

Robin Client enables you to access the Robin cluster remotely from your client Linux or Mac laptops. You can download the Robin Client from the Robin Cluster.

Note

You must set up a Loadbalancer before installing a Robin client on your local laptop if you are using Robin Cloud Native Storage.

3.2.2. Setting Up Load Balancer

You must set up your loadbalancer before you download the Robin Client and setting the context.

To set up the load balancer, run the following steps:

  1. Create a YAML file.

    # vi lb.yaml
    
  2. Copy and paste the following YAML definition of a Service into the file created above.

    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
    
  3. Create the Service via kubectl.

    # kubectl apply -f lb.yaml
    
  4. Verify that loadbalancer is set by running the following command:

    # kubectl get services -A | grep -1 lb
    

    The output should be similar to the following:

    # kubectl get services -A | grep robin-master
    
    kube-system  node-local-dns                       ClusterIP      172.21.158.45    <none>                              53/UDP,53/TCP                                                                                         27h
    kube-system  public-crc0hmjr7f0mln1bhhsnm0        LoadBalancer   172.21.104.158   2261b520-eu-de.lb.appdomain.cloud   80:31042/TCP,443:31778/TCP                                                                            27h
    robinio      csi-attacher-robin                   ClusterIP      172.21.156.151   <none>                              12345/TCP                                                                                             141m
    --
    robinio      csi-snapshotter-robin                ClusterIP      172.21.63.185    <none>                              12345/TCP                                                                                             141m
    robinio      robin-admin                          LoadBalancer   172.21.46.14     8ebbd553-eu-de.lb.appdomain.cloud   29442:31294/TCP,29444:31877/TCP                                                                       2m47s
    robinio      robin-master                         ClusterIP      172.21.212.37    <none>                              29442/TCP,29449/TCP,29445/TCP,29466/TCP,29467/TCP,29458/TCP,29451/TCP,                                141m
    

3.2.3. Downloading Robin Client

You need to download the Robin client to access Robin Cluster from your Linux or Mac laptop.

Prerequisites

  • You must have your master cluster IP address to download Robin Client.

  • If you are running Cloud Native Storage, you must first set up the Loadbalancer. For more information, review the section detailed here.

Run the following command to download and set up Robin Client:

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

Note

If you are running Cloud Native Storage, you must use the IP address of the loadbalancer in place of the <master_ip> variable. Refer to this section to see how you can set up Loadbalancer specific to your installation.

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:

3.2.4. Accessing Robin Cluster Using Robin Client

The Robin Client enables you to access your Robin Cluster.

Prerequisite

  • The Robin Client should be installed on your Linux or Mac machine.

The following are the default credentials for the Robin Cluster:

  • Username: admin

  • Password: Robin123

To access the Robin cluster using the client, run the following command:

# ./robin login <username>

Enter the password when prompted.

3.2.5. Setting Context for Robin Client

Setting context is directing your client to access which Robin cluster when you run any command from the Robin client on your local laptop.

Note

For external access to highly available (HA) Robin Cloud Native Platform clusters, the robincp_mode attribute must be enabled. In order to verify its status, run the following command: robin config list | grep "robincp_mode. In addition, in order to enable the attribute issue the following command: # robin config update manager robincp_mode True

After you download and install the Robin client, you must set the context for your client. Issue the following command to do so:

# chmod +x robin
# ./robin client add-context <loadbalancer_ip> --port <port number> --file-port <port number> --event-port <port number> --set-current

Note

The variable loadbalancer_ip can also be the IP address of your Robin master node.

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.

On Google Cloud Platform, you can attach disks to your instance via the UI or Google APIs and have them available for use by Robin by running the below command:

$ robin host probe <hostname> --rediscover

On the other hand you can utilize Robin to provision disks in GCP to use for application deployment. To create 100 GB disk in GCP, 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 the manage disks permission to be selected while deploying cluster on GCP.

On the Google Anthos platform, you can add disks to cluster VMs from vSphere and have them discovered for use by Robin by running the below command:

$ robin host probe <hostname> --rediscover

To verify the necessary disks are discovered, run the following command:

$ robin disk list

In order to initialize the disks so they can be utilized, run the following command:

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

Note

The --disks paramater is optional, and if no disks are provided then all newly discovered disks will be initialized.

On the other hand you can utilize Robin to provision virtual disks to use for application deployment. To create 100 GB disk for Anthos, run following command:

$ robin disk create <hostname> --type independent-persistent --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 credentials, provided via Kubernetes secret, to have all cluster and disk level API privileges.

On AWS, you can attach disks to your EC2 instance via the UI or AWS CLI/APIs and have them discovered for use by Robin by running the below command:

$ robin host probe <hostname> --rediscover

To verify the necessary disks are discovered, run the following command:

$ robin disk list

In order to initialize the disks so they can be utilized, run the following command:

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

Note

The --disks paramater is optional, and if no disks are provided then all newly discovered disks will be initialized.

On the other hand you can utilize Robin to provision disks in AWS to use for application deployment. 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.

On IBM Cloud Platform, you can create and attach disks to your instance via the UI or IBM Cloud APIs and have them disco for use by Robin by running the below command:

$ robin host probe <hostname> --rediscover

To verify the necessary disks are discovered, run the following command:

$ robin disk list

In order to initialize the disks so they can be utilized, run the following command:

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

Note

The --disks paramater is optional, and if no disks are provided then all newly discovered disks will be initialized.

Alternatively you can utilize Robin utility to provision and attach disks in IBM Cloud to use for application deployment. To create 100 GB disk in IBM Cloud, run following command:

$ robin disk create <hostname> --type <general-purpose | 5iops-tier | 3iops-tier | custom > --size 100

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

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
Namespace 'statefullapps' has been added for user 'admin' in tenant 'Administrators'

$ 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