Cluster configuration with command-line flags

To install the permanent management cluster in the console, run ./shtil-2.13.1 install INFRASTRUCTURE-PROVIDER-TYPE, substituting your own parameter values.

Parameters may differ depending on the provider type. Common installation parameters for any provider type are listed below. Parameters and command examples:

Common installation parameters

Parameters for installation commands with any provider type
ParameterRequiredDescription
-a, --api-endpoint [string]Yes, for all providers except OpenStack/VK Cloud/SelectelManagement cluster API server address (IP or FQDN without port or protocol, for example, 192.168.1.100)
--provider-name [string]NoProvider instance name (default “cluster-management-provider”)
--cluster-name [string]NoCluster name (default “cluster-management”)
--pod-subnet [string]NoPod subnet in CIDR format (default “172.16.0.0/16”)
--service-subnet [string]NoService subnet in CIDR format (default “10.96.0.0/12”)
--ingress-default-fqdn [string]Yes, if --ingress-vip is not set. Not used for OpenStack/VK Cloud/SelectelWildcard DNS record for ingress (for example, <cluster_name>.<base_domain>)
--ingress-vip [string]Yes, if --ingress-default-fqdn is not set. Cannot be used for OpenStack/VK Cloud/SelectelVIP address for the ingress controller. To set an ingress VIP, specify --use-external-ingress-lb with value false
--use-external-ingress-lbNoUse an external load balancer for Ingress. Default: false. Set to true for OpenStack, VK Cloud, and Selectel
--secureNoEnable advanced security settings. Default: false
--ingress-certs-ca-crt-path [string]NoPath to the certificate chain (your intermediate certificate -> corporate CA certificate) in PEM format, which can later be used to sign other certificates
--ingress-certs-ca-key-path [string]NoPath to the intermediate CA private key
--ingress-certs-acme-root-path [string]NoPath to the ACME CA root certificate file
--ingress-certs-acme-url [string]NoACME server address with port and resource path, for example: https://acme.corp.lan:8443/directory
--ingress-certs-acme-email [string]NoACME/Let’s Encrypt account email
--ingress-certs-tls-crt-path [string]NoPath to the corporate certificate (PEM file) issued by the CA (in this case the file contains the certificate chain) or self-signed for the Ingress domain name
--ingress-certs-tls-key-path [string]NoPath to the Ingress corporate certificate private key
--enabled-system-services [string]NoComma-separated list of enabled services. By default (if the flag is not set), the cluster installs services critical for platform operation plus monitoring and logging services. If the minimal flag is set to true, values of this parameter are ignored
-b, --bootstrap-kubeconfig-path [string]NoPath to the temporary cluster kubeconfig. By default saved in $HOME/.shturval/shturval-bootstrap. Specify the path if the kubeconfig was moved
--bootstrap-license [string]NoShturval platform license. If the license contains special characters ($,<, >, *, &, ?, /,\ ), enclose it in single quotes. Required if --bootstrap-kubeconfig-path is not specified
--bootstrap-registry [string]NoRegistry address; default r.shturval.tech
--bootstrap-insecureNoSkips security verification when connecting to the registry (default false)
-f, --yaml-path [string]NoPath to the YAML file with configuration for permanent management cluster installation. Do not use together with other configuration flags. Configuration specified in flags overrides configuration in the YAML manifest
--minimalNoInstall a minimal service set (only services critical for platform operation). When minimal configuration is used, the --enabled-system-services parameter is unavailable. Default: false
--platform-version [string]NoShturval platform version. By default, the version matching the shtil utility version is installed
-y, --overwriteNoForce update of configurations and resources when conflicts with existing resources occur. Use when rerunning the installation command after a configuration error
-v, --verbosityNoLog verbosity; higher values produce more detailed output

