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 client

3.1.1. Local Cluster Access

After you install Robin CNS using the Robin installation script, Robin Client Pod is available as part of the robincli Deployment.

The Client Pod is deployed in the default namespace. It is a non-privileged Pod that shares its name with the overarching Deployment controller.

You can execute into the Client Pod and run Robin CLI commands.

# kubectl get deployments
NAME       READY   UP-TO-DATE   AVAILABLE   AGE
robincli   1/1     1            1           5d2h

# kubectl get pods | grep robincli
robincli-6b7bcf9955-n7xvt   1/1     Running       0               5d2h

# kubectl exec -it robincli-6b7bcf9955-n7xvt -- bash
[robin@robincli-6b7bcf9955-n7xvt ~]$ robin login admin --p Robin123

3.1.2. Remote Access

Robin clusters can be accessed remotely from any Linux or Mac OS clients using the Robin Client. Steps on how to download and setup the Robin Client to enable this type of remote access are detailed below.

3.1.2.1. Step 1 - Set Up LoadBalancer Service

You must set up your loadbalancer before you download the Robin Client and set the context. In order to do so, 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
      labels:
        app.kubernetes.io/instance: robin
        app.kubernetes.io/managed-by: robin.io
        app.kubernetes.io/name: robin
    spec:
      ports:
      - name: rcmserver
        port: 29442
        protocol: TCP
        targetPort: 29442
      - name: rcmwatchdog
        port: 29444
        protocol: TCP
        targetPort: 29444
      - name: rcmevent
        port: 29449
        protocol: TCP
        targetPort: 29449
      - name: rcmfile
        port: 29445
        protocol: TCP
        targetPort: 29445
      - name: rcmhttps
        port: 29443
        protocol: TCP
        targetPort: 29443
      selector:
        app: robin-master
      type: LoadBalancer
    
  3. Create the Service via kubectl.

    # kubectl apply -f lb.yaml
    
  4. Verify that loadbalancer is created 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.1.2.2. Step 2 - Download 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.

  • A Loadbalancer service must be created and setup correctly. 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

Note

The possiible values for the os URL parameter include: linux and mac. Please select the appropriate value for your desired operating system when retrieving the client.

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:

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

3.1.2.3. Step 3 - 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.

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.1.2.4. Step 4 - Verify Robin Cluster access

To verify that access to the specified Robin cluster is enabled via the installed client, run the following command:

# ./robin login <username> --password <password>

3.2. 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.2.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.2.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 <USERID>

--userid <USERID>

User ID generated after registering at https://get.robin.io

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.3. Robin Evaluation License for 90 days

Robin provides a 90-day Evaluation license for Robin CNS by default. After the 90-day Evaluation license ends, contact the Robin team for an extended license.

Note

To avail of the 90-day evaluation license for the spec file-based installations, you must set the deployment source as spec.

Example:

spec:
 image_robin: robineng/robinimg:5.3.16-xxx
 k8s_provider: gke # possible values openshift,eks,gke,aks,iks,rke,upstream
 host_type: gcp # possible values physical,ec2,gcp,azure,ibm,anthos
 namespace: robinio
 source: spec

3.4. Disk Management

Robin discovers the disks attached to Kuberenetes nodes and uses them to provide storage for applications. Detailed below are the various methods on how to ensure storage availability for different Cloud providers.

On Google Cloud Platform, you can attach disks to your instance via the UI or Google 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 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 | custom > --size 100

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

3.5. User Management

You must be logged into the Robin cluster to take advantage of Robin Cloud Native Storage 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.6. 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.7. 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
The 'cluster' attribute 'enable_telemetry' has been updated

3.8. Declarative way to Configure CNS Parameters

Robin CNS supports the declarative way to set and adjust configuration attributes using a ConfigMap named robin-config within the robinio namespace. These attributes enable users to customize the underlying Robin cluster in a way that best suits their needs and environment. Noted below are some of the config attributes that can be updated using the aforementioned ConfigMap alongside details of their functions and their valid values.

Note

