diff --git a/installing/installing-preparing.adoc b/installing/installing-preparing.adoc index 4ebc97c80a..63821b8ac9 100644 --- a/installing/installing-preparing.adoc +++ b/installing/installing-preparing.adoc @@ -19,8 +19,8 @@ If you want to install and manage {product-title} yourself, you can install it o * Amazon Web Services (AWS) * Microsoft Azure * Google Cloud Platform (GCP) -* {rh-openstack-first} -* {rh-virtualization} +* {rh-openstack-first} ({rh-openstack}) +* {rh-virtualization-first} ({rh-virtualization}) * IBM Z and LinuxONE * IBM Z and LinuxONE for {op-system-base-full} KVM * IBM Power diff --git a/installing/installing_rhv/installing-rhv-default.adoc b/installing/installing_rhv/installing-rhv-default.adoc index 7f490f6e64..ea120b9a11 100644 --- a/installing/installing_rhv/installing-rhv-default.adoc +++ b/installing/installing_rhv/installing-rhv-default.adoc @@ -30,6 +30,10 @@ include::modules/cluster-entitlements.adoc[leveloffset=+1] include::modules/installing-rhv-requirements.adoc[leveloffset=+1] +.Additional resources + +* xref:../../installing/installing_rhv/installing-rhv-customizations.adoc#installing-rhv-example-install-config-yaml_installing-rhv-customizations[Example: Removing all affinity groups for a non-production lab setup]. + include::modules/installing-rhv-verifying-rhv-environment.adoc[leveloffset=+1] include::modules/installing-rhv-preparing-network-environment.adoc[leveloffset=+1] diff --git a/modules/installation-configuration-parameters.adoc b/modules/installation-configuration-parameters.adoc index 3be7832dad..219dbc1de0 100644 --- a/modules/installation-configuration-parameters.adoc +++ b/modules/installation-configuration-parameters.adoc @@ -21,7 +21,7 @@ // * installing/installing_openstack/installing-openstack-installer-kuryr.adoc // * installing/installing_openstack/installing-openstack-user.adoc // * installing/installing_openstack/installing-openstack-user-kuryr.adoc -// * installing/installing_rhv/installing-rhv-custom.adoc +// * installing/installing_rhv/installing-rhv-customizations.adoc // * installing/installing_vmc/installing-vmc-customizations.adoc // * installing/installing_vmc/installing-vmc-network-customizations.adoc // * installing/installing_vmc/installing-restricted-networks-vmc.adoc @@ -936,7 +936,8 @@ ifdef::rhv[] Additional {rh-virtualization} configuration parameters are described in the following table: -.Additional {rh-virtualization} parameters for clusters +[id="additional-virt-parameters-for-clusters_{context}"] +.Additional {rh-virtualization-first} parameters for clusters [cols=".^2,.^3a,.^3a",options="header"] |==== |Parameter|Description|Values @@ -964,6 +965,27 @@ Additional {rh-virtualization} configuration parameters are described in the fol |`platform.ovirt.ingress_vip` |Required. An IP address on the machine network that will be assigned to the Ingress virtual IP (VIP). |String. Example: `10.46.8.232` + +|`platform.ovirt.affinityGroups` +|Optional. A list of affinity groups to create during the installation process. +|List of objects. + +|`platform.ovirt.affinityGroups.description` +|Required if you include `platform.ovirt.affinityGroups`. A description of the affinity group. +|String. Example: `AffinityGroup for spreading each compute machine to a different host` + +|`platform.ovirt.affinityGroups.enforcing` +|Required if you include `platform.ovirt.affinityGroups`. When set to `true`, {rh-virtualization} does not provision any machines if not enough hardware nodes are available. When set to `false`, {rh-virtualization} does provision machines even if not enough hardware nodes are available, resulting in multiple virtual machines being hosted on the same physical machine. + +|String. Example: `true` + +|`platform.ovirt.affinityGroups.name` +|Required if you include `platform.ovirt.affinityGroups`. The name of the affinity group. +|String. Example: `compute` + +|`platform.ovirt.affinityGroups.priority` +|Required if you include `platform.ovirt.affinityGroups`. The priority given to an affinity group when `platform.ovirt.affinityGroups.enforcing = false`. {rh-virtualization} applies affinity groups in the order of priority, where a greater number takes precedence over a lesser one. If multiple affinity groups have the same priority, the order in which they are applied is not guaranteed. +|Integer. Example: `3` |==== [id="installation-configuration-parameters-additional-machine_{context}"] @@ -1007,6 +1029,37 @@ Additional {rh-virtualization} configuration parameters for machine pools are de |`.platform.ovirt.vmType` |Optional. The VM workload type, such as `high-performance`, `server`, or `desktop`. |String + +|`.platform.ovirt.affinityGroupsNames` +|Optional. A list of affinity group names that should be applied to the virtual machines. The affinity groups must exist in {rh-virtualization}, or be created during installation as described in _Additional {rh-virtualization} parameters for clusters_ in this topic. This entry can be empty. +// xref:../../installing/installing_rhv/installing-rhv-customizations.adoc#additional-virt-parameters-for-clusters[Additional {rh-virtualization} parameters for clusters]. This entry can be empty. +//xref:../../additional-virt-parameters-for-clusters[Additional {rh-virtualization} parameters for clusters]. This entry can be empty. + +.Example with two affinity groups + +This example defines two affinity groups, named `compute` and `clusterWideNonEnforcing`: + +[source,yaml] +---- +: + platform: + ovirt: + affinityGroupNames: + - compute + - clusterWideNonEnforcing +---- + +This example defines no affinity groups: + +[source,yaml] +---- +: + platform: + ovirt: + affinityGroupNames: [] +---- +|String + |==== [NOTE] diff --git a/modules/installing-rhv-accessing-ocp-web-console.adoc b/modules/installing-rhv-accessing-ocp-web-console.adoc index 56eb8adada..0aa1cc6cc9 100644 --- a/modules/installing-rhv-accessing-ocp-web-console.adoc +++ b/modules/installing-rhv-accessing-ocp-web-console.adoc @@ -1,7 +1,7 @@ // Module included in the following assemblies: // // * installing/installing_rhv/installing-rhv-default.adoc -// * installing/installing_rhv/installing-rhv-custom.adoc +// * installing/installing_rhv/installing-rhv-customizations.adoc [id="installing-rhv-accessing-ocp-web-console_{context}"] = Accessing the {product-title} web console on {rh-virtualization} diff --git a/modules/installing-rhv-example-install-config-yaml.adoc b/modules/installing-rhv-example-install-config-yaml.adoc index 0447ff87bc..6c5e18f766 100644 --- a/modules/installing-rhv-example-install-config-yaml.adoc +++ b/modules/installing-rhv-example-install-config-yaml.adoc @@ -1,6 +1,6 @@ // Module included in the following assemblies: // -// * installing/installing_rhv/installing-rhv-custom.adoc +// * installing/installing_rhv/installing-rhv-customizations.adoc // * installing/installing_rhv/installing-rhv-default.adoc [id="installing-rhv-example-install-config-yaml_{context}"] @@ -8,9 +8,9 @@ You can customize the {product-title} cluster the installation program creates by changing the parameters and parameter values in the `install-config.yaml` file. -The following example is specific to installing {product-title} on {rh-virtualization}. +The following examples are specific to installing {product-title} on {rh-virtualization}. -This file is located in the `` you specified when you ran the following command. +`install-config.yaml` is located in ``, which you specified when you ran the following command. [source,terminal] ---- $ ./openshift-install create install-config --dir= @@ -23,7 +23,8 @@ $ ./openshift-install create install-config --dir= * Changing the `install-config.yaml` file can increase the resources your cluster requires. Verify that your {rh-virtualization} environment has those additional resources. Otherwise, the installation or cluster will fail. ==== -.Example: This is the default `install-config.yaml` file +[discrete] +== Example default `install-config.yaml` file [source,yaml] ---- @@ -72,7 +73,8 @@ sshKey: ssh-ed12345 AAAA... ---- -.Example: A minimal `install-config.yaml` file +[discrete] +== Example minimal `install-config.yaml` file [source,yaml] ---- @@ -93,7 +95,8 @@ sshKey: ssh-ed12345 AAAA... ---- -.Example: Custom machine pools in an `install-config.yaml` file +[discrete] +== Example Custom machine pools in an `install-config.yaml` file [source,yaml] ---- @@ -136,3 +139,75 @@ platform: pullSecret: '{"auths": ...}' sshKey: ssh-ed25519 AAAA... ---- + +[discrete] +== Example non-enforcing affinity group + +It is recommended to add a non-enforcing affinity group to distribute the control plane and workers, if possible, to use as much of the cluster as possible. + +[source,yaml] +---- +platform: + ovirt: + affinityGroups: + - description: AffinityGroup to place each compute machine on a separate host + enforcing: true + name: compute + priority: 3 + - description: AffinityGroup to place each control plane machine on a separate host + enforcing: true + name: controlplane + priority: 5 + - description: AffinityGroup to place worker nodes and control plane nodes on separate hosts + enforcing: false + name: openshift + priority: 5 +compute: +- architecture: amd64 + hyperthreading: Enabled + name: worker + platform: + ovirt: + affinityGroupsNames: + - compute + - openshift + replicas: 3 +controlPlane: + architecture: amd64 + hyperthreading: Enabled + name: master + platform: + ovirt: + affinityGroupsNames: + - controlplane + - openshift + replicas: 3 +---- + +[discrete] +== Example removing all affinity groups for a non-production lab setup + +For non-production lab setups, you must remove all affinity groups to concentrate the {product-title} cluster on the few hosts you have. + +[source,yaml] +---- +platform: + ovirt: + affinityGroups: [] +compute: +- architecture: amd64 + hyperthreading: Enabled + name: worker + platform: + ovirt: + affinityGroupsNames: [] + replicas: 3 +controlPlane: + architecture: amd64 + hyperthreading: Enabled + name: master + platform: + ovirt: + affinityGroupsNames: [] + replicas: 3 +---- diff --git a/modules/installing-rhv-insecure-mode.adoc b/modules/installing-rhv-insecure-mode.adoc index f978c4a64b..a7f23c3b70 100644 --- a/modules/installing-rhv-insecure-mode.adoc +++ b/modules/installing-rhv-insecure-mode.adoc @@ -1,6 +1,6 @@ // Module included in the following assemblies: // -// * installing/installing_rhv/installing-rhv-custom.adoc +// * installing/installing_rhv/installing-rhv-customizations.adoc // * installing/installing_rhv/installing-rhv-default.adoc // * installing/installing_rhv/installing-rhv-user-infra.adoc diff --git a/modules/installing-rhv-preparing-network-environment.adoc b/modules/installing-rhv-preparing-network-environment.adoc index 1bc6c875b8..d9f803d585 100644 --- a/modules/installing-rhv-preparing-network-environment.adoc +++ b/modules/installing-rhv-preparing-network-environment.adoc @@ -1,6 +1,6 @@ // Module included in the following assemblies: // -// * installing/installing_rhv/installing-rhv-custom.adoc +// * installing/installing_rhv/installing-rhv-customizations.adoc // * installing/installing_rhv/installing-rhv-default.adoc [id="installing-rhv-preparing-network-environment_{context}"] diff --git a/modules/installing-rhv-requirements.adoc b/modules/installing-rhv-requirements.adoc index 24fd8fae4e..c19cfa4361 100644 --- a/modules/installing-rhv-requirements.adoc +++ b/modules/installing-rhv-requirements.adoc @@ -1,6 +1,6 @@ // Module included in the following assemblies: // -// * installing/installing_rhv/installing-rhv-custom.adoc +// * installing/installing_rhv/installing-rhv-customizations.adoc // * installing/installing_rhv/installing-rhv-default.adoc // * installing/installing_rhv/installing-rhv-user-infra.adoc // * installing/installing_rhv/installing-rhv-restricted-network.adoc @@ -30,6 +30,22 @@ If you increase the number of virtual machines in the {rh-virtualization} enviro *** 16 GiB or more for each of the three control plane machines which provide the control plane. *** 16 GiB or more for each of the three compute machines, which run the application workloads. * The {rh-virtualization} storage domain must meet link:https://access.redhat.com/solutions/4770281[these etcd backend performance requirements]. +ifeval::["{context}" == "installing-rhv-default"] +* For affinity group support: +Three or more hosts in the {rh-virtualization} cluster. If necessary, you can disable affinity groups. For details, see _Example: Removing all affinity groups for a non-production lab setup_ in _Installing a cluster on {rh-virtualization} with customizations_ +endif::[] +ifeval::["{context}" == "installing-rhv-customizations"] +* For affinity group support: ++ +One physical machine per worker or control plane. Workers and control planes can be on the same physical machine. For example, if you have three workers and three control planes, you need three physical machines. If you have four workers and three control planes, you need four physical machines. + +** For hard anti-affinity (default): A minimum of three physical machines. For more than three worker nodes, one physical machine per worker or control plane. Workers and control planes can be on the same physical machine. +** For custom affinity groups: Ensure that the resources are appropriate for the affinity group rules that you define. +//// +** Production setup: For hard anti-affinity, you need a minimum of three physical machines. For more than three worker nodes, one physical machine per worker or control plane. Workers and control planes can be on the same physical machine. For example, if you have three workers and three control planes, you need three physical machines. If you have four workers and three control planes, you need four physical machines. +** Non-production setup, such as a lab: Remove all affinity groups to enable putting multiple workers or control planes on as few physical machines as possible. This setup does not guarantee redundancy so it is not appropriate for production. +//// +endif::[] * In production environments, each virtual machine must have 120 GiB or more. Therefore, the storage domain must provide 840 GiB or more for the default {product-title} cluster. In resource-constrained or non-production environments, each virtual machine must have 32 GiB or more, so the storage domain must have 230 GiB or more for the default {product-title} cluster. * To download images from the Red Hat Ecosystem Catalog during installation and update procedures, the {rh-virtualization} cluster must have access to an internet connection. The Telemetry service also needs an internet connection to simplify the subscription and entitlement process. // TBD - What about the disconnected installation alternative? diff --git a/modules/installing-rhv-setting-up-ca-certificate.adoc b/modules/installing-rhv-setting-up-ca-certificate.adoc index e3122cb676..afd30ebdc4 100644 --- a/modules/installing-rhv-setting-up-ca-certificate.adoc +++ b/modules/installing-rhv-setting-up-ca-certificate.adoc @@ -1,6 +1,6 @@ // Module included in the following assemblies: // -// * installing/installing_rhv/installing-rhv-custom.adoc +// * installing/installing_rhv/installing-rhv-customizations.adoc // * installing/installing_rhv/installing-rhv-default.adoc // * installing/installing-rhv-restricted-network.adoc diff --git a/modules/installing-rhv-verifying-rhv-environment.adoc b/modules/installing-rhv-verifying-rhv-environment.adoc index 0866019b4a..094dc26b47 100644 --- a/modules/installing-rhv-verifying-rhv-environment.adoc +++ b/modules/installing-rhv-verifying-rhv-environment.adoc @@ -1,6 +1,6 @@ // Module included in the following assemblies: // -// * installing/installing_rhv/installing-rhv-custom.adoc +// * installing/installing_rhv/installing-rhv-customizations.adoc // * installing/installing_rhv/installing-rhv-default.adoc // * installing/installing_rhv/installing-rhv-restricted-network.adoc diff --git a/modules/machineset-yaml-rhv.adoc b/modules/machineset-yaml-rhv.adoc index 9998145fcb..d2bdd109a4 100644 --- a/modules/machineset-yaml-rhv.adoc +++ b/modules/machineset-yaml-rhv.adoc @@ -59,6 +59,8 @@ spec: type: <19> userDataSecret: name: worker-user-data + affinityGroupsNames: + - compute <20> ---- <1> Specify the infrastructure ID that is based on the cluster ID that you set when you provisioned the cluster. If you have the OpenShift CLI (`oc`) installed, you can obtain the infrastructure ID by running the following command: + @@ -101,6 +103,7 @@ $ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster <18> Specify the name of the secret that holds the {rh-virtualization} credentials. <19> Optional: Specify the workload type for which the instance is optimized. This value affects the `{rh-virtualization} VM` parameter. Supported values: `desktop`, `server`, `high_performance`. +<20> A list of affinity group names that should be applied to the VMs. The affinity groups must exist in oVirt. [NOTE] ====