Chapter 10. Configuring a Single Keystone Multiple OpenStacks multi-region deployment to simplify user management and configuration
The Single Keystone Multiple OpenStacks (SKMO) multi-region Red Hat OpenStack Services on OpenShift (RHOSO) deployment simplifies user management and configuration for multiple regions.
In standard multi-region RHOSO deployments, each region is isolated with its own Identity (keystone) and Dashboard (horizon) services. This requires separate user accounts for each region, making credential management and rotation difficult.
10.1. Single Keystone Multiple OpenStacks deployment architecture Copy linkLink copied to clipboard!
The Single Keystone Multiple OpenStacks (SKMO) multi-region Red Hat OpenStack Services on OpenShift (RHOSO) deployment requires the following architecture to simplify the user management and configuration of multiple regions:
A single
centralregion and multipleworkloadregions.ImportantWhen you deploy each
workloadregion, you must define a unique RHOSO namespace, a unique region name, and unique Identity service user names for all the OpenStack services that communicate with the Identity service. For more information about the unique networking and configuration requirements of the SKMO deployment, see Plan your Single Keystone Multiple OpenStacks deployment.-
The
centralregion provides the Dashboard (horizon) service that is shared by all the regions of the SKMO deployment. The
centralregion provides a centralized Identity (keystone) service:-
You must use the Identity service of the
centralregion to create the default administrator user for eachworkloadregion. -
You must use the Identity service of the
centralregion to create the catalog entries for the public and private endpoints of the Identity service for eachworkloadregion.
-
You must use the Identity service of the
-
The centralized Identity and Dashboard services provide a
single pane of glassfor the simplified configuration and management of the users. Each end user has a single set of credentials. You can enable or disable their access to every region in thecentralregion. For more information, see Deploy Single Keystone Multiple OpenStacks.
10.2. Plan your Single Keystone Multiple OpenStacks deployment Copy linkLink copied to clipboard!
The Single Keystone Multiple OpenStacks (SKMO) multi-region Red Hat OpenStack Services on OpenShift (RHOSO) deployment adopts an interdependent regional architecture. The central region provides centralized Dashboard (horizon) and Identity (keystone) services that are relied upon by all the other workload regions. Therefore, you must implement the following requirements for a successful SKMO deployment:
The interdependence between the
workloadand thecentralregions requires that every region must provide the following unique identifications for a successful SKMO deployment:A unique namespace to differentiate the RHOSO deployment of each region. For more information, see Create a unique namespace for each
workloadregion.ImportantThe RHOSO deployment namespace forms part of the DNS name for each OpenStack service. If you do not use different RHOSO namespaces for every region, conflicts occur between services in your different regions.
A unique region name defined by the
specof their Identity (keystone) service in theOpenStackControlPlanecustom resource (CR). For more information, see Modify the deployment of eachworkloadregion.NoteWhen the
centralRed Hat OpenStack Services on OpenShift (RHOSO) region is deployed, this region is calledregionOneby default. If you use aworkloadregion naming convention, then you can rename the region name of thecentralregion to make it more easily identifiable. For more information, see Rename thecentralregion.The OpenStack services that communicate with the Identity service must use uniquely named Identity service users to simplify the task of managing their individual credentials. For more information, see Modify the deployment of each
workloadregion.WarningIf you do not specify unique Identity service user names for all the OpenStack services that communicate with the Identity service, then changing the password for a service user disrupts this service in all the
workloadregions that use this same user - unless you schedule a maintenance window for all of these regions first.
The interdependence between the
workloadand thecentralregions imposes the following restrictions that must be met by the logical networking topology of your DNS configuration:-
Each
workloadregion must resolve the DNS name of the Identity service in thecentralregion and access it. -
The data plane (EDPM) nodes in each workload region must resolve the DNS name of the Identity service in the
centralregion and access it. -
After deploying the
workloadregions, the Dashboard (horizon) service in thecentralregion must resolve the DNS names in the service catalog of everyworkloadregion and access them.
-
Each
The interdependence between the Identity services in each
workloadregion and the Identity service of thecentralregion changes how the service-to-service communication for theworkloadregions are routed. For more information, see Create the public and private endpoints of eachworkloadregion.In a normal OpenStack deployment like the
centralregion, the Identity service has both a public and internal endpoint. These endpoints exist in separate networks to keep the internal service-to-service communication separate from public traffic. However, theworkloadregions are forced to send all of their internal service-to-service communication traffic to the public endpoint and therefore the public network of thecentralregion. Even though the internal service-to-service communication traffic of theworkloadregions is encrypted, it is more vulnerable to DDOS attacks because it is not isolated on a separate internal network making it easier for external attackers to intercept these messages.The
barbican-keystone-listenerservice requires access to the RabbitMQ message queue so that when a project is deleted by the Identity service (keystone), it can tell the Key Manager service (barbican) to clean up the related secrets and the other artifacts that it manages.In an SKMO deployment, the RabbitMQ message queue of the
centralregion and not theworkloadregions contain the necessary Identity service (keystone) messages. For this reason, thebarbican-keystone-listenerservices in theworkloadregions cannot know when projects are deleted so that the Key Manager service can clean them up. Therefore you must implement a third-party application like Skupper and configure your SKMO deployment to allow thebarbican-keystone-listenerservices in theworkloadregions to access the RabbitMQ message queue in thecentralregion to clean up deleted projects. For more information, see Enable RabbitMQ access for barbican-keystone-listener in SKMO.
10.3. Deploy Single Keystone Multiple OpenStacks Copy linkLink copied to clipboard!
A Single Keystone Multiple OpenStacks (SKMO) multi-region Red Hat OpenStack Services on OpenShift (RHOSO) deployment creates a centralized Dashboard (horizon) and Identity (keystone) service to provide a single pane of glass for the simplified configuration and management of the users. Each end user has a single set of credentials and their access to every workload region can be enabled or disabled in the central region.
You must not manually configure the Dashboard (horizon) service of the central region to connect to the various workload regions because a Managing regions dropdown list is added to the UI automatically for a SKMO deployment to allow users to select the required workload regions. For more information, see SKMO Dashboard region configuration.
Prerequisites
- The interdependent regional architecture of the SKMO deployment requires a number of unique requirements to be met to ensure a successful deployment. For more information, see Plan your Single Keystone Multiple OpenStacks deployment.
Procedure
Deploy the
centralregion calledregionOneby default, unless you rename it. For more information, see Rename thecentralregion.The deployment of the
centralregion does not require a data plane.-
Create the default administrator Identity service user for each
workloadregion in thecentralregion. These Identity service users must be granted theadminrole in theadminproject of thecentralregion. For more information, see Create the default administrator user for eachworkloadregion. Create the catalog entries for the public and private endpoints of the Identity service in each
workloadregion by using the Identity service in thecentralregion. For more information, see Create the public and private endpoints of eachworkloadregion.NoteBoth the public and private endpoints of the Identity service in each
workloadregion point to the public Identity service endpoint in thecentralregion.-
Modify and deploy each
workloadregion. An important part of this deployment modification involves creating a unique region name and unique Identity service users for eachworkloadregion. For more information, see Modify the deployment of eachworkloadregion. -
After you deploy a
workloadregion of a multi-region Red Hat OpenStack Services on OpenShift (RHOSO) Single Keystone Multiple OpenStacks (SKMO) deployment you must configure the deployedcentralregion to trust thisworkloadregion. For more information, see Configure thecentralregion to trust a deployedworkloadregion.
10.4. Rename the central region Copy linkLink copied to clipboard!
When the central Red Hat OpenStack Services on OpenShift (RHOSO) region of a Single Keystone Multiple OpenStacks (SKMO) multi-region Red Hat OpenStack Services on OpenShift (RHOSO) deployment is deployed this region is called regionOne by default. If you use a workload region naming convention when you name the workload regions you can rename the central region to make it more easily identifiable.
Prerequisites
-
You are logged on to a workstation that has access to the RHOSO control plane as a user with
cluster-adminprivileges. -
You have the
occommand line tool installed on your workstation.
Procedure
In the
centralregion, set the default RHOSO namespace:$ oc project <central-region-namespace>where:
<central-region-namespace>-
Specifies the name of the unique namespace for the
centralregion, for exampleopenstack.
Edit the
OpenStackControlPlaneCR of yourcentralregion on your workstation:$ oc edit openstackcontrolplane <name>where:
<name>-
Specifies the name of your YAML
OpenStackControlPlaneCR. You can use the following command to retrieve this name:oc get openstackcontrolplane.
Configure the
regionparameter of the Identity service (keystone):... spec: ... keystone: ... template: ... region: <central-region-name>where:
<central-region-name>-
Specifies the region name for your
centralregion.
- Save and close the editor to apply this change.
Wait for the deployment of the control plane to reach the
Readystatus:$ oc wait openstackcontrolplane <name> --for=condition=Ready --timeout=600s
10.5. Create the default administrator user for each workload region Copy linkLink copied to clipboard!
You must use the Identity service (keystone) of the deployed Red Hat OpenStack Services on OpenShift (RHOSO) central region of a Single Keystone Multiple OpenStacks (SKMO) multi-region Red Hat OpenStack Services on OpenShift (RHOSO) deployment to create the default administrator user for each workload region. These workload administrator users must be granted the admin role in the admin project of the central region. For more information, see Deploy Single Keystone Multiple OpenStacks.
Prerequisites
-
You are logged on to a workstation that has access to the RHOSO control plane as a user with
cluster-adminprivileges. -
You have the
occommand line tool installed on your workstation.
Procedure
In the
centralregion, set the default RHOSO namespace:$ oc project <central-region-namespace>where:
<central-region-namespace>-
Specifies the name of the unique namespace for the
centralregion, for exampleopenstack.
Access the remote shell for the
OpenStackClientpod from your workstation to run OpenStack CLI commands:$ oc rsh openstackclientCreate the default administrator user for each
workloadregion:$ openstack user create --domain Default --project <central-region-admin-project> --project-domain Default --password <workload-region-admin-password> <workload-region-admin-name>where:
<central-region-admin-project>-
Specifies the name of the admin project in the
centralregion that isadminby default. <workload-region-admin-password>Specifies the password of the default administrator user of each`workload` region.
NoteSet this password as the value of the
AdminPassword:parameter of theSecretcustom resource (CR) file that you must create to provide secure access to the RHOSO service pods when you deploy eachworkloadregion.<workload-region-admin-name>-
Specifies the name of the default administrator user of each
workloadregion, for exampleadmin-two.
Add the following roles to each default
workloadregion administrator user:$ openstack role add --project admin --project-domain Default --user <workload-region-admin-name> --user-domain Default admin $ openstack role add --system all --user <workload-region-admin-name> --user-domain Default admin
10.6. Create the public and private endpoints of each workload region Copy linkLink copied to clipboard!
You must use the Identity service (keystone) of the deployed Red Hat OpenStack Services on OpenShift (RHOSO) central region of a Single Keystone Multiple OpenStacks (SKMO) multi-region Red Hat OpenStack Services on OpenShift (RHOSO) deployment to create the catalog entries for the public and private endpoints of the Identity service in each workload region. For more information, see Deploy Single Keystone Multiple OpenStacks.
Both the public and private endpoints of the Identity service in each workload region must specify the public Identity service endpoint of the central region.
Therefore even though the internal service-to-service communication traffic of the workload regions is encrypted it is more vulnerable to DDOS attacks because it is not segregated on a separate internal network making it easier for external attackers to intercept these messages.
Prerequisites
-
You are logged on to a workstation that has access to the RHOSO control plane as a user with
cluster-adminprivileges. -
You have the
occommand line tool installed on your workstation.
Procedure
In the
centralregion, set the default RHOSO namespace:$ oc project <central-region-namespace>where:
<central-region-namespace>-
Specifies the name of the unique namespace for the
centralregion, for exampleopenstack.
Access the remote shell for the
OpenStackClientpod from your workstation to run OpenStack CLI commands:$ oc rsh openstackclientObtain the public Identity service endpoint of the
centralregion:$ openstack endpoint list --region <central-region-name> --service keystone --interface publicwhere:
<central-region-name>-
Specifies the name of your
centralregion, which isregionOneby default.
-
Copy this URL that is referenced in this procedure as
<central-region-public-keystone-url>. Create the public and private endpoints of each
workloadregion to specify the public Identity service endpoint of thecentralregion:$ openstack endpoint create --region <workload-region-name> keystone public <central-region-public-keystone-url> $ openstack endpoint create --region <workload-region-name> keystone internal <central-region-public-keystone-url>where:
<workload-region-name>-
Specifies the name of the required
workloadregion, for exampleregionTwo.
This creates the catalog entries for the public and private endpoints of the Identity service in each
workloadregion in the Identity service catalog of thecentralregion.
10.7. Modify the deployment of each workload region Copy linkLink copied to clipboard!
You must modify the deployment of each workload region of a Single Keystone Multiple OpenStacks (SKMO) multi-region Red Hat OpenStack Services on OpenShift (RHOSO) deployment because the Dashboard (horizon) and Identity (keystone) service of the central region is shared with all the workload regions. For more information, see Deploy Single Keystone Multiple OpenStacks.
An important part of this deployment modification involves creating a unique region name and unique Identity service users for each workload region. For more information, see Plan your Single Keystone Multiple OpenStacks deployment.
Procedure
-
Create a unique RHOSO deployment namespace for each
workloadregion to differentiate these RHOSO deployments from each other. For more information, see Create a unique namespace for eachworkloadregion. -
Specify the password of the administrator user that you manually created for each
workloadregion as the value of theAdminPassword:parameter when you create theSecretcustom resource (CR) to provide secure access to the RHOSO service pods in eachworkloadregion. For more information, see Create the default administrator user for eachworkloadregion and Provide secure access to RHOSO services in the Deploying Red Hat OpenStack Services on OpenShift guide. -
Obtain the CA certificate from the
centralregion and add it to a secret in eachworkloadregion so it can be trusted. For more information, see Configure eachworkloadregion to trust thecentralregion. Create a modified
OpenStackControlPlanecustom resource (CR) for eachworkloadregion. For more information, see Modify the control plane CR of eachworkloadregion.This involves defining a unique region name defined in the
specof the Identity (keystone) service for eachworkloadregion and creating unique Identity service users.
10.7.1. Create a unique namespace for each workload region Copy linkLink copied to clipboard!
You must create a unique namespace for every workload region of your Single Keystone Multiple OpenStacks (SKMO) multi-region Red Hat OpenStack Services on OpenShift (RHOSO) deployment. This unique namespace is necessary to differentiate the RHOSO deployment of each region.
The RHOSO deployment namespace forms part of the DNS name for each OpenStack service. If you do not use different namespaces for every region, conflicts occur between services in your different regions.
Prerequisites
-
You are logged on to a workstation that has access to the RHOCP cluster, as a user with
cluster-adminprivileges. -
You have the
occommand line tool installed on your workstation.
Procedure
Create a project in your deployed RHOSO environment:
$ oc new-project <workload-region-namespace>where:
<workload-region-namespace>-
Specifies the name of the unique namespace for each
workloadregion, for exampleopenstack-two.
Ensure that this namespace is labeled to enable privileged pod creation by the OpenStack Operators:
$ oc get namespace <workload-region-namespace> -ojsonpath='{.metadata.labels}' | jq { "kubernetes.io/metadata.name": "<workload-region-namespace>", "pod-security.kubernetes.io/enforce": "privileged", "security.openshift.io/scc.podSecurityLabelSync": "false" }If the security context constraint (SCC) is not "privileged" use the following commands to change it:
$ oc label ns <workload-region-namespace> security.openshift.io/scc.podSecurityLabelSync=false --overwrite $ oc label ns <workload-region-namespace> pod-security.kubernetes.io/enforce=privileged --overwrite
10.7.2. Configure each workload region to trust the central region Copy linkLink copied to clipboard!
After you deploy the central region of a Single Keystone Multiple OpenStacks (SKMO) multi-region Red Hat OpenStack Services on OpenShift (RHOSO) deployment, you must configure each workload region to trust the central region. For more information, see Deploy Single Keystone Multiple OpenStacks.
In the following procedure, the Identity service region name of the central region is regionOne:
Prerequisites
-
You are logged on to a workstation that has access to your Red Hat OpenShift Container Platform (RHOCP) cluster as a user with
cluster-adminprivileges. -
You have the
occommand line tool installed on your workstation.
Procedure
In the
centralregion, set the default RHOSO namespace:$ oc project <central-region-namespace>where:
<central-region-namespace>-
Specifies the name of the unique namespace for the
centralregion, for exampleopenstack.
Obtain the CA certificate in the
centralregion and extract it into a file, for exampleregionOne-ca.crt:NoteTo decode the certificate before creating the output .crt file, add
| base64 -dto this command.$ oc get secret rootca-public -o yaml | yq '.data."ca.crt"' > regionOne-ca.crt-
Copy the
regionOne-ca.crtfile to a deployedworkloadregion. In this
workloadregion, set the default RHOSO namespace:$ oc project <workload-region-namespace>where:
<workload-region-namespace>-
Specifies the name of the unique namespace for this
workloadregion, for exampleopenstack-two.
-
Create a PEM-formatted bundle in this
workloadregion, for examplecustom-ca-certs.pemthat includes the contents of thisregionOne-ca.crtfile and all the other custom CA certificates that you want eachworkloadregion to trust. Create a manifest file for a secret in this
workloadregion that specifies the contents of thecustom-ca-certs.pembundle created in the previous step. In this example, this manifest file is calledcustom-ca-certs.yamland the secret is calledcustom-ca-certs:apiVersion: v1 data: custom-ca-certs.pem: <contents-of-PEM-bundle> kind: Secret metadata: annotations: name: custom-ca-certs namespace: <workload-region-namespace> type: Opaquewhere:
<contents-of-PEM-bundle>-
Specifies the base64 encoded string of the contents of the PEM-formatted bundle created in step 2 called
custom-ca-certs.pemthat includes the CA certificate from thecentralregion. You can get this base64 encoded string by using the following command:cat custom-ca-certs.pem | base64 -w0. <workload-region-namespace>-
Specifies the name of the unique namespace that you created for this
workloadregion, for exampleopenstack-two.
Create the secret in this
workloadregion from the manifest file. In this example, this manifest file is calledcustom-ca-certs.yaml:$ oc apply -f custom-ca-certs.yaml-
Repeat steps 3 to 7 for every deployed
workloadregion.
Next steps
-
Edit the
OpenStackControlPlanecustom resource (CR) of eachworkloadregion and add thiscustom-ca-certssecret as the value of thespec.tls.caBundleSecretNameparameter. For more information, see Modify the control plane CR of eachworkloadregion.
10.7.3. Modify the control plane CR of each workload region Copy linkLink copied to clipboard!
You must modify the OpenStackControlPlane custom resource (CR) for each workload region of a Single Keystone Multiple OpenStacks (SKMO) multi-region Red Hat OpenStack Services on OpenShift (RHOSO) deployment because the Dashboard (horizon) and Identity (keystone) service of the central region is shared with all the workload regions.
An important part of modifying the OpenStackControlPlane CR for each workload region involves creating a unique region name and unique Identity service users for each workload region.
Prerequisites
-
You are logged on to a workstation that has access to the RHOCP cluster, as a user with
cluster-adminprivileges. -
You have the
occommand line tool installed on your workstation. -
You have deployed the control plane of the
centralregion. -
You have created the default administrator Identity service user for this
workloadregion in thecentralregion. For more information, see Create the default administrator user for eachworkloadregion. -
You have created the public and private endpoints of this
workloadregion to specify the public Identity service endpoint of thecentralregion. For more information, see Create the public and private endpoints of eachworkloadregion. -
You have created a unique RHOSO namespace for this
workloadregion. For more information, see Create a unique namespace for eachworkloadregion. -
You have created a secret containing all the CA certificates for this
workloadregion including the CA certificate from thecentralregion. For more information, see Configure eachworkloadregion to trust thecentralregion.
Procedure
Create a file on your workstation in this
workloadregion namedopenstack_control_plane.yamlto define theOpenStackControlPlaneCR:apiVersion: core.openstack.org/v1beta1 kind: OpenStackControlPlane metadata: name: openstack-control-plane namespace: <workload-region-namespace> spec: secret: <workload-region-secret>where:
<workload-region-namespace>-
Specifies the name of the unique namespace for this
workloadregion, in this exampleopenstack-two. <workload-region-secret>-
Specifies the name of the
SecretCR for thisworkloadregion, in this exampleosp-secret.
- Perform steps 3 to 6 of Creating the control plane in the Deploying Red Hat OpenStack Services on OpenShift guide.
Edit the
OpenStackControlPlaneCR of thisworkloadregion and specify the name of the secret containing all the CA certificates for thisworkloadregion including the CA certificate from thecentralregion, in this examplecustom-ca-certs:NoteIf this section does not exist then you must add it.
... spec: ... tls: ... caBundleSecretName: custom-ca-certsEdit the
OpenStackControlPlaneCR of thisworkloadregion and disable the Dashboard (horizon) service:... spec: ... horizon: ... enabled: falseEdit the
OpenStackControlPlaneCR of thisworkloadregion and configure the Identity (keystone) service:NoteYou might need to remove default service configuration such as metadata or if this Identity service is configured as a load balancer.
... spec: ... keystone: ... template: ... externalKeystoneAPI: true adminProject: <central-region-admin-project> adminUser: <workload-region-admin-name> region: <workload-region-name> override: ... service: ... internal: endpointURL: <central-region-public-keystone-url> ... public: endpointURL: <central-region-public-keystone-url>where:
<central-region-admin-project>-
Specifies the name of the admin project in the
centralregion that isadminby default. <workload-region-admin-name>-
Specifies the name of the default administrator user of this
workloadregion, for exampleadmin-two. <workload-region-name>-
Specifies the name of this
workloadregion, for exampleregionTwo. <central-region-public-keystone-url>-
Specifies the public Identity service endpoint of the
centralregion.
Edit the
OpenStackControlPlaneCR of thisworkloadregion to specify unique Identity service user names for all the OpenStack services that communicate with the Identity service.NoteIf you do not specify unique Identity service user names then changing the password for a service user disrupts this service in all the
workloadregions that use this same user, unless you schedule a maintenance window for all of these regions first.The following OpenStack services commonly communicate with the Identity service and require unique Identity service user names:
... spec: ... barbican: ... template: ... serviceUser: <workload-region-barbican-serviceUser> ... cinder: ... template: ... serviceUser: <workload-region-cinder-serviceUser> ... glance: ... template: ... serviceUser: <workload-region-glance-serviceUser> ... neutron: ... template: ... serviceUser: <workload-region-neutron-serviceUser> ... nova: ... template: ... serviceUser: <workload-region-nova-serviceUser> ... placement: ... template: ... serviceUser: <workload-region-placement-serviceUser> ... swift: ... template: ... swiftProxy: ... serviceUser: <workload-region-swift-serviceUser>where:
<workload-region-barbican-serviceUser>-
Specifies the unique Identity service user name for the Key Manager service (barbican) of this
workloadregion, for examplebarbican-two. <workload-region-cinder-serviceUser>-
Specifies the unique Identity service user name for the Block Storage service (cinder) of this
workloadregion, for examplecinder-two. <workload-region-glance-serviceUser>-
Specifies the unique Identity service user name for the Image service service (glance) of this
workloadregion, for exampleglance-two. <workload-region-neutron-serviceUser>-
Specifies the unique Identity service user name for the Networking service (neutron) of this
workloadregion, for exampleneutron-two. <workload-region-nova-serviceUser>-
Specifies the unique Identity service user name for the Compute service (nova) of this
workloadregion, for examplenova-two. <workload-region-placement-serviceUser>-
Specifies the unique Identity service user name for the Placement service (placement) of this
workloadregion, for exampleplacement-two. <workload-region-swift-serviceUser>-
Specifies the unique Identity service user name for the Object Storage service (swift) of this
workloadregion, for exampleswift-two.
If you use a back end that communicates to the Identity service (keystone) then you must specify the unique name of this
workloadregion when configuring this back end.NoteBack ends that do not communicate to the Identity service like Red Hat Ceph Storage do not require any additional configuration.
For example the Object Storage service (swift) back end for the Image service (glance) communicates to the Identity service. Therefore, when you configure this back end you must specify the name of this
workloadregion:... spec: ... glance: ... template: ... customServiceConfig: [DEFAULT] enabled_backends = default_backend:swift [glance_store] default_backend = default_backend [default_backend] swift_store_create_container_on_put = True swift_store_auth_version = 3 swift_store_auth_address = {{ .KeystoneInternalURL }} swift_store_endpoint_type = internalURL swift_store_user = service:glance swift_store_key = {{ .ServicePassword }} swift_store_region = <workload-region-name>where:
<workload-region-name>-
Specifies the name of this
workloadregion, for exampleregionTwo.
-
Perform all the remaining steps starting from step 7 of the Creating the control plane in the Deploying Red Hat OpenStack Services on OpenShift guide. But replace the
openstacknamespace of these commands specified as-n openstackwith the name of the unique namespace you created for theworkloadregion, in this exampleopenstack-two. In this example, specify-n openstack-twofor these commands.
10.8. Configure the central region to trust a deployed workload region Copy linkLink copied to clipboard!
After you deploy a workload region of a Single Keystone Multiple OpenStacks (SKMO) multi-region Red Hat OpenStack Services on OpenShift (RHOSO) deployment, you must configure the deployed central region to trust this workload region.
Prerequisites
-
You are logged on to a workstation that has access to your Red Hat OpenShift Container Platform (RHOCP) cluster as a user with
cluster-adminprivileges. -
You have the
occommand line tool installed on your workstation.
Procedure
In the deployed
workloadregion, set the default RHOSO namespace:$ oc project <workload-region-namespace>where:
<workload-region-namespace>-
Specifies the name of the unique namespace for this
workloadregion, for exampleopenstack-two.
Obtain the CA certificate of this
workloadregion and extract it into a file, for exampleregionTwo-ca.crt:NoteTo decode the certificate before creating the output .crt file add
| base64 -dto this command.$ oc get secret rootca-public -o yaml | yq '.data."ca.crt"' > regionTwo-ca.crt-
Copy the
regionTwo-ca.crtfile to the deployedcentralregion. In the
centralregion, set the default RHOSO namespace:$ oc project <central-region-namespace>where:
<central-region-namespace>-
Specifies the name of the unique namespace for the
centralregion, for exampleopenstack.
Edit your
OpenStackControlPlaneCR of thecentralregion:$ oc edit openstackcontrolplane <name>where:
<name>-
Specifies the name of your YAML
OpenStackControlPlaneCR. You can use the following command to retrieve this name:oc get openstackcontrolplane.
If your
OpenStackControlPlaneCR in thecentralregion contains thespec.tls.caBundleSecretNameparameter:Obtain the name of the secret that contains the PEM-formatted bundle containing all the other custom CA certificates in chains of trust if applicable that the
centralregion trusts, for examplecustom-ca-certs:... spec: ... tls: ... caBundleSecretName: custom-ca-certsEdit the specified secret, in this example
custom-ca-certs$ oc edit secret custom-ca-certs-
Append the contents of the CA certificate of the deployed
workloadregion, for exampleregionTwo-ca.crtto the PEM-formatted bundle containing all the other custom CA certificates that thecentralregion trusts. -
Save and exit the editor to automatically apply the changes to the secret, in this example
custom-ca-certs.
If your
OpenStackControlPlaneCR in thecentralregion does not contain thespec.tls.caBundleSecretNameparameter:-
Create a PEM-formatted bundle, for example
custom-ca-certs.pemthat includes the contents of thisregionTwo-ca.crtfile. Create a manifest file for the secret in the
centralregion that specifies the contents of thecustom-ca-certs.pembundle created in the previous step. In this example the manifest file is calledcustom-ca-certs.yamland the secret is calledcustom-ca-certs:apiVersion: v1 data: custom-ca-certs.pem: <contents-of-PEM-bundle> kind: Secret metadata: annotations: name: custom-ca-certs namespace: <namespace> type: Opaquewhere:
<namespace>-
Specifies the namespace of the
centralregion, in this exampleopenstack. <contents-of-PEM-bundle>-
Specifies the base64 encoded string of the contents of the PEM-formatted bundle you created called
custom-ca-certs.pemthat includes the CA certificate fromregionTwo. You can get this base64 encoded string by using the following command:cat custom-ca-certs.pem | base64 -w0.
-
Create a PEM-formatted bundle, for example
Create the secret in the
centralregion from the manifest file. In this example the manifest file is calledcustom-ca-certs.yaml:$ oc apply -f custom-ca-certs.yamlEdit your
OpenStackControlPlaneCR of thecentralregion:$ oc edit openstackcontrolplane <name>where:
<name>-
Specifies with the name of your YAML
OpenStackControlPlaneCR. You can use the following command to retrieve this name:oc get openstackcontrolplane.
Add the secret that you have created, in this example
custom-ca-certs:... spec: ... tls: ... caBundleSecretName: custom-ca-certs- Save and close the editor to automatically apply this change.
Wait for the deployment of the control plane of the
centralregion to reach theReadystatus:$ oc wait openstackcontrolplane <name> --for=condition=Ready --timeout=600s
Next steps
-
Extract the catalog entries for this
workloadregion and make sure that the Dashboard (horizon) service in thecentralregion can resolve the DNS names in the service catalog of thisworkloadregion and access them.
10.9. SKMO Dashboard region configuration Copy linkLink copied to clipboard!
When deploying a Single Keystone Multiple OpenStacks (SKMO) multi-region Red Hat OpenStack Services on OpenShift (RHOSO) deployment you must not configure the Dashboard (horizon) service of the central region to select which region a user wants to log into.
In a standard multi-region OpenStack deployment, each region is an isolated OpenStack deployment with their own Dashboard (horizon) and Identity (keystone) service. For this reason, you must configure the Dashboard (horizon) service to log into the Identity (keystone) service of each region. This configuration creates a dropdown list on the Login page for users to select the required isolated region or more specifically the Identity (keystone) service of this region.
In the SKMO deployment, the central region provides a centralized Identity (keystone) service that is used for logging into the entire multi-region deployment. Therefore, the dropdown list of regions must not be configured on the Login page of the Dashboard because no matter what workload region a user selects, the central region is always selected, confusing your users.
The SKMO Dashboard automatically provides the Managing regions dropdown list in the UI to allow users to select the required workload region.