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:
Create a YAML file.
# vi lb.yaml
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
Create the Service via
kubectl
.# kubectl apply -f lb.yaml
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>
|
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