***************************** 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. ============ Robin client ============ --------------------- 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. .. code-block:: text # 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 ------------- 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. 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. .. code-block:: text # vi lb.yaml 2. Copy and paste the following YAML definition of a Service into the file created above. .. code-block:: yaml 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``. .. code-block:: text # kubectl apply -f lb.yaml 4. Verify that loadbalancer is created by running the following command: .. code-block:: text # kubectl get services -A | grep -1 lb The output should be similar to the following: .. code-block:: text # kubectl get services -A | grep robin-master kube-system node-local-dns ClusterIP 172.21.158.45 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 12345/TCP 141m -- robinio csi-snapshotter-robin ClusterIP 172.21.63.185 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 29442/TCP,29449/TCP,29445/TCP,29466/TCP,29467/TCP,29458/TCP,29451/TCP, 141m 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: .. code-block:: text # curl -k https://:/api/v3/robin_server/download?file=robincli&os= -o robin .. Note:: If you are running Cloud Native Storage, you must use the IP address of the loadbalancer in place of the ```` variable. Refer to this `section `_ to see how you can set up Loadbalancer specific to your installation. **Example** .. code-block:: text # 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: .. code-block:: text # 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 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: .. code-block:: text # chmod +x robin # ./robin client add-context --port --file-port --event-port --set-current .. Note:: The variable ``loadbalancer_ip`` can also be the IP address of your Robin master node. 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: .. code-block:: text # ./robin login --password ======================== 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. ---------------------- 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 ``. ---------------------- 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: .. code-block:: text # 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**: .. code-block:: text # robin license activate demo1234 License has been applied successfully ===================================== 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:** .. code-block:: text 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 =============== 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. .. tabs:: .. tab:: GCP 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: .. code-block:: text # robin host probe --rediscover To verify the necessary disks are discovered, run the following command: .. code-block:: text # robin disk list In order to initialize the disks so they can be utilized, run the following command: .. code-block:: text # robin host add-role storage [--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: .. code-block:: text # robin disk create --type --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. .. tab:: Google Anthos 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: .. code-block:: text # robin host probe --rediscover To verify the necessary disks are discovered, run the following command: .. code-block:: text # robin disk list In order to initialize the disks so they can be utilized, run the following command: .. code-block:: text # robin host add-role storage [--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: .. code-block:: text # robin disk create --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. .. tab:: AWS 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: .. code-block:: text # robin host probe --rediscover To verify the necessary disks are discovered, run the following command: .. code-block:: text # robin disk list In order to initialize the disks so they can be utilized, run the following command: .. code-block:: text # robin host add-role storage [--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: .. code-block:: text # robin disk create --type --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. .. tab:: IBM 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: .. code-block:: text # robin host probe --rediscover To verify the necessary disks are discovered, run the following command: .. code-block:: text # robin disk list In order to initialize the disks so they can be utilized, run the following command: .. code-block:: text # robin host add-role storage [--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: .. code-block:: text # robin disk create --type --size 100 These disks will be attached automatically and auto discovered by Robin so they will be ready to use straightaway. =============== 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 :ref:`UserManagement` section. ========================= 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 `_. .. code-block:: text # 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 | +--------------------+----------------------+-------------------+ ====================== 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: .. code-block:: text # robin config update cluster enable_telemetry False The 'cluster' attribute 'enable_telemetry' has been updated ============================================ 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. ----------------------- 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. 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. 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. ================================================ =================================================== ================= 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 ============================================ =============================================================================================== ================= 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 allocation_module Any valid module path The python path for the class that implements the Allocator. Default: robin.rcm.server.resmgr.workload_storage_allocator.WorkloadAllocator 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 ================================================ =================================================== ================= ----------------------- 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. .. code-block:: YAML 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