If any incorrect or invalid attribute is used in the robin-config ConfigMap, an error message is logged in the server.log file of the robin-master Pod.

3.8.1. Table of Reference

Detailed below are all the configuration sections along with each of their associated attributes. The description, valid values and updatability of each attribute is also provided. Each of the attributes below can be updated via the robin-config ConfigMap or the robin config update command unless otherwise specified.

Note

Any attributes emphasized in bold are not updateable after a Robin cluster is installed.

3.8.1.1. Disk Attributes

Configuration attributes associated with the disk section often relate to or impact the properties of disks registered with the cluster. Shown below are all the relevant attributes for the section.

Note

Each of these attributes are only visible to superadmin users and hence can only be updated by the aforementioned users. They are presented here as a reference.

Attribute

Valid values

Description

maxvolumesperdisk

Any valid integer

Maximum number of volumes that can be provisioned on a disk. Default: 10

maxlatencysensitivevolumesperdisk

Any valid integer

Maximum number of latency sensitive volumes that can be provisioned on a disk. Default: 1

maxthroughputintensivevolumesperdisk

Any valid integer

Maximum number of throughput intensive volumes that can be provisioned on a disk. Default: 1

reattachable

0, 1

Flag that indicates whether or not the present disks are reattachable and thus can be moved from one node to another. Default: 0 (False)

maintenance

0, 1

Flag to enable/disable maintenance mode for disks such that no volumes can be provisioned. Default: 0 (False)

type

‘SSD’, ‘HDD’

Media type of the disks. Default: HDD

Note

The above attributes can only be updated using the robin-config ConfigMap or the robin drive update command.

3.8.1.2. Network File System Attributes

Configuration attributes associated with the nfs section often relate to or impact the configuration of NFS pods which are used to support the creation of ReadWriteMany volumes; details for which can be found here. Shown below are all the relevant attributes for the section.

Note

Each of these attributes are only visible to superadmin users and hence can only be updated by the aforementioned users. They are presented here as a reference.

Attribute

Valid values

Description

max_exports_per_pod

Any valid integer

Maximum exports in a NFS server pod. Default: 8

shared_pod_placement

‘PACK’, ‘SPREAD’

RWX PVC placement on the NFS server pod. Default: PACK

nfs_server_storage_affinity

‘none’, ‘preferred’, ‘required’

NFS server pod placement policy in regards to storage affinity. Default: none

pod_creation_timeout

Any valid integer

Timeout value in seconds for NFS server pod creation. Default: 600 seconds

service_creation_timeout

Any valid integer

Timeout value in seconds for service creation. Default: 60 seconds

failover_enabled

0, 1

Flag to enable/disable failover of NFS server pods. Default: 1 (True)

max_failover_timed_wait

Any valid integer

Timeout value in seconds before spawning another Server Pod Failover Job. Default: 600 seconds

shared_pod_failover_serialized

0, 1

Flag to serialize failover of nfs exports from shared pod. Default: 1 (True)

default_server_type

‘shared’, ‘exclusive’

Default type for NFS server pod. Default: shared.

shared_pod_cpu

Any valid value for CPU resources in Kubernetes

Default CPU requests for shared NFS server pods. Default: 100m

shared_pod_memory

Any valid value for Memory resources in Kubernetes

Default Memory requests for shared NFS server pods. Default: 200Mi

excl_pod_cpu

Any valid value for CPU resources in Kubernetes

Default CPU requests for exclusive NFS server pods. Default: 100m

excl_pod_memory

Any valid value for Memory resources in Kubernetes

Default CPU requests for exclusive NFS server pods. Default: 200Mi

shared_pod_cpu_limit

Any valid value for CPU resources in Kubernetes

Default CPU limits for shared NFS server pods. Not set by default

shared_pod_memory_limit

Any valid value for Memory resources in Kubernetes

Default Memory limits for shared NFS server pods. Not set by default

exclusive_pod_cpu_limit

Any valid value for CPU resources in Kubernetes

Default CPU limits for exclusive NFS server pods. Not set by default

exclusive_pod_memory_limit