Command examples

  • To install the platform in one command (installs both temporary and permanent clusters) in an open environment, append --bootstrap-license="ENTER-YOUR-LICENSE" to the required command to create the temporary cluster.
  • To install the platform in one command in a closed environment, append --bootstrap-license="ENTER-YOUR-LICENSE" and --bootstrap-registry="ENTER-YOUR-REGISTRY-ADDRESS" to create the temporary cluster.
  • To install with a certificate chain (your intermediate certificate -> corporate CA certificate), append --ingress-certs-ca-crt-path=ENTER-PATH-TO-INTERMEDIATE-CERTIFICATE and --ingress-certs-ca-key-path=ENTER-PATH-TO-INTERMEDIATE-CERT-PRIVATE-KEY
  • To install with corporate certificates, append --ingress-certs-tls-crt-path=ENTER-PATH-TO-CORPORATE-CERTIFICATE-PEM-FILE and --ingress-certs-tls-key-path=ENTER-PATH-TO-INTERMEDIATE-CERT-PRIVATE-KEY
  • To install with ACME certificates, append --ingress-certs-acme-root-path=ENTER-PATH-TO-ACME-CA-ROOT and --ingress-certs-acme-url=ENTER-ACME-SERVER-URL-WITH-PORT-AND-PATH

Installing a cluster with the Shturval v2 provider

Command to install the permanent management cluster with the Shturval v2 provider.

./shtil-2.13.1 install shturvalv2 
Installation parameters for the permanent management cluster with the Shturval v2 provider
ParameterRequiredDescription
--path-ssh-private-key [string]YesPath to the private SSH key file
--ssh-user [string]YesUsername for SSH connections
-c, --controlplane-nodes [string]YesIP addresses or FQDNs of Control Plane hosts, comma-separated
-w, --worker-nodes [string]YesIP addresses or FQDNs of Worker nodes, comma-separated
--use-external-kubeapi-lbNoUse an external load balancer for the cluster API IP
Example command to create a permanent cluster with self-signed certificates, API server VIP, and Ingress VIP

./shtil-2.13.1 install shturvalv2 \
 --ssh-user=CREATED-USERNAME \
 --path-ssh-private-key=ENTER-PATH-TO-PRIVATE-KEY \
 -c=ENTER-HOST-IP \
 -w=ENTER-HOST-IPS \
 --api-endpoint=ENTER-API-SERVER-IP \
 --ingress-vip=ENTER-INGRESS-IP-ADDRESS \
 --cluster-name=ENTER-CLUSTER-NAME \
 --provider-name=ENTER-PROVIDER-INSTANCE-NAME 

Installing a cluster with the oVirt/zVirt/HostVM/RED Virtualization/ROSA Virtualization provider

Command to install the permanent management cluster with the oVirt/zVirt/HostVM/RED Virtualization/ROSA Virtualization provider.

./shtil-2.13.1 install ovirt
Installation parameters for the permanent management cluster with the oVirt/zVirt/HostVM/RED Virtualization/ROSA Virtualization provider
ParameterRequiredDescription
-u, --url-provider [string]YesURL for connecting to the oVirt API (provider Engine). Specify the full Engine address and append /ovirt-engine/api. For example, https://ovirt.company.domain/ovirt-engine/api
--user-provider [string]YesAccount username for connecting to the provider Engine, for example, username@domain
--password-provider [string]YesAccount password for connecting to the provider Engine. If the password contains special characters, enclose it in single quotes
--tls-insecure-providerNoDisable TLS certificate verification (default true)
--tls-cert-path-provider [string]NoPath to the CA public certificate
--sub-type-provider [string]NoProvider subtype. One of: zvirt, hostvm, redvirt, rosavirt
--datacenter-provider [string]YesoVirt datacenter name
--datacenter-cluster-provider [string]YesoVirt cluster name within the datacenter
--vnic-profile-provider [string]YesoVirt VNIC profile name
-t, --template [string]YesVM template name in the selected datacenter. The Kubernetes version of the VM template must match the Shturval and shtil version
--provider-csi-storage [string]YesStorage domain for dynamic Persistent Volume provisioning via CSI (Container Storage Interface). The specified storage must exist in the selected datacenter
--allow-csiNoEnable CSI integration and allow installation in the cluster. Default: false
--control-plane [int]NoNumber of Control Plane nodes in the cluster. Integer from 1 to 5. Default: 1
--cores-control-plane [int]NoNumber of CPU cores for Control Plane nodes. Default: 4
--sockets-control-plane [int]NoNumber of CPU sockets for Control Plane nodes. Default: 1
--threads-control-plane [int]NoNumber of CPU threads per socket for Control Plane nodes. Default: 1
--memory-control-plane [int]NoRAM in MB for Control Plane nodes. Must be greater than 8000. Default: 16000
--disk-control-plane [int]NoDisk size in GB for Control Plane nodes. Default: 100
--workers [int]NoNumber of Worker nodes in the cluster. Default: 3
--cores-workers [int]NoNumber of CPU cores for Worker nodes. Default: 8
--sockets-workers [int]NoNumber of CPU sockets for Worker nodes. Default: 1
--threads-workers [int]NoNumber of CPU threads per socket for Worker nodes. Default: 1
--memory-workers [int]NoRAM in MB for Worker nodes. Default: 32000
--disk-workers [int]NoDisk size in GB for Worker nodes. Default: 300
Example command to create a permanent cluster with the zVirt provider, self-signed certificates, API server VIP, and external Ingress load balancer

