Este contenido no está disponible en el idioma seleccionado.
Chapter 5. Configuring Networker nodes
In a Red Hat OpenStack Services on OpenShift (RHOSO) environment, you can add Networker nodes to the RHOSO data plane.
Networker nodes can serve as gateways to external networks.
With or without gateways, Networker nodes can serve other purposes as well. For example, Networker nodes are required when you deploy the neutron-dhcp-agent
in a RHOSO environment that has a routed spine-leaf network topology with DHCP relays running on leaf nodes. Networker nodes can also provide metadata for SR-IOV ports.
If your NICs support DPDK, you can enable DPDK on the Networker node interfaces to accelerate gateway traffic processing.
Networker nodes are similar to other RHOSO data plane nodes such as Compute nodes. Like Compute nodes, Networker nodes use the RHEL 9.4 operating system. Networker nodes and Compute nodes share some common services and configuration features, and each has a set of role-specific services and configurations. For example, unlike Compute nodes, Networker nodes do not require the Nova or libvirt services.
A data plane typically consists of multiple OpenStackDataPlaneNodeSet
custom resources (CRs) to define sets of nodes with different configurations and roles. For example, one node set might define your data plane Networker nodes. Others might define functionally related sets of Compute nodes.
You can use pre-provisioned or unprovisioned nodes in an OpenStackDataPlaneNodeSet
CR:
- Pre-provisioned node: You have used your own tooling to install the operating system on the node before adding it to the data plane.
- Unprovisioned node: The node does not have an operating system installed before you add it to the data plane. The node is provisioned by using the Cluster Baremetal Operator (CBO) as part of the data plane creation and deployment process.
You cannot include both pre-provisioned and unprovisioned nodes in the same OpenStackDataPlaneNodeSet CR.
To create and deploy a data plane with or without Networker nodes, you must perform the following tasks:
-
Create a
Secret
CR for each node set for Ansible to use to execute commands on the data plane nodes (Networker nodes and Compute nodes). Create the
OpenStackDataPlaneNodeSet
CRs that define the nodes and layout of the data plane.One of the following procedures describes how to create Networker node sets with pre-provisioned nodes. The other describes how to create Networker node sets with unprovisioned bare-metal nodes that must be provisioned during the node set deployment.
-
Create the
OpenStackDataPlaneDeployment
CR that triggers the Ansible execution that deploys and configures the software for the specified list ofOpenStackDataPlaneNodeSet
CRs.
5.1. Prerequisites Copiar enlaceEnlace copiado en el portapapeles!
- A functional control plane, created with the OpenStack Operator.
-
You are logged on to a workstation that has access to the Red Hat OpenShift Container Platform (RHOCP) cluster as a user with
cluster-admin
privileges.
5.2. Creating the data plane secrets Copiar enlaceEnlace copiado en el portapapeles!
You must create the Secret
custom resources (CRs) that the data plane requires to be able to operate. The Secret
CRs are used by the data plane nodes to secure access between nodes, to register the node operating systems with the Red Hat Customer Portal, to enable node repositories, and to provide Compute nodes with access to libvirt.
To enable secure access between nodes, you must generate two SSH keys and create an SSH key Secret
CR for each key:
An SSH key to enable Ansible to manage the RHEL nodes on the data plane. Ansible executes commands with this user and key. You can create an SSH key for each
OpenStackDataPlaneNodeSet
CR in your data plane.- An SSH key to enable migration of instances between Compute nodes.
Prerequisites
-
Pre-provisioned nodes are configured with an SSH public key in the
$HOME/.ssh/authorized_keys
file for a user with passwordlesssudo
privileges. For more information, see Managing sudo access in the RHEL Configuring basic system settings guide.
Procedure
For unprovisioned nodes, create the SSH key pair for Ansible:
ssh-keygen -f <key_file_name> -N "" -t rsa -b 4096
$ ssh-keygen -f <key_file_name> -N "" -t rsa -b 4096
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Replace
<key_file_name>
with the name to use for the key pair.
-
Replace
Create the
Secret
CR for Ansible and apply it to the cluster:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Replace
<key_file_name>
with the name and location of your SSH key pair file. -
Optional: Only include the
--from-file=authorized_keys
option for bare-metal nodes that must be provisioned when creating the data plane.
-
Replace
If you are creating Compute nodes, create a secret for migration.
Create the SSH key pair for instance migration:
ssh-keygen -f ./nova-migration-ssh-key -t ecdsa-sha2-nistp521 -N ''
$ ssh-keygen -f ./nova-migration-ssh-key -t ecdsa-sha2-nistp521 -N ''
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Create the
Secret
CR for migration and apply it to the cluster:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
For nodes that have not been registered to the Red Hat Customer Portal, create the
Secret
CR for subscription-manager credentials to register the nodes:oc create secret generic subscription-manager \ --from-literal rhc_auth='{"login": {"username": "<subscription_manager_username>", "password": "<subscription_manager_password>"}}'
$ oc create secret generic subscription-manager \ --from-literal rhc_auth='{"login": {"username": "<subscription_manager_username>", "password": "<subscription_manager_password>"}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Replace
<subscription_manager_username>
with the username you set forsubscription-manager
. -
Replace
<subscription_manager_password>
with the password you set forsubscription-manager
.
-
Replace
Create a
Secret
CR that contains the Red Hat registry credentials:oc create secret generic redhat-registry --from-literal edpm_container_registry_logins='{"registry.redhat.io": {"<username>": "<password>"}}'
$ oc create secret generic redhat-registry --from-literal edpm_container_registry_logins='{"registry.redhat.io": {"<username>": "<password>"}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Replace
<username>
and<password>
with your Red Hat registry username and password credentials.For information about how to create your registry service account, see the Knowledge Base article Creating Registry Service Accounts.
If you are creating Compute nodes, create a secret for libvirt.
Create a file on your workstation named
secret_libvirt.yaml
to define the libvirt secret:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Replace
<base64_password>
with a base64-encoded string with maximum length 63 characters. You can use the following command to generate a base64-encoded password:echo -n <password> | base64
$ echo -n <password> | base64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow TipIf you do not want to base64-encode the username and password, you can use the
stringData
field instead of thedata
field to set the username and password.
Create the
Secret
CR:oc apply -f secret_libvirt.yaml -n openstack
$ oc apply -f secret_libvirt.yaml -n openstack
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Verify that the
Secret
CRs are created:oc describe secret dataplane-ansible-ssh-private-key-secret oc describe secret nova-migration-ssh-key oc describe secret subscription-manager oc describe secret redhat-registry oc describe secret libvirt-secret
$ oc describe secret dataplane-ansible-ssh-private-key-secret $ oc describe secret nova-migration-ssh-key $ oc describe secret subscription-manager $ oc describe secret redhat-registry $ oc describe secret libvirt-secret
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3. Creating an OpenStackDataPlaneNodeSet CR for a set of Networker nodes with pre-provisioned nodes Copiar enlaceEnlace copiado en el portapapeles!
You can define an OpenStackDataPlaneNodeSet
CR for each logical grouping of pre-provisioned nodes in your data plane that are Networker nodes. You can define as many node sets as necessary for your deployment. Each node can be included in only one OpenStackDataPlaneNodeSet
CR.
You use the nodeTemplate
field to configure the common properties to apply to all nodes in an OpenStackDataPlaneNodeSet
CR, and the nodes
field for node-specific properties. Node-specific configurations override the inherited values from the nodeTemplate
.
For an example OpenStackDataPlaneNodeSet
CR that configures a set of Networker nodes without OVS-DPDK from pre-provisioned Networker nodes, see Example OpenStackDataPlaneNodeSet CR for pre-provisioned Networker nodes.
+ For an example OpenStackDataPlaneNodeSet
CR that configures a set of Networker nodes with OVS-DPDK from pre-provisioned Networker nodes, see Example OpenStackDataPlaneNodeSet CR for pre-provisioned Networker nodes with DPDK].
Procedure
Create a file on your workstation named
openstack_preprovisioned_networker_node_set.yaml
to define theOpenStackDataPlaneNodeSet
CR:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- The
OpenStackDataPlaneNodeSet
CR name must be unique, contain only lower case alphanumeric characters and - (hyphens) or . (periods), start and end with an alphanumeric character, and have a maximum length of 53 characters. If necessary, replace the example namenetworker-nodes
with a name that more accurately describes your node set. - 2
- Optional: A list of environment variables to pass to the pod.
Include the
services
field to override the default services. Remove thenova
,libvirt
, and other services that are not required by a Networker node:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- The
configure-ovs-dpdk
service is required only when DPDK nics are used in the deployment. - 2
- The
neutron-metadata
service is required only when SR-IOV ports are used in the deployment. - 3
- You can optionally run the
neutron-dhcp
service on your Networker nodes. You might not need to useneutron-dhcp
with OVN if your deployment uses DHCP relays, or advanced DHCP options that are supported bydnsmasq
but not by the OVN DHCP implementation. .
Connect the data plane to the control plane network:
spec: ... networkAttachments: - ctlplane
spec: ... networkAttachments: - ctlplane
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Enable the chassis as gateway:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Specify that the nodes in this set are pre-provisioned:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Add the SSH key secret that you created so that Ansible can connect to the data plane nodes:
nodeTemplate: ansibleSSHPrivateKeySecret: <secret-key>
nodeTemplate: ansibleSSHPrivateKeySecret: <secret-key>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Replace
<secret-key>
with the name of the SSH keySecret
CR you created for this node set in <link>[Creating the data plane secrets], for example,dataplane-ansible-ssh-private-key-secret
.
-
Replace
-
Create a Persistent Volume Claim (PVC) in the
openstack
namespace on your Red Hat OpenShift Container Platform (RHOCP) cluster to store logs. Set thevolumeMode
toFilesystem
andaccessModes
toReadWriteOnce
. Do not request storage for logs from a PersistentVolume (PV) that uses the NFS volume plugin. NFS is incompatible with FIFO and theansible-runner
creates a FIFO file to store logs. For information about PVCs, see Understanding persistent storage in the RHOCP Storage guide and Red Hat OpenShift Container Platform cluster requirements in Planning your deployment. Enable persistent logging for the Networker nodes:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Replace
<pvc_name>
with the name of the PVC storage on your RHOCP cluster.
-
Replace
Specify the management network:
nodeTemplate: ... managementNetwork: ctlplane
nodeTemplate: ... managementNetwork: ctlplane
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Specify the
Secret
CRs used to source the usernames and passwords to register the operating system of the nodes that are not registered to the Red Hat Customer Portal, and enable repositories for your nodes. The following example demonstrates how to register your nodes to Red Hat Content Delivery Network (CDN). For information about how to register your nodes with Red Hat Satellite 6.13, see Managing Hosts.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- The user associated with the secret you created in <link>[Creating the data plane secrets].
- 2
- The Ansible variables that customize the set of nodes. For a list of Ansible variables that you can use, see https://openstack-k8s-operators.github.io/edpm-ansible/.
For a complete list of the Red Hat Customer Portal registration commands, see https://access.redhat.com/solutions/253273. For information about how to log into
registry.redhat.io
, see https://access.redhat.com/RegistryAuthentication#creating-registry-service-accounts-6.Add the network configuration template to apply to your Networker nodes.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Sets the
os-net-config
provider tonmstate
. The default value istrue
. Change it tofalse
only if a specific limitation of thenmstate
provider requires you to use theifcfg
provider. For more information on advantages and limitations of thenmstate
provider, see https://docs.redhat.com/en/documentation/red_hat_openstack_services_on_openshift/18.0/html/planning_your_deployment/plan-networks_planning#plan-os-net-config_plan-network in Planning your deployment. - 2
- When deploying a node set for the first time, set the
edpm_network_config_update
variable tofalse
. When updating or adopting a node set, setedpm_network_config_update
totrue
.
ImportantAfter an update or an adoption, you must reset
edpm_network_config_update
tofalse
. Otherwise, the nodes could lose network access. Wheneveredpm_network_config_update
istrue
, the updated network configuration is reapplied every time anOpenStackDataPlaneDeployment
CR is created that includes theconfigure-network
service that is a member of theservicesOverride
list.The following example applies a VLANs network configuration to a set of the data plane Networker nodes with DPDK:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow The following example applies a VLANs network configuration to a set of data plane Networker nodes without DPDK:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow For more information about data plane network configuration, see Customizing data plane networks in Configuring network services.
-
Add the common configuration for the set of nodes in this group under the
nodeTemplate
section. Each node in thisOpenStackDataPlaneNodeSet
inherits this configuration. For information about the properties you can use to configure common node attributes, seeOpenStackDataPlaneNodeSet
CR spec properties in the Deploying Red Hat OpenStack Services on OpenShift guide. Define each node in this node set:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- The node definition reference, for example,
edpm-networker-0
. Each node in the node set must have a node definition. - 2
- Defines the IPAM and the DNS records for the node.
- 3
- Specifies a predictable IP address for the network that must be in the allocation range defined for the network in the
NetConfig
CR. - 4
- Node-specific Ansible variables that customize the node.
Note-
Nodes defined within the
nodes
section can configure the same Ansible variables that are configured in thenodeTemplate
section. Where an Ansible variable is configured for both a specific node and within thenodeTemplate
section, the node-specific values override those from thenodeTemplate
section. -
You do not need to replicate all the
nodeTemplate
Ansible variables for a node to override the default and set some node-specific values. You only need to configure the Ansible variables you want to override for the node. -
Many
ansibleVars
includeedpm
in the name, which stands for "External Data Plane Management".
For information about the properties you can use to configure node attributes, see
OpenStackDataPlaneNodeSet
CR spec properties in the Deploying Red Hat OpenStack Services on OpenShift guide..-
Save the
openstack_preprovisioned_networker_node_set.yaml
definition file. Create the data plane resources:
oc create --save-config -f openstack_preprovisioned_networker_node_set.yaml -n openstack
$ oc create --save-config -f openstack_preprovisioned_networker_node_set.yaml -n openstack
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Verify that the data plane resources have been created by confirming that the status is
SetupReady
:oc wait openstackdataplanenodeset openstack-data-plane --for condition=SetupReady --timeout=10m
$ oc wait openstackdataplanenodeset openstack-data-plane --for condition=SetupReady --timeout=10m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow When the status is
SetupReady
the command returns acondition met
message, otherwise it returns a timeout error.For information about the data plane conditions and states, see Data plane conditions and states in Deploying Red Hat OpenStack Services on OpenShift.
Verify that the
Secret
resource was created for the node set:oc get secret | grep openstack-data-plane
$ oc get secret | grep openstack-data-plane dataplanenodeset-openstack-data-plane Opaque 1 3m50s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Verify the services were created:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.1. Example OpenStackDataPlaneNodeSet CR for pre-provisioned Networker nodes Copiar enlaceEnlace copiado en el portapapeles!
The following example OpenStackDataPlaneNodeSet
CR creates a node set from pre-provisioned Networker nodes with some node-specific configuration. Update the name of the OpenStackDataPlaneNodeSet
CR in this example to a name that describes the nodes in the set. The OpenStackDataPlaneNodeSet
CR name must be unique, contain only lower case alphanumeric characters and -
(hyphens) or .
(periods), start and end with an alphanumeric character, and have a maximum length of 53 characters.
5.3.2. Example OpenStackDataPlaneNodeSet CR for pre-provisioned Networker nodes with DPDK Copiar enlaceEnlace copiado en el portapapeles!
The following example OpenStackDataPlaneNodeSet CR creates a node set from pre-provisioned Networker nodes with OVS-DPDK and some node-specific configuration. Update the name of the OpenStackDataPlaneNodeSet CR in this example to a name that describes the nodes in the set. The OpenStackDataPlaneNodeSet CR name must be unique, contain only lower case alphanumeric characters and - (hyphens) or . (periods), start and end with an alphanumeric character, and have a maximum length of 53 characters.
5.4. Creating an OpenStackDataPlaneNodeSet CR for a set of Networker nodes with unprovisioned nodes Copiar enlaceEnlace copiado en el portapapeles!
To create Networker nodes with unprovisioned nodes, you must perform the following tasks:
-
Create a
BareMetalHost
custom resource (CR) for each bare-metal Networker node. -
Define an
OpenStackDataPlaneNodeSet
CR for the Networker nodes.
Prerequisites
- Your RHOCP cluster supports provisioning bare-metal nodes. For more information, see Planning provisioning for bare-metal data plane nodes in Planning your deployment.
- Your Cluster Baremetal Operator (CBO) is configured for provisioning. For more information, see Provisioning [metal3.io/v1alpha1] in the RHOCP API Reference.
5.4.1. Creating the BareMetalHost CRs for unprovisioned Networker nodes Copiar enlaceEnlace copiado en el portapapeles!
You must create a BareMetalHost
custom resource (CR) for each bare-metal Networker node. At a minimum, you must provide the data required to add the bare-metal Networker node on the network so that the remaining installation steps can access the node and perform the configuration.
If you use the ctlplane
interface for provisioning, to avoid the kernel rp_filter
logic from dropping traffic, configure the DHCP service to use an address range different from the ctlplane
address range. This ensures that the return traffic remains on the machine network interface.
Procedure
The Bare Metal Operator (BMO) manages
BareMetalHost
custom resources (CRs) in theopenshift-machine-api
namespace by default. Update theProvisioning
CR to watch all namespaces:oc patch provisioning provisioning-configuration --type merge -p '{"spec":{"watchAllNamespaces": true }}'
$ oc patch provisioning provisioning-configuration --type merge -p '{"spec":{"watchAllNamespaces": true }}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow If you are using virtual media boot for bare-metal Networker nodes and the nodes are not connected to a provisioning network, you must update the
Provisioning
CR to enablevirtualMediaViaExternalNetwork
, which enables bare-metal connectivity through the external network:oc patch provisioning provisioning-configuration --type merge -p '{"spec":{"virtualMediaViaExternalNetwork": true }}'
$ oc patch provisioning provisioning-configuration --type merge -p '{"spec":{"virtualMediaViaExternalNetwork": true }}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Create a file on your workstation that defines the
Secret
CR with the credentials for accessing the Baseboard Management Controller (BMC) of each bare-metal Networker node in the node set:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Replace
<base64_username>
and<base64_password>
with strings that are base64-encoded. You can use the following command to generate a base64-encoded string:echo -n <string> | base64
$ echo -n <string> | base64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow TipIf you do not want to base64-encode the username and password, you can use the
stringData
field instead of thedata
field to set the username and password.
Create a file named
bmh_networker_nodes.yaml
on your workstation, that defines theBareMetalHost
CR for each bare-metal Networker node. The following example creates aBareMetalHost
CR with the provisioning method Redfish virtual media:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Metadata labels, such as
app
,workload
, andnodeName
are key-value pairs that provide varying levels of granularity for labelling nodes. You can use these labels when you create anOpenStackDataPlaneNodeSet
CR to describe the configuration of bare-metal nodes to be provisioned or to define nodes in a node set. - 2
- The URL for communicating with the node’s BMC controller. For information about BMC addressing for other provisioning methods, see BMC addressing in the RHOCP Deploying installer-provisioned clusters on bare metal guide.
- 3
- The name of the
Secret
CR you created in the previous step for accessing the BMC of the node. - 4
- Optional: The name of the network configuration secret in the local namespace to pass to the pre-provisioning image. The network configuration must be in
nmstate
format.
For more information about how to create a
BareMetalHost
CR, see About the BareMetalHost resource in the RHOCP Postinstallation configuration guide.Create the
BareMetalHost
resources:oc create -f bmh_networker_nodes.yaml
$ oc create -f bmh_networker_nodes.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Verify that the
BareMetalHost
resources have been created and are in theAvailable
state:oc get bmh
$ oc get bmh NAME STATE CONSUMER ONLINE ERROR AGE edpm-networker-0 Available openstack-edpm true 2d21h edpm-networker-1 Available openstack-edpm true 2d21h ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.2. Creating an OpenStackDataPlaneNodeSet CR for a set of Networker nodes with unprovisioned nodes Copiar enlaceEnlace copiado en el portapapeles!
Define an OpenStackDataPlaneNodeSet
custom resource (CR) for group of Networker nodes. You can define as many node sets as necessary for your deployment. Each node can be included in only one OpenStackDataPlaneNodeSet
CR.
You use the nodeTemplate
field to configure the common properties to apply to all nodes in an OpenStackDataPlaneNodeSet
CR, and the nodeTemplate.nodes
field for node-specific properties. Node-specific configurations override the inherited values from the nodeTemplate
.
For an example OpenStackDataPlaneNodeSet
CR that creates a node set from unprovisioned Networker nodes, see Example node set CR for unprovisioned Networker nodes with OVS-DPDK.
Prerequisites
-
A
BareMetalHost
CR is created for each unprovisioned node that you want to include in each node set. For more information, see Creating theBareMetalHost
CRs for unprovisioned nodes.
Procedure
Create a file on your workstation named
openstack_unprovisioned_node_set.yaml
to define theOpenStackDataPlaneNodeSet
CR:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- The
OpenStackDataPlaneNodeSet
CR name must be unique, contain only lower case alphanumeric characters and-
(hyphens) or.
(periods), start and end with an alphanumeric character, and have a maximum length of 53 characters. Update the name in this example to a name that reflects the nodes in the set. - 2
- Optional: A list of environment variables to pass to the pod.
Connect the data plane to the control plane network:
spec: ... networkAttachments: - ctlplane
spec: ... networkAttachments: - ctlplane
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Specify that the nodes in this set are unprovisioned and must be provisioned when creating the resource:
preProvisioned: false
preProvisioned: false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Define the
baremetalSetTemplate
field to describe the configuration of the bare-metal nodes that must be provisioned when creating the resource:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Replace
<bmh_namespace>
with the namespace defined in the correspondingBareMetalHost
CR for the node, for example,openshift-machine-api
. -
Replace
<ansible_ssh_user>
with the username of the Ansible SSH user, for example,cloud-admin
. -
Replace
<bmh_label>
with the label defined in the correspondingBareMetalHost
CR for the node, for example,openstack-networker
. Metadata labels, such asapp
,workload
, andnodeName
are key-value pairs that provide varying levels of granularity for labelling nodes. Set thebmhLabelSelector
field to select data plane nodes based on labels that match the labels in the correspondingBareMetalHost
CR. -
Replace
<interface>
with the control plane interface the node connects to, for example,enp6s0
.
-
Replace
If you created a custom
OpenStackProvisionServer
CR, add it to yourbaremetalSetTemplate
definition:baremetalSetTemplate: ... provisionServerName: my-os-provision-server
baremetalSetTemplate: ... provisionServerName: my-os-provision-server
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Add the SSH key secret that you created to enable Ansible to connect to the data plane nodes:
nodeTemplate: ansibleSSHPrivateKeySecret: <secret-key>
nodeTemplate: ansibleSSHPrivateKeySecret: <secret-key>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Replace
<secret-key>
with the name of the SSH keySecret
CR you created in <link>[Creating the data plane secrets], for example,dataplane-ansible-ssh-private-key-secret
.
-
Replace
-
Create a Persistent Volume Claim (PVC) in the
openstack
namespace on your Red Hat OpenShift Container Platform (RHOCP) cluster to store logs. Set thevolumeMode
toFilesystem
andaccessModes
toReadWriteOnce
. Do not request storage for logs from a PersistentVolume (PV) that uses the NFS volume plugin. NFS is incompatible with FIFO and theansible-runner
creates a FIFO file to write to store logs. For information about PVCs, see Understanding persistent storage in the RHOCP Storage guide and Red Hat OpenShift Container Platform cluster requirements in Planning your deployment. Enable persistent logging for the data plane nodes:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Replace
<pvc_name>
with the name of the PVC storage on your RHOCP cluster.
-
Replace
Specify the management network:
nodeTemplate: ... managementNetwork: ctlplane
nodeTemplate: ... managementNetwork: ctlplane
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Specify the
Secret
CRs used to source the usernames and passwords to register the operating system of the nodes that are not registered to the Red Hat Customer Portal, and enable repositories for your nodes. The following example demonstrates how to register your nodes to Red Hat Content Delivery Network (CDN). For information about how to register your nodes with Red Hat Satellite 6.13, see Managing Hosts.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- The user associated with the secret you created in <link>[Creating the data plane secrets].
- 2
- The Ansible variables that customize the set of nodes. For a list of Ansible variables that you can use, see https://openstack-k8s-operators.github.io/edpm-ansible/.
For a complete list of the Red Hat Customer Portal registration commands, see https://access.redhat.com/solutions/253273. For information about how to log into
registry.redhat.io
, see https://access.redhat.com/RegistryAuthentication#creating-registry-service-accounts-6.Add the network configuration template to apply to your data plane nodes.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- When deploying a node set for the first time, set the
edpm_network_config_update
variable tofalse
. When updating or adopting a node set, setedpm_network_config_update
totrue
.
ImportantAfter an update or an adoption, you must reset
edpm_network_config_update
tofalse
. Otherwise, the nodes could lose network access. Wheneveredpm_network_config_update
istrue
, the updated network configuration is reapplied every time anOpenStackDataPlaneDeployment
CR is created that includes theconfigure-network
service that is a member of theservicesOverride
list.The following example applies a VLANs network configuration to a set of the data plane Networker nodes with DPDK:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow The following example applies a VLANs network configuration to a set of data plane Networker nodes without DPDK:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow For more information about data plane network configuration, see Customizing data plane networks in Configuring network services.
-
Add the common configuration for the set of nodes in this group under the
nodeTemplate
section. Each node in thisOpenStackDataPlaneNodeSet
inherits this configuration. For information about the properties you can use to configure common node attributes, seeOpenStackDataPlaneNodeSet
CR spec properties in the Deploying Red Hat OpenStack Services on OpenShift guide. Define each node in this node set:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- The node definition reference, for example,
edpm-networker-0
. Each node in the node set must have a node definition. - 2
- Defines the IPAM and the DNS records for the node.
- 3
- Specifies a predictable IP address for the network that must be in the allocation range defined for the network in the
NetConfig
CR. - 4
- Optional: The
BareMetalHost
CR metadata label that selects theBareMetalHost
CR for the data plane node. The label can be any label that is defined for theBareMetalHost
CR. The label is used with thebmhLabelSelector
label configured in thebaremetalSetTemplate
definition to select theBareMetalHost
for the node.
Note-
Nodes defined within the
nodes
section can configure the same Ansible variables that are configured in thenodeTemplate
section. Where an Ansible variable is configured for both a specific node and within thenodeTemplate
section, the node-specific values override those from thenodeTemplate
section. -
You do not need to replicate all the
nodeTemplate
Ansible variables for a node to override the default and set some node-specific values. You only need to configure the Ansible variables you want to override for the node. -
Many
ansibleVars
includeedpm
in the name, which stands for "External Data Plane Management".
For information about the properties you can use to configure common node attributes, see
OpenStackDataPlaneNodeSet
CR spec properties in the Deploying Red Hat OpenStack Services on OpenShift guide.-
Save the
openstack_unprovisioned_node_set.yaml
definition file. Create the data plane resources:
oc create --save-config -f openstack_unprovisioned_node_set.yaml -n openstack
$ oc create --save-config -f openstack_unprovisioned_node_set.yaml -n openstack
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Verify that the data plane resources have been created by confirming that the status is
SetupReady
:oc wait openstackdataplanenodeset openstack-data-plane --for condition=SetupReady --timeout=10m
$ oc wait openstackdataplanenodeset openstack-data-plane --for condition=SetupReady --timeout=10m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow When the status is
SetupReady
the command returns acondition met
message, otherwise it returns a timeout error.For information about the data plane conditions and states, see Data plane conditions and states in Deploying Red Hat OpenStack Services on OpenShift.
Verify that the
Secret
resource was created for the node set:oc get secret -n openstack | grep openstack-data-plane
$ oc get secret -n openstack | grep openstack-data-plane dataplanenodeset-openstack-data-plane Opaque 1 3m50s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Verify that the nodes have transitioned to the
provisioned
state:oc get bmh
$ oc get bmh NAME STATE CONSUMER ONLINE ERROR AGE edpm-networker-0 provisioned openstack-data-plane true 3d21h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Verify that the services were created:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.3. Example node set CR for unprovisioned Networker nodes with OVS-DPDK Copiar enlaceEnlace copiado en el portapapeles!
The following example OpenStackDataPlaneNodeSet
CR creates a node set from unprovisioned Networker nodes with OVS-DPDK and some node-specific configuration. The unprovisioned Networker nodes are provisioned when the node set is created. Update the name of the OpenStackDataPlaneNodeSet
CR in this example to a name that reflects the nodes in the set. The OpenStackDataPlaneNodeSet
CR name must be unique, contain only lower case alphanumeric characters and -
(hyphens) or .
(periods), start and end with an alphanumeric character, and have a maximum length of 53 characters.
5.5. Deploying the data plane Copiar enlaceEnlace copiado en el portapapeles!
You use the OpenStackDataPlaneDeployment
CRD to configure the services on the data plane nodes and deploy the data plane. You control the execution of Ansible on the data plane by creating OpenStackDataPlaneDeployment
custom resources (CRs). Each OpenStackDataPlaneDeployment
CR models a single Ansible execution. When the OpenStackDataPlaneDeployment
successfully completes execution, it does not automatically execute the Ansible again, even if the OpenStackDataPlaneDeployment
or related OpenStackDataPlaneNodeSet
resources are changed. To start another Ansible execution, you must create another OpenStackDataPlaneDeployment
CR.
Create an OpenStackDataPlaneDeployment
(CR) that deploys each of your OpenStackDataPlaneNodeSet
CRs.
Procedure
Create a file on your workstation named
openstack_data_plane_deploy.yaml
to define theOpenStackDataPlaneDeployment
CR:apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneDeployment metadata: name: data-plane-deploy namespace: openstack
apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneDeployment metadata: name: data-plane-deploy
1 namespace: openstack
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- The
OpenStackDataPlaneDeployment
CR name must be unique, must consist of lower case alphanumeric characters,-
(hyphen) or.
(period), and must start and end with an alphanumeric character. Update the name in this example to a name that reflects the node sets in the deployment.
Add all the
OpenStackDataPlaneNodeSet
CRs that you want to deploy:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Replace
<nodeSet_name>
with the names of theOpenStackDataPlaneNodeSet
CRs that you want to include in your data plane deployment.
-
Replace
-
Save the
openstack_data_plane_deploy.yaml
deployment file. Deploy the data plane:
oc create -f openstack_data_plane_deploy.yaml -n openstack
$ oc create -f openstack_data_plane_deploy.yaml -n openstack
Copy to Clipboard Copied! Toggle word wrap Toggle overflow You can view the Ansible logs while the deployment executes:
oc get pod -l app=openstackansibleee -w oc logs -l app=openstackansibleee -f --max-log-requests 10
$ oc get pod -l app=openstackansibleee -w $ oc logs -l app=openstackansibleee -f --max-log-requests 10
Copy to Clipboard Copied! Toggle word wrap Toggle overflow If the
oc logs
command returns an error similar to the following error, increase the--max-log-requests
value:error: you are attempting to follow 19 log streams, but maximum allowed concurrency is 10, use --max-log-requests to increase the limit
error: you are attempting to follow 19 log streams, but maximum allowed concurrency is 10, use --max-log-requests to increase the limit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Verify that the data plane is deployed:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow For information about the meaning of the returned status, see Data plane conditions and states in Deploying Red Hat OpenStack Services on OpenShift
If the status indicates that the data plane has not been deployed, then troubleshoot the deployment. For information, see Troubleshooting the data plane creation and deployment in the Deploying Red Hat OpenStack Services on OpenShift guide.