Any valid value for Memory resources in Kubernetes

Default CPU limits for exclusive NFS server pods. Not set by default

nfsv4_grace_period

0 - 180

NFSv4 Grace Period. Default 25

nfsv4_lease_lifetime

0 - 120

NFSv4 Lease Lifetime. Default 10

log_file_size_cap

Any valid integer

Max file size for logs before they are rotated. Can be specified in bytes, or use standard notation for kilobytes (K), megabytes (M), and gigabytes (G). Default: 64M

log_files_rotate

Any valid integer

The count of log file archive retention. Default: 10

nfs_server_liveness_probe_failure_threshold

1 - 10

The number of times the nfs server pod can tolerate the error state of ganesha server. Default: 5

nfs_server_pod_liveness_probe_period

30 - 600

Time interval in seconds for probing liveness of the nfs server pod. Default: 30 seconds

nfs_pod_tolerations

Any valid tolerations in the specified format

Tolerations for NFS Server pods in order to match the taints and respective effects already placed on target nodes. The tolerations should be specified in the following format: “key1:effect1,key2:effect2”. Default: None. Note updating this config variable will only affect new NFS pods and not update those already present.

3.8.1.3. Cluster wide Attributes

Configuration attributes associated with the cluster section often relate to or impact the configuration of the entire Robin cluster in a variety of facets. Shown below are all the relevant attributes for the section.

Note

Each of these attributes are only visible to superadmin users and hence can only be updated by the aforementioned users. They are presented here as a reference.

Attribute

Valid values

Description

max_node_count

Any valid integer

Maximum number of nodes that can be part of a cluster. Default: 65535

enable_telemetry

‘True’, ‘False’

Boolean attribute indicating whether or not telemetry data will be sent to the Robin Insight server. Default: False

telemetry_server

Any valid URL

Name and port of the telemetry server. Default: insight.robinsystems.com:443

telemetry_interval

Any valid integer

Interval, in seconds, for collecting telemetry data. Default: 86400

reserved_subnet

Any valid network range

Reserved subnet to be used by Robin. Default: 172.20.0.0

robinds_dir

Any valid file path

Robin daemonset folder to be used during Robin Installation. Default: /home/robinds

robinlog_dir

Any valid file path

Robin log folder to be used during Robin Installation. Default: /home/robinds

robincrash_dir

Any valid file path

Robin crash folder to be used during Robin Installation. Default: /home/robinds

robin_install_dir

Any valid file path

Robin install config folder to be used during Robin Installation. Default: /usr/local/robin

robin_backup_dir

Any valid file path

Robin backup folder to be used during Robin Installation. Default: /etc/robin

ovs_enabled

‘True’, ‘False’

Boolean attribute indicating whether or not OVS is enabled for the cluster. Default: True

kms

‘robin’, ‘google’, ‘k8s’, ‘vault’

Name of key management service. Default: k8s

kms_keyring

Any valid string

Cryptographic key ring for specifed key management service. Default: k8skeyring

kms_version

Any valid string

Robin key management service version. Default: v2

disable_calico

‘True’, ‘False’

Boolean attribute indicating whether or not the Calico CNI Plugin should be disabled. Default: False

disable_isolated_ip_pools

‘True’, ‘False’

Boolean attribute indicating whether or not the Robin Loopback CNI Plugin should be disabled. Default: False

colocate_rcm_k8s

‘True’, ‘False’

Boolean attribute indicating whether or not it should be enforced that the Kubernetes API server and Robin server exist on the same node. Default: True

robin_managed_k8s

‘True’, ‘False’

Boolean attribute indicating whether or not the current cluster was installed with Robin managed Kubernetes. Default: True

k8s_pod_cidr

Any valid network range

Kubernetes default Pod CIDR subnet. Default: 172.21.0.0/16

k8s_cluster_cidr

Any valid network range

Kubernetes default Cluster CIDR subnet. Default: 172.19.0.0/16

external_routes

Any valid network range

Comma separated External routes to be added for EC2 deployments. Not set by default

network_policy_scope