./shtil-2.13.1 install ovirt \
  --api-endpoint=ENTER-API-SERVER-IP \
  --ingress-default-fqdn=ENTER-INGRESS-FQDN \
  --use-external-ingress-lb=true \
  --url-provider="ENTER-OVIRT-API-URL" \
  --user-provider="ENTER-ACCOUNT-USERNAME" \
  --password-provider="ENTER-ACCOUNT-PASSWORD" \
  --datacenter-provider=ENTER-DATACENTER \
  --datacenter-cluster-provider=ENTER-CLUSTER-IN-DATACENTER \
  --vnic-profile-provider=ENTER-VNIC-PROFILE-NAME \
  --template=ENTER-VM-TEMPLATE-NAME \
  --sub-type-provider=zvirt \
  --cluster-name=ENTER-CLUSTER-NAME \
  --provider-name=ENTER-PROVIDER-NAME \
  --provider-csi-storage=ENTER-CSI-STORAGE-NAME \
  --control-plane=CONTROL-PLANE-NODE-COUNT \
  --cores-control-plane=ENTER-CPU-CORES-FOR-CONTROL-PLANE \
  --sockets-control-plane=ENTER-CPU-SOCKETS-FOR-CONTROL-PLANE \
  --threads-control-plane=ENTER-CPU-THREADS-FOR-CONTROL-PLANE \
  --memory-control-plane=ENTER-MEMORY-FOR-CONTROL-PLANE \
  --disk-control-plane=ENTER-DISK-SIZE-FOR-CONTROL-PLANE \
  --workers=ENTER-WORKER-NODE-COUNT \
  --cores-workers=ENTER-CPU-CORES-FOR-WORKER \
  --sockets-workers=ENTER-CPU-SOCKETS-FOR-WORKER \
  --threads-workers=ENTER-CPU-THREADS-FOR-WORKER \
  --memory-workers=ENTER-MEMORY-FOR-WORKER \
  --disk-workers=ENTER-DISK-SIZE-FOR-WORKER 

Installing a cluster with the vSphere provider

Command to install the permanent management cluster with the vSphere provider.

./shtil-2.13.1 install vsphere
Installation parameters for the permanent management cluster with the vSphere provider
ParameterRequiredDescription
--address-vcenter [string]YesIP address or FQDN of the provider Engine
--user-vcenter [string]YesAccount username for connecting to the provider Engine, for example, username@domain.
--password-vcenter [string]YesAccount password for connecting to the provider Engine. If the password contains special characters, enclose it in single quotes
--provider-datacenter [string]YesProvider Engine datacenter, for example, /MyCloud
--provider-datastore [string]YesDatastore in the provider Engine datacenter, for example, MyCloud-example
--provider-resource-pool [string]YesResource pool path for virtual machines, for example, /MyCloud/hosts/MyCloud/Resources/poolname
--provider-network [string]YesNetwork in the provider Engine datacenter, for example, /MyCloud/network/dvPG-example-3245. A DHCP server must be available on the network to assign IP addresses to created VMs. The specified network must exist
--provider-folder [string]YesVirtual machine folder in the provider Engine datacenter, for example, MyCloud/vm/MyCloud/myfolder
--provider-clone-mode [string]NoVM clone mode. Values: fullClone, linkedClone. Default: linkedClone. linkedClone is faster and uses less space; fullClone creates independent virtual machines
--provider-storage-policy [string]NoStoragePolicy name in the Datastore. Required if the Datastore has more than one Storage Policy
-t, --template [string]YesVirtual machine template name. The Kubernetes version of the VM template must match the Shturval and shtil version
--enable-csiNoEnable CSI integration. Default: false
--control-plane [int]NoNumber of Control Plane nodes in the cluster. Default: 1
--cpu-control-plane [int]NoNumber of CPU cores for Control Plane nodes. Default: 4
--memory-control-plane [int]NoRAM in MB for Control Plane nodes. Default: 16000
--disk-control-plane [int]NoDisk size in GB for Control Plane nodes. Default: 100
--workers [int]NoNumber of Worker nodes in the cluster. Default: 3
--cpu-workers [int]NoNumber of CPU cores for Worker nodes. Default: 8
--memory-workers [int]NoRAM in MB for Worker nodes. Default: 32000
--disk-workers [int]NoDisk size in GB for Worker nodes. Default: 300
Example command to create a permanent cluster with the vSphere provider, self-signed certificates, 1 Control Plane and 3 Worker nodes, and VIPs for the API server and Ingress

