此内容没有您所选择的语言版本。
Chapter 15. Enabling SSL/TLS on Internal and Public Endpoints with Identity Management
You can enable SSL/TLS on certain overcloud endpoints. Due to the number of certificates required, the director integrates with a Red Hat Identity Management (IdM) server to act as a certificate authority and manage the overcloud certificates. This process involves using novajoin
to enroll overcloud nodes to the IdM server.
To check the status of TLS support across the OpenStack components, refer to the TLS Enablement status matrix.
15.1. Add the undercloud to the CA 复制链接链接已复制到粘贴板!
Before deploying the overcloud, you must add the undercloud to the Certificate Authority (CA):
On the undercloud node, install the
python-novajoin
package:sudo yum install python-novajoin
$ sudo yum install python-novajoin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow On the undercloud node, run the
novajoin-ipa-setup
script, adjusting the values to suit your deployment:Copy to Clipboard Copied! Toggle word wrap Toggle overflow In the following section, you will use the resulting One-Time Password (OTP) to enroll the undercloud.
15.2. Add the undercloud to IdM 复制链接链接已复制到粘贴板!
This procedure registers the undercloud with IdM and configures novajoin. Configure the following settings in undercloud.conf
(within the [DEFAULT]
section):
The novajoin service is disabled by default. To enable it:
[DEFAULT] enable_novajoin = true
[DEFAULT] enable_novajoin = true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow You need set a One-Time Password (OTP) to register the undercloud node with IdM:
ipa_otp = <otp>
ipa_otp = <otp>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ensure the overcloud’s domain name served by neutron’s DHCP server matches the IdM domain (your kerberos realm in lowercase):
overcloud_domain_name = <domain>
overcloud_domain_name = <domain>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Set the appropriate hostname for the undercloud:
undercloud_hostname = <undercloud FQDN>
undercloud_hostname = <undercloud FQDN>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Set IdM as the nameserver for the undercloud:
undercloud_nameservers = <IdM IP>
undercloud_nameservers = <IdM IP>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow For larger environments, you will need to review the novajoin connection timeout values. In
undercloud.conf
, add a reference to a new file calledundercloud-timeout.yaml
:hieradata_override = /home/stack/undercloud-timeout.yaml
hieradata_override = /home/stack/undercloud-timeout.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Add the following options to
undercloud-timeout.yaml
. You can specify the timeout value in seconds, for example,5
:nova::api::vendordata_dynamic_connect_timeout: <timeout value> nova::api::vendordata_dynamic_read_timeout: <timeout value>
nova::api::vendordata_dynamic_connect_timeout: <timeout value> nova::api::vendordata_dynamic_read_timeout: <timeout value>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Save the
undercloud.conf
file. Run the undercloud deployment command to apply the changes to your existing undercloud:
openstack undercloud install
$ openstack undercloud install
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
15.3. Configure overcloud DNS 复制链接链接已复制到粘贴板!
For automatic detection of your IdM environment, and easier enrollment, consider using IdM as your DNS server:
Connect to your undercloud:
source ~/stackrc
$ source ~/stackrc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Configure the control plane subnet to use IdM as the DNS name server:
openstack subnet set ctlplane-subnet --dns-nameserver <idm_server_address>
$ openstack subnet set ctlplane-subnet --dns-nameserver <idm_server_address>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Set the
DnsServers
parameter in an environment file to use your IdM server:parameter_defaults: DnsServers: ["<idm_server_address>"]
parameter_defaults: DnsServers: ["<idm_server_address>"]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow This parameter is usually defined in a custom
network-environment.yaml
file.
15.4. Configure overcloud to use novajoin 复制链接链接已复制到粘贴板!
To enable IdM integration, create a copy of the
/usr/share/openstack-tripleo-heat-templates/environments/predictable-placement/custom-domain.yaml
environment file:cp /usr/share/openstack-tripleo-heat-templates/environments/predictable-placement/custom-domain.yaml \ /home/stack/templates/custom-domain.yaml
$ cp /usr/share/openstack-tripleo-heat-templates/environments/predictable-placement/custom-domain.yaml \ /home/stack/templates/custom-domain.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Edit the
/home/stack/templates/custom-domain.yaml
environment file and set theCloudDomain
andCloudName*
values to suit your deployment. For example:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Include the following environment files in the overcloud deployment process:
-
/usr/share/openstack-tripleo-heat-templates/environments/ssl/enable-internal-tls.yaml
-
/usr/share/openstack-tripleo-heat-templates/environments/ssl/tls-everywhere-endpoints-dns.yaml
/home/stack/templates/custom-domain.yaml
For example:
openstack overcloud deploy \ --templates \ -e /usr/share/openstack-tripleo-heat-templates/environments/ssl/enable-internal-tls.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/ssl/tls-everywhere-endpoints-dns.yaml \ -e /home/stack/templates/custom-domain.yaml \
openstack overcloud deploy \ --templates \ -e /usr/share/openstack-tripleo-heat-templates/environments/ssl/enable-internal-tls.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/ssl/tls-everywhere-endpoints-dns.yaml \ -e /home/stack/templates/custom-domain.yaml \
Copy to Clipboard Copied! Toggle word wrap Toggle overflow As a result, the deployed overcloud nodes will be automatically enrolled with IdM.
-
This only sets TLS for the internal endpoints. For the external endpoints you can use the normal means of adding TLS with the
/usr/share/openstack-tripleo-heat-templates/environments/ssl/enable-tls.yaml
environment file (which must be modified to add your custom certificate and key). Consequently, youropenstack deploy
command would be similar to this:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Alternatively, you can also use IdM to issue your public certificates. In that case, you need to use the
/usr/share/openstack-tripleo-heat-templates/environments/services/haproxy-public-tls-certmonger.yaml
environment file. For example:Copy to Clipboard Copied! Toggle word wrap Toggle overflow