‘allow-all’, ‘namespace’, ‘tenant’, ‘user’, ‘app’, ‘deny-all’

Kubernetes Ingress/Egress Network Policy Scope when creating applications. Default: allow-all

k8s_provider

‘robin’, ‘gke’, ‘openshift’, ‘aks’, ‘iks’, ‘eks’, ‘rke’, ‘upstream’

External Kubernetes Provider. Default: robin

deployment_source

‘installer’, ‘operatorhub’, ‘spec’, ‘gcpmarkeplace’, ‘marketplace’, ‘express’, ‘enterprise’

Source of deployment. Default: installer

csi_storage_affinity

‘True’, ‘False’

Boolean attribute indicating whether or not compute-storage affinity should be enabled for Kubernetes applications. Default: True

csi_plugin_name

‘robin’, ‘robin-0-3’

Robin storage class name. Default: robin

marketplace

‘True’, ‘False’

Boolean attribute indicating whether or not the cluster was created via the Google Marketplace. Default: False

snapshot_space_limit

Any valid integer

Default snapshot space limit in bytes when creating application. A snapshot space limit of 0 indicates no restrictions on the usage of snapshots. Default: 0

robin_ns

Any valid namespace

Namespace in which all Robin related Kubernetes objects are spawned. Default: robinio

ignored_phases

Any valid string

Comma seperated string of Kubernetes Pod phases to ignore when calculating Pod resource usage. Default: failed

update_coredns

‘True’, ‘False’

Boolean attribute indicating whether or not DNS resolution for nodes is to be provided using Core DNS. Default: False

update_etc_hosts

‘True’, ‘False’

Boolean attribute indicating whether or not DNS resolution is not supported across nodes and /etc/hosts should be updated. Default: False

ip_version

4, 6

IP version to be used for the cluster. Default is 4

remove_taints

‘True’, ‘False’

Boolean attribute indicating whether or not taints have been removed from Kubernetes Master nodes. Default: True

cluster_domain

Any valid string

Kubernetes cluster domain. Default: cluster.local

cluster_name

Any valid string

Custom cluster name. Default: default

disable_scale_hpa

‘True’, ‘False’

Boolean attribute indicating whether or not to disable scale in/out operations for applications when HPA is enabled. Default: True

disable_hpa

‘True’, ‘False’

Boolean attribute indicating whether or not to disable the HPA feature. Default: False

max_inst_per_role

Any valid integer

Maximum number of instances that can be part of a role. Default: 5000

enable_nmap

‘True’, ‘False’

Boolean attribute indicating whether or not to enable a NMap check to avoid IP address collisions. Default: False

enable_vdi

‘True’, ‘False’

Boolean attribute indicating whether or not to enable the experimental VDI feature. Default: False

license_server_url

Any valid URL

URL of License Server to use when activating license. Default: https://get.robin.io

license_external_https_proxy

Any valid URL

Address of https proxy for external connection to license server in the format IP:Port. It is not set by default

license_renew_period

Any valid integer

Number of days before license expiry to attempt automatic renewal. If the value is set to a negative number the feature is disabled. Default: -1

enable_license_expiration_audit_schedule

‘True’, ‘False’

Boolean attribute indicating whether or not to enable auditing of the Robin cluster license. Default: True

license_expiry_remainder_period

Any valid integer

Number of days before license expiry for the Robin license expiry audit schedule to warn cluster users. Default: 7

k8s_cluster_tenant_enabled

‘True’, ‘False’

Boolean attribute indicating whether or not the ‘K8sCluster’ tenant is enabled. Default: False

robin_default_ippool_name

Any valid IP-Pool

Name to use for the Robin Calico default IP pool. Default: robin-default

k8s_cert_expiryalert_days

Any valid integer

Number of days before the expiry of the Kubernetes certificate to alert the user. Default: 30

pod_ready_timeout

Any valid integer

Time in seconds to wait for pod to go into ready state. Default: 900 seconds

loadbalancer_supported

‘True’, ‘False’

Boolean attribute indicating whether or not the current cluster environment supports loadbalancers. Default: False