./shtil-2.13.1 install vsphere \
 --api-endpoint=ENTER-API-SERVER-IP \
 --ingress-vip=ENTER-INGRESS-IP-ADDRESS \
 --address-vcenter="ENTER-VCENTER-ADDRESS" \
 --user-vcenter="ENTER-USERNAME" \
 --password-vcenter="ENTER-USER-PASSWORD" \
 --provider-datacenter=ENTER-DATACENTER \
 --provider-datastore=ENTER-DATASTORE-IN-DATACENTER \
 --provider-resource-pool="ResourcePool-IN-DATACENTER" \
 --provider-network="ENTER-NETWORK" \
 --provider-folder="FOLDER-IN-DATACENTER" \
 --template=ENTER-VM-TEMPLATE-NAME 

Installing a cluster with the OpenStack/VK Cloud/Selectel provider

Command to install the permanent management cluster with the OpenStack provider.

./shtil-2.13.1 install openstack

Command to install the permanent management cluster with the VK Cloud provider.

./shtil-2.13.1 install vkcloud

Command to install the permanent management cluster with the Selectel provider.

./shtil-2.13.1 install selectel
Installation parameters for the permanent management cluster with the OpenStack/VK Cloud/Selectel provider
ParameterRequiredDescription
--url-auth [string]Yes for OpenStack; No for VK Cloud and SelectelOpenStack authorization service (Keystone) URL. Port is required, for example, http://10.11.111.111:5000
--project-id [string]YesProject identifier
--project-domain-id [string]YesProject domain identifier
--tls-insecure-providerNoSkip TLS certificate verification. Default: false
--tls-cert-path [string]NoPath to the public CA certificate file in PEM format
--region-name [string]NoRegion name. For example, RegionOne
--interface [string]NoEndpoint interface, for example, public
--identity-api-version [string]NoOpenStack Identity API version. Default: 3
--token [string]Yes for OpenStack if –login and –password are not set. Not used for VK Cloud and SelectelAuthentication token. Cannot be used together with –login and –password. Available only for OpenStack
--login [string]Yes if –token is not setService account name with heat_stack_owner and admin roles. Must be set together with –password
--password [string]Yes for OpenStack if –token is not setService account password. Must be set together with –login
--user-domain-name [string]Yes for OpenStack if –token is not setUser domain name. Required for OpenStack or VK Cloud
--cloud-name [string]YesCloud name
--ssh-key-name [string]YesSSH key pair name for VM access over SSH
--node-cidr [string]YesNode subnet. For example, 10.0.0.0/24. Must not overlap with the pod subnet (podSubnet) or service subnet (serviceSubnet)
--external-network-id [string]YesExternal network identifier
--flavors [string]YesVirtual machine types. Comma-separated
--volume-types [string]YesDisk types. Comma-separated
--availability-zones [string]NoAvailability zones. Comma-separated
--manage-security-groupsNoAllow Security Group management. Default: true
--disable-port-securityNoDisable port security. Default: false
--dns [string]NoDNS servers for the node subnet, comma-separated
--machine-image-name [string]YesVirtual machine template name. The Kubernetes version of the VM template must match the Shturval and shtil version
--enable-csiNoEnable CSI integration. Default: false
--control-plane [int]NoNumber of Control Plane nodes in the cluster. Default: 1
--flavor-name-cp [string]NoVirtual machine type for Control Plane nodes. If omitted, the first value from --flavors is used
--volume-type-cp [string]NoDisk type for Control Plane nodes. If omitted, the first value from –volume-types is used
--availability-zone-cp [string]NoAvailability zone for Control Plane nodes. If omitted, the first value from –availability-zones is used
--disk-cp [int]NoDisk size in GB for Control Plane nodes. Default: 100
--workers [int]NoNumber of Worker nodes in the cluster. Default: 3
--flavor-name-workers [string]NoVirtual machine type for Worker nodes. If omitted, the first value from --flavors is used
--volume-type-workers [string]NoDisk type for Worker nodes. If omitted, the first value from –volume-types is used
--availability-zone-workers [string]NoAvailability zone for Worker nodes. If omitted, the first value from –availability-zones is used
--disk-workers [int]NoDisk size in GB for Worker nodes. Default: 100
Example command to create a permanent cluster with the VK Cloud provider

