你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
创建 Azure Red Hat OpenShift 4 专用群集
本文中将介绍如何准备环境以创建运行 OpenShift 4 的 Azure Red Hat OpenShift 专用群集。 将了解如何执行以下操作:
- 安装必备组件并创建所需的虚拟网络和子网
- 使用专用 API 服务器终结点和专用入口控制器来部署群集
如果选择在本地安装并使用 CLI,本教程要求运行 Azure CLI 2.30.0 或更高版本。 运行 az --version
即可查找版本。 如果需要进行安装或升级,请参阅安装 Azure CLI。
开始之前
注册资源提供程序
如果有多个 Azure 订阅,请指定相关订阅 ID:
az account set --subscription <SUBSCRIPTION ID>
注册
Microsoft.RedHatOpenShift
资源提供程序:az provider register -n Microsoft.RedHatOpenShift --wait
注册
Microsoft.Compute
资源提供程序(如果尚未注册):az provider register -n Microsoft.Compute --wait
注册
Microsoft.Network
资源提供程序(如果尚未注册):az provider register -n Microsoft.Network --wait
注册
Microsoft.Storage
资源提供程序(如果尚未注册):az provider register -n Microsoft.Storage --wait
获取 Red Hat 拉取机密(可选)
Red Hat 拉取机密使群集能够访问 Red Hat 容器注册表以及其他内容。 此步骤是可选的,但建议执行。
转到 Red Hat OpenShift 群集管理器门户并登录。
你将需要使用企业电子邮件登录 Red Hat 帐户或创建新的 Red Hat 帐户,并接受条款和条件。
单击“下载拉取机密”。
将保存的 pull-secret.txt
文件保存在一个安全的位置 - 每次创建群集时都要使用该文件。
运行 az aro create
命令时,可以使用 --pull-secret @pull-secret.txt
参数引用拉取机密。 从存储 pull-secret.txt
文件的目录执行 az aro create
。 否则,将 @pull-secret.txt
替换为 @<path-to-my-pull-secret-file
。
如果要复制拉取机密或在其他脚本中引用它,则应将拉取机密的格式设置为有效的 JSON 字符串。
创建包含两个空子网的虚拟网络
接下来,你将创建一个包含两个空子网的虚拟网络。
设置以下变量。
LOCATION=eastus # the location of your cluster RESOURCEGROUP="v4-$LOCATION" # the name of the resource group where you want to create your cluster CLUSTER=aro-cluster # the name of your cluster
创建资源组
Azure 资源组是用于部署和管理 Azure 资源的逻辑组。 创建资源组时,系统会要求你指定一个位置。 此位置是资源组元数据的存储位置,如果在创建资源期间未指定另一个区域,则资源也会在 Azure 中运行。 使用 [az group create][az-group-create] 命令创建资源组。
az group create --name $RESOURCEGROUP --location $LOCATION
以下示例输出显示已成功创建资源组:
{ "id": "/subscriptions/<guid>/resourceGroups/aro-rg", "location": "eastus", "managedBy": null, "name": "aro-rg", "properties": { "provisioningState": "Succeeded" }, "tags": null }
创建虚拟网络。
运行 OpenShift 4 的 Azure Red Hat OpenShift 群集需要一个包含两个空子网(用于主节点和工作器节点)的虚拟网络。
在之前创建的同一资源组中创建新的虚拟网络。
az network vnet create \ --resource-group $RESOURCEGROUP \ --name aro-vnet \ --address-prefixes 10.0.0.0/22
以下示例输出显示已成功创建了虚拟网络:
{ "newVNet": { "addressSpace": { "addressPrefixes": [ "10.0.0.0/22" ] }, "id": "/subscriptions/<guid>/resourceGroups/aro-rg/providers/Microsoft.Network/virtualNetworks/aro-vnet", "location": "eastus", "name": "aro-vnet", "provisioningState": "Succeeded", "resourceGroup": "aro-rg", "type": "Microsoft.Network/virtualNetworks" } }
为主节点添加一个空子网。
az network vnet subnet create \ --resource-group $RESOURCEGROUP \ --vnet-name aro-vnet \ --name master-subnet \ --address-prefixes 10.0.0.0/23 \ --service-endpoints Microsoft.ContainerRegistry
为工作器节点添加一个空子网。
az network vnet subnet create \ --resource-group $RESOURCEGROUP \ --vnet-name aro-vnet \ --name worker-subnet \ --address-prefixes 10.0.2.0/23 \ --service-endpoints Microsoft.ContainerRegistry
在主子网上禁用子网专用终结点策略 。 为了能够连接和管理群集,必须执行此操作。
az network vnet subnet update \ --name master-subnet \ --resource-group $RESOURCEGROUP \ --vnet-name aro-vnet \ --disable-private-link-service-network-policies true
创建群集
运行以下命令以创建群集。 (可选)可以传递 Red Hat 拉取机密,该机密使群集能够访问 Red Hat 容器注册表以及其他内容。
注意
如果要复制/粘贴命令并使用可选参数之一,请确保删除初始井号标签和尾随注释文本。 同样,使用尾随反斜杠关闭前面命令行上的参数。
az aro create \
--resource-group $RESOURCEGROUP \
--name $CLUSTER \
--vnet aro-vnet \
--master-subnet master-subnet \
--worker-subnet worker-subnet \
--apiserver-visibility Private \
--ingress-visibility Private
# --domain foo.example.com # [OPTIONAL] custom domain
# --pull-secret @pull-secret.txt # [OPTIONAL]
执行 az aro create
命令之后,创建群集通常需要大约 35 分钟。
注意
尝试创建群集时,如果收到一条错误消息,指出资源配额已超出,请参阅 将配额添加到 ARO 帐户 ,了解如何继续操作。
重要
如果选择指定自定义域(例如 foo.example.com),则 OpenShift 控制台将在诸如 https://console-openshift-console.apps.foo.example.com
之类的 URL(而不是内置域 https://console-openshift-console.apps.<random>.<location>.aroapp.io
)上提供。
默认情况下,OpenShift 对 *.apps.<random>.<location>.aroapp.io
上创建的所有路由使用自签名证书。 如果在连接到群集后选择“自定义 DNS”,则需要按照 OpenShift 文档 为入口控制器 和 API 服务器的自定义证书配置自定义证书。
创建没有公共 IP 地址的专用群集
通常,专用群集是使用公共 IP 地址和负载均衡器创建的,提供与其他服务的出站连接的方法。 但是,可以创建没有公共 IP 地址的专用群集。 在安全或策略要求禁止使用公共 IP 地址的情况下,可能需要这样做。
若要创建没有公共 IP 地址的专用群集, 请按照上述过程操作,将参数 --outbound-type UserDefinedRouting
添加到 aro create
命令中,如以下示例所示:
az aro create \
--resource-group $RESOURCEGROUP \
--name $CLUSTER \
--vnet aro-vnet \
--master-subnet master-subnet \
--worker-subnet worker-subnet \
--apiserver-visibility Private \
--ingress-visibility Private \
--outbound-type UserDefinedRouting
注意
只能在创建具有 --apiserver-visibility Private
参数的 --ingress-visibility Private
群集时使用 UserDefinedRouting 标志。 确保使用的是最新的 Azure CLI。 使用 Azure CLI 2.52.0 和更早版本部署的群集将使用公共 IP 进行部署。
此用户定义的路由选项可防止预配公共 IP 地址。 用户定义的路由(UDR)允许在 Azure 中创建自定义路由,以替代默认系统路由,或向子网的路由表添加更多路由。 有关详细信息,请参阅 虚拟网络流量路由 。
重要
创建专用群集时,请务必使用正确配置的路由表指定正确的子网。
对于出口,用户定义的路由选项可确保新创建的群集已启用出口锁定功能,以便保护来自新专用群集的出站流量。 有关详细信息,请参阅 控制 Azure Red Hat OpenShift (ARO) 群集 的出口流量。
注意
如果选择用户定义的路由网络类型,则完全负责管理群集路由在虚拟网络外部的出口(例如,获取公共 Internet 的访问权限)。 Azure Red Hat OpenShift 无法为你管理此功能。
可以将一个或多个出口 IP 地址配置为命名空间或专用群集命名空间中没有公共 IP 地址的特定 Pod。 为此,请按照上述过程创建没有公共 IP 地址的专用群集,然后按照 此 Red Hat OpenShift 文档配置出口 IP。 这些出口 IP 地址需要来自与 ARO 群集关联的子网。
只有具有 --outbound-type UserDefinedRouting
参数的群集才支持为 ARO 专用群集配置出口 IP。 具有 --outbound-type LoadBalancer
参数的公共 ARO 群集不支持它。
连接到专用群集
可以使用 kubeadmin
用户登录到群集。 请运行以下命令,找到 kubeadmin
用户的密码。
az aro list-credentials \
--name $CLUSTER \
--resource-group $RESOURCEGROUP
以下示例输出表明密码将位于 kubeadminPassword
中。
{
"kubeadminPassword": "<generated password>",
"kubeadminUsername": "kubeadmin"
}
可以通过运行以下命令查找群集控制台 URL,它类似于 https://console-openshift-console.apps.<random>.<region>.aroapp.io/
。
az aro show \
--name $CLUSTER \
--resource-group $RESOURCEGROUP \
--query "consoleProfile.url" -o tsv
重要
若要连接到专用 Azure Red Hat OpenShift 群集,需要从创建的虚拟网络中的主机或与群集部署到虚拟网络对等互连的虚拟网络中执行以下步骤。
在浏览器中启动控制台 URL,使用 kubeadmin
凭据登录。
安装 OpenShift CLI
登录到 OpenShift Web 控制台后,单击右上角的“?”,然后单击“命令行工具”。 下载适用于你的计算机的版本。
还可以下载适用于你的计算机的最新版本的 CLI。
使用 OpenShift CLI 进行连接
检索 API 服务器的地址。
apiServer=$(az aro show -g $RESOURCEGROUP -n $CLUSTER --query apiserverProfile.url -o tsv)
重要
若要连接到专用 Azure Red Hat OpenShift 群集,需要从创建的虚拟网络中的主机或与群集部署到虚拟网络对等互连的虚拟网络中执行以下步骤。
使用以下命令登录到 OpenShift 群集的 API 服务器。 将 <kubeadmin password> 替换为你刚才检索到的密码。
oc login $apiServer -u kubeadmin -p <kubeadmin password>
后续步骤
在本文中,部署了一个运行 OpenShift 4 的 Azure Red Hat OpenShift 群集。 你已了解如何执行以下操作:
- 安装必备组件并创建所需的虚拟网络和子网
- 部署群集
- 使用
kubeadmin
用户连接到群集
转到下一篇文章,了解如何使用 Microsoft Entra ID 配置用于进行身份验证的群集。