default_csi_respool

Any valid resource pool

Default resource pool to use for external PVCs. Default: default

default_pod_respool

Any valid resource pool

Default resource pool to use when planning for compute-storage affinity. Default: default

default_pod_ippool

Any valid IP-Pool

Default IP-Pool name to use for network planning. Default: nonrobin-default

reserved_ephemeral_pods_count

Any valid integer

Number of pods to reserve for application hook scripts that run as Kubernetes Jobs. Default: 10

rcm_cluster_ip

Any valid IP Address

Robin Master Cluster IP. Not set by default

dns_cluster_ip

Any valid IP Address

Core DNS Cluster IP. Not set by default

elb_integration

‘True’, ‘False’

Boolean attribute indicating whether or not there should ELB integration when creating LoadBalancer services. Default: False

enable_volume_jobs

‘True’, ‘False’

Boolean attribute indicating whether or not volume operations should be performed in the context of a Job. Default: True

calico_backend

‘bgp’, ‘vxlan’

Name of Calico backend. Default: bgp

reserved_net_enabled

‘True’, ‘False’

Boolean attribute indicating whether or not reserved networks should be configured if needed for a Pod. Default: False

upgrade_checks_timeout

Any valid integer

Time in seconds to wait for Robin nodes to move to Ready state post upgrade. Default: 1800 seconds

create_user_ns_tenant_isolation_nw_policies

‘True’, ‘False’

Boolean attribute indicating whether or not Kubernetes Ingress/Egress Network policies should be created during user addition. Default: False

custom_theme

Any valid integer

The file object ID of the tarball associated with the custom theme. This is not set by default

max_ips_per_range

Any valid integer

Maximum number of IPs that can be configured per range, should be a power of 2. Default: 8192 (8k)

disable_ip_alloc_in_ipam

‘True’, ‘False’

Boolean attribute indicating whether or not to allocate IP Addresses via Robin IPAM. Default: True

enable_sriov_pods_bounce

‘True’, ‘False’

Boolean attribute indicating whether or not to bounce the pods of an SR-IOV based application when a VF driver is incorrectly assigned. Default: True

sriov_pods_bounce_timeout

Any valid integer

Time in seconds the determines the length of the period in which the pods of an SR-IOV based application with incorrectly assigned VF drivers can be bounced. Default: 60 seconds

best_effort_qos

‘True’, ‘False’

Boolean attribute indicating whether or not to set CPU requests to O for Best-Effort Pods on clusters with isolated cores. Default: False

single_node_cluster

‘True’, ‘False’

Boolean attribute indicating whether or not a cluster can support multiple nodes. Default: False

zerotrust

‘True’, ‘False’

Boolean attribute indicating whether or not a cluster is configured to block all ports except for the SSH port. Default: False

3.8.1.4. Server Attributes

Configuration attributes associated with the server section often relate to or impact the configuration of the Robin server itself and the actions it takes with regards to orchestration. Shown below are all the relevant attributes for the section.

Note

Each of these attributes are only visible to superadmin users and hence can only be updated by the aforementioned users. They are presented here as a reference.

Attribute

Valid values

Description

hostname

Any valid FQDN

The hostname of the Robin server

rest_server

Any valid FQDN

The fully qualified hostname of the Robin rest server. Default: master.robin-server.service.robin

rest_port

Any valid integer

The port where rest connections are made to the Robin server. Default: 29442

storage_task_purge_age

Any valid integer

The age, in seconds, of tasks that should be purged. Default: 7776000 (90 days)

job_archive_cron

Any valid CRON string

CRON string representing the time at which the job archival schedule will run. Default: 0 0 * * * (every day at midnight)

job_archive_age

Any valid integer

The age, in seconds, at which jobs should be purged. Default: 86400 (1 day)

job_purge_max_count

Any valid integer

Number of jobs to purge in order to avoid overloading the DB and filesystem. Default: 100,000

job_purge_cron

Any valid CRON string

CRON string representing the time at which the job purge schedule will run. Default: 30 0 * * * (every day at 30 minutes past midnight)