./shtil-2.13.1 install vkcloud \
 --url-auth="ENTER-URL-WITH-PORT" \
 --cloud-name="ENTER-CLOUD-NAME" \
 --project-id=ENTER-PROJECT-ID \
 --project-domain-id=ENTER-PROJECT-DOMAIN-ID \
 --user-domain-name=ENTER-USER-DOMAIN-NAME \
 --login=ENTER-SERVICE-ACCOUNT-NAME \
 --password="ENTER-SERVICE-ACCOUNT-PASSWORD" \
 --ssh-key-name=ENTER-SSH-KEY-PAIR-NAME \
 --node-cidr=ENTER-NODE-SUBNET \
 --external-network-id=ENTER-EXTERNAL-NETWORK-ID \
 --flavors="ENTER-FLAVOR-TYPES-COMMA-SEPARATED" \
 --volume-types="ENTER-DISK-TYPES-COMMA-SEPARATED" \
 --machine-image-name="ENTER-VM-TEMPLATE-NAME" \
 --use-external-ingress-lb=true

Platform installation command examples

To install the platform in one command, specify the required temporary cluster creation parameters in the permanent management cluster installation command for one of the providers.

Example platform installation command with the Shturval v2 provider in an open environment

./shtil-2.13.1 install shturvalv2 \
 --ssh-user=CREATED-USERNAME \
 --path-ssh-private-key=ENTER-PATH-TO-PRIVATE-KEY \
 -c=ENTER-HOST-IP \
 -w=ENTER-HOST-IPS-COMMA-SEPARATED-NO-SPACES \
 --api-endpoint=ENTER-YOUR-FQDN \
 --ingress-vip=ENTER-INGRESS-IP-ADDRESS \
 --use-external-kubeapi-lb=true \
 --bootstrap-license="ENTER-YOUR-LICENSE"
Example platform installation command with the Shturval v2 provider in a closed environment

./shtil-2.13.1 install shturvalv2 \
 --ssh-user=CREATED-USERNAME \
 --path-ssh-private-key=ENTER-PATH-TO-PRIVATE-KEY \
 -c=ENTER-HOST-IPS-COMMA-SEPARATED-NO-SPACES \
 -w=ENTER-HOST-IPS-COMMA-SEPARATED-NO-SPACES \
 --api-endpoint=ENTER-YOUR-FQDN \
 --ingress-vip=ENTER-INGRESS-IP-ADDRESS \
 --use-external-kubeapi-lb=true \
 --bootstrap-license="ENTER-YOUR-LICENSE" \
 --bootstrap-registry="ENTER-YOUR-REGISTRY-ADDRESS"
Example platform installation command with the vSphere provider in an open environment

./shtil-2.13.1 install vsphere \
 --api-endpoint=ENTER-API-SERVER-IP \
 --ingress-vip=ENTER-INGRESS-IP-ADDRESS \
 --address-vcenter="ENTER-VCENTER-ADDRESS" \
 --user-vcenter="ENTER-USERNAME" \
 --password-vcenter="ENTER-USER-PASSWORD" \
 --provider-datacenter=ENTER-DATACENTER \
 --provider-datastore=ENTER-DATASTORE-IN-DATACENTER \
 --provider-resource-pool="ResourcePool-IN-DATACENTER" \
 --provider-network="ENTER-NETWORK" \
 --provider-folder="FOLDER-IN-DATACENTER" \
 --template=ENTER-VM-TEMPLATE-NAME \
 --bootstrap-license="ENTER-YOUR-LICENSE"