×

先决条件

选择在 OpenStack 上安装 OpenShift Container Platform 的方法

您可以在安装程序预配的基础架构或用户预配的基础架构上安装 OpenShift Container Platform。默认安装类型使用安装程序预配的基础架构,其中安装程序会为集群预配底层基础架构。您也可以在您自己预配的基础架构上安装 OpenShift Container Platform。如果您不使用安装程序预配的基础架构,则必须自行管理和维护集群资源。

有关安装程序预配和用户预配安装流程的更多信息,请参见安装流程

在安装程序预配的基础架构上安装集群

您可以使用以下方法之一,在 Red Hat OpenStack Platform (RHOSP) 安装程序预配的基础架构上安装集群:

  • 在 OpenStack 上安装具有自定义设置的集群:您可以在 RHOSP 上安装自定义集群。安装程序允许在安装阶段应用一些自定义设置。许多其他自定义选项可在安装后使用。

  • 在受限网络中的 OpenStack 上安装集群:您可以通过创建安装发行版内容的内部镜像,在受限或断开连接的网络中的 RHOSP 上安装 OpenShift Container Platform。您可以使用此方法安装不需要活动互联网连接来获取软件组件的集群。您还可以使用此安装方法来确保您的集群只使用满足您组织对外部内容控制的容器镜像。

在用户预配的基础架构上安装集群

您可以使用以下方法之一,在您自己预配的 RHOSP 基础架构上安装集群:

  • 在您自己的基础架构上的 OpenStack 上安装集群:您可以在用户预配的 RHOSP 基础架构上安装 OpenShift Container Platform。使用此安装方法,您可以将集群与现有基础架构和修改集成。对于用户预配的基础架构上的安装,您必须创建所有 RHOSP 资源,例如 Nova 服务器、Neutron 端口和安全组。您可以使用提供的 Ansible playbook 来协助部署过程。

扫描 RHOSP 端点以查找旧版 HTTPS 证书

从 OpenShift Container Platform 4.10 开始,HTTPS 证书必须包含主题替代名称 (SAN) 字段。运行以下脚本以扫描 Red Hat OpenStack Platform (RHOSP) 目录中的每个 HTTPS 端点,查找仅包含CommonName字段的旧版证书。

OpenShift Container Platform 不会在安装或更新之前检查底层 RHOSP 基础架构中是否存在旧版证书。请使用提供的脚本自行检查这些证书。在安装或更新集群之前未能更新旧版证书将导致集群功能异常。
先决条件
步骤
  1. 将以下脚本保存到您的机器上

    详情
    #!/usr/bin/env bash
    
    set -Eeuo pipefail
    
    declare catalog san
    catalog="$(mktemp)"
    san="$(mktemp)"
    readonly catalog san
    
    declare invalid=0
    
    openstack catalog list --format json --column Name --column Endpoints \
    	| jq -r '.[] | .Name as $name | .Endpoints[] | select(.interface=="public") | [$name, .interface, .url] | join(" ")' \
    	| sort \
    	> "$catalog"
    
    while read -r name interface url; do
    	# Ignore HTTP
    	if [[ ${url#"http://"} != "$url" ]]; then
    		continue
    	fi
    
    	# Remove the schema from the URL
    	noschema=${url#"https://"}
    
    	# If the schema was not HTTPS, error
    	if [[ "$noschema" == "$url" ]]; then
    		echo "ERROR (unknown schema): $name $interface $url"
    		exit 2
    	fi
    
    	# Remove the path and only keep host and port
    	noschema="${noschema%%/*}"
    	host="${noschema%%:*}"
    	port="${noschema##*:}"
    
    	# Add the port if was implicit
    	if [[ "$port" == "$host" ]]; then
    		port='443'
    	fi
    
    	# Get the SAN fields
    	openssl s_client -showcerts -servername "$host" -connect "$host:$port" </dev/null 2>/dev/null \
    		| openssl x509 -noout -ext subjectAltName \
    		> "$san"
    
    	# openssl returns the empty string if no SAN is found.
    	# If a SAN is found, openssl is expected to return something like:
    	#
    	#    X509v3 Subject Alternative Name:
    	#        DNS:standalone, DNS:osp1, IP Address:192.168.2.1, IP Address:10.254.1.2
    	if [[ "$(grep -c "Subject Alternative Name" "$san" || true)" -gt 0 ]]; then
    		echo "PASS: $name $interface $url"
    	else
    		invalid=$((invalid+1))
    		echo "INVALID: $name $interface $url"
    	fi
    done < "$catalog"
    
    # clean up temporary files
    rm "$catalog" "$san"
    
    if [[ $invalid -gt 0 ]]; then
    	echo "${invalid} legacy certificates were detected. Update your certificates to include a SAN field."
    	exit 1
    else
    	echo "All HTTPS certificates for this cloud are valid."
    fi
  2. 运行脚本。

  3. 将脚本报告为INVALID的任何证书替换为包含 SAN 字段的证书。

在安装 OpenShift Container Platform 4.10 或将集群更新到该版本之前,必须替换所有旧版 HTTPS 证书。旧版证书将被拒绝,并显示以下消息:

x509: certificate relies on legacy Common Name field, use SANs instead

手动扫描 RHOSP 端点以查找旧版 HTTPS 证书

从 OpenShift Container Platform 4.10 版本开始,HTTPS 证书必须包含主题替代名称 (SAN) 字段。如果您无法访问“扫描 RHOSP 端点以查找旧版 HTTPS 证书”中列出的必要工具,请执行以下步骤来扫描 Red Hat OpenStack Platform (RHOSP) 目录中的每个 HTTPS 端点,查找仅包含CommonName字段的旧版证书。

OpenShift Container Platform 不会在安装或更新之前检查底层 RHOSP 基础设施中的旧版证书。请使用以下步骤自行检查这些证书。在安装或更新集群之前未能更新旧版证书将导致集群功能异常。

步骤
  1. 在命令行上,运行以下命令以查看 RHOSP 公共端点的 URL:

    $ openstack catalog list

    记录命令返回的每个 HTTPS 端点的 URL。

  2. 对于每个公共端点,记下主机和端口。

    通过删除方案、端口和路径来确定端点的主机。

  3. 对于每个端点,运行以下命令以提取证书的 SAN 字段:

    1. 设置host变量

      $ host=<host_name>
    2. 设置port变量

      $ port=<port_number>

      如果端点的 URL 没有端口,请使用值443

    3. 检索证书的 SAN 字段

      $ openssl s_client -showcerts -servername "$host" -connect "$host:$port" </dev/null 2>/dev/null \
          | openssl x509 -noout -ext subjectAltName
      示例输出
      X509v3 Subject Alternative Name:
          DNS:your.host.example.net

      对于每个端点,查找类似于前面示例的输出。如果某个端点没有输出,则该端点的证书无效,必须重新颁发。

在安装 OpenShift Container Platform 4.10 或将集群更新到该版本之前,必须替换所有旧版 HTTPS 证书。旧版证书将被拒绝,并显示以下消息:

x509: certificate relies on legacy Common Name field, use SANs instead