job_purge_age

Any valid integer

The age, in seconds, at which successfully completed jobs should be purged. Default: 1209600 (2 weeks)

job_purge_failed_age

Any valid integer

The age, in seconds, at which completed jobs, which have failed, should be purged. Default: 2419200 (4 weeks)

job_purge_maintenance_age

Any valid integer

The age, in seconds, at which maintenance jobs should be purged. Default: 604800 (1 week)

job_purge_maintenance_jtypes

Any valid string

Comma seperated list of job types to be referenced as maintenance jobs. Default: ‘JobArchive,JobPurge’

job_cleanup_cron

Any valid CRON string

CRON string representing the time at which the schedule for cleaning up stale job logs will run. Default: 0 1 1 * * (1st of every month at 1AM)

image_prune_cron

Any valid CRON string

CRON string representing the time at which the schedule for pruning unused images will run. Default: 0 0 * * * (every day at midnight)

workflow_execution_type

‘sync’, ‘async’

Type of workflow execution. Default: async

enable_workflow_debugging

‘True’, ‘False’

Boolean attribute to indicate whether or not to enable workflow debugging. Default: False

insight_cron

Any valid CRON string

CRON string representing the time at which the schedule for producing an insight report will run. Default: 0 */8 * * * (Every 8 hours)

enable_image_prune_schedule

‘True’, ‘False’

Boolean attribute to indicate whether or not to enable the schedule to prune unused images from hosts. Default: False

log_level

‘DEBUG’, ‘INFO’, ‘WARNING’, ‘ERROR’, ‘CRITICAL’

The log level for the Robin server. Default: DEBUG

log_file_size

Any integer value

The log file size for Robin server logs in MB. Default: 10

log_filter_file

Any valid file path

Path to the log filter file. Not set by default

log_retention

Any valid integer

The count of log file archive retention. Default: 9

log_retention

Any valid integer

The number of log records per node to hold in memory before flushing. Default: 100

storage_provision_factor

Any valid float

The factor used to over or under provision storage per disk. A value of 1 means that the exact amount of storage for a disk will be used. Default: 0.8

storage_alloc_policy

‘PACK’, ‘SPREAD’

The storage allocation policy to enforce how volumes are allocated to disks. Default: SPREAD

compute_alloc_policy

‘PACK’, ‘SPREAD’

The compute allocation policy to enforce how vnodes are allocated to nodes. Default: SPREAD

compute_resource_sort_order

‘PODS’, ‘MEMORY’, ‘CPU’

The compute resource sort order will determine which attribute of compute resources will be prioritized. A comma seperated string of resources in the necessary priority order must be given. Default: CPU,MEMORY,PODS

allow_latency_through_vols_on_disk

‘True’, ‘False’

Boolean attribute to indicate whether or not to allow latency sensitive volumes and throughput volumes to go on the same disk. Default: False

voltype_disk_reuse

‘True’, ‘False’

Boolean attribute to indicate whether or not volumes of a volume type gets gets exclusive disk sets. This is not a strict enforement, rather a guideline. Default: True

auto_move_disks

‘True’, ‘False’

Boolean attribute to indicate whether or not to enable automatic attach/detach of disks on cloud based clusters when nodes become unreachable. Default: True

allow_docker_rootfs

‘True’, ‘False’

Boolean attribute to indicate whether or not to enable automatic attach/detach of disks on cloud based clusters when nodes become unreachable. Default: True

allow_docker_rootfs

‘True’, ‘False’

Boolean attribute to indicate whether or not the root filesystem can be used by docker instances. Default: True

autopilot

‘True’, ‘False’

Boolean attribute to indicate whether or not the autopilot module should be engaged. Default: True

token_timeout

Any valid integer

The timeout, in hours, for a user login session. Default: 24

enable_apaudit

‘True’, ‘False’

Boolean attribute to indicate whether or not autopilot auditing should be enabled. Default: True

restart_burst_limit

Any valid integer

The number of failed restart attempts (within the burst interval) before the Robin server marks instances as ADMIN_WAIT. Default: 15

restart_burst_interval

Any valid integer

The number of seconds that the restart_burst_limit is tolerated. Default: 600

log_path

Any valid file path

The path where collected log files of the system will be stored. Default: /var/log/robin/log_collect

ssl_cert_file

Any valid file path

The path at which the SSL certificate file is located. Default: /etc/robin/rcm/ssl/robin_ssl.crt

ssl_key_file

Any valid file path

The path at which the SSL key file is located. Default: /etc/robin/rcm/ssl/robin_ssl.key

web_token_secret_key

Any valid string

The secret key used to sign web tokens. Not set by default

portmapping

‘True’, ‘False’

Boolean attribute to indicate whether or not portmapping should be enabled. Default: False

auto_add_storage_disks

‘True’, ‘False’

Boolean attribute to indicate whether or not automatic host discovery and consequent initialization of disks should be enabled. Default: False

storage_providers

Any valid string

Comma seperated list of all storage providers. Default: ‘das,ontap’

storage_provider

‘robin’, ‘ontap’

Selected storage provider. Default: ontap

disk_used_space_threshold

0 - 100

Percentage of disks space that needs to be used in order to trigger an alert. Default: 80%

disk_used_space_high_watermark

0 - 100

Percentage of disks space that needs to be used in order to trigger a rebalance operation such that usage is reduced. Default: 90%

disk_used_space_low_watermark

0 - 100

Target percentage of disk space to be used after rebalance operations are complete. Default: 80%

slice_segcount_threshold

Any valid integer

Value that segment count per slice per volume has to reach in order to trigger an alert. Default: 64

create_k8s_objects

‘True’, ‘False’

Boolean attribute to indicate whether or not Kubernetes objects can be created during bundle application hook executions. Default: True

ext_auth_receive_timeout

Any valid integer

Timeout, in seconds, to recieve a response from the external auth. Default: 10

ext_auth_connect_timeout

Any valid integer

Timeout, in seconds, to connect to external auth. Default: 10

enable_rcm_metrics

‘True’, ‘False’

Boolean attribute to indicate whether or not to collect Robin server metrics for Prometheus scraping. Default: True

chargeback_track_k8s_resusage

‘True’, ‘False’

Boolean attribute to indicate whether or not to enable the chargeback feature for applications that are not Robin Bundle based. Default: False

max_jobmgr_planning_threads

1 - 40

The maximum number of job worker threads that can pull from the planning queue

limitrange_enabled

‘True’, ‘False’

Boolean attribute indicating whether or not to enable a limit range for Ephemeral Storage. Default: False

limitrange_limit

Any valid storage limit value

Value for the default ephemeral-storage limit within LimitRange policy. Default: 1GB (examples: 2GB, 250MB)

limitrange_interval

Any valid integer

Time in seconds the LimitRange schedule periodically waits for before checking for namespaces that do not have a LimitRange applied to them. Default: 3600s

limitrange_type

‘Container’

The type of object the ephemeral-storage limit within the LimitRange policy will be applied to. Default: Container

skip_namespace_for_limitrange

Any valid namespace(s)

Namespaces that must be skipped when creating a Kubernetes Limit Range. Format is comma separated values. Default: robinio,kube-system. Note when updating do not remove the kube-system or robinio namespaces from the input string

3.8.2. Sample ConfigMap file

Detailed below is an example ConfigMap definition showcasing how to specify different sections and their respective attributes. These values can be edited as needed after the creation of the robin-config ConfigMap.

apiVersion: v1
data:
  nfs: |
    shared_pod_cpu=250m
  server: |
    storage_provision_factor=0.8
  disk : |
    maxvolumesperdisk=100
    maxlatencysensitivevolumesperdisk=20
    maxthroughputintensivevolumesperdisk=30
kind: ConfigMap
metadata:
  labels:
    app.kubernetes.io/instance: robin
    app.kubernetes.io/managed-by: robin.io
    app.kubernetes.io/name: robin
  name: robin-config
  namespace: robinio