你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在本文中,您将准备环境以创建运行 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 参数引用拉取机密。 从存储 az aro create 文件的目录执行 pull-secret.txt。 否则,将 @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 --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 \ --private-link-service-network-policies Disabled
创建群集
运行以下命令以创建群集。 (可选)可以传递 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 分钟来创建群集。
注释
尝试创建群集时,如果收到一条错误消息,指出资源配额已超出,请参阅 “将配额添加到帐户 ”,了解如何继续作。
重要
如果您选择指定自定义域,例如 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 群集的出口流量 。
注释
如果选择“用户定义的路由”网络类型,则由你完全负责管理群集路由在虚拟网络外部的出口(例如,获取公共 Internet 的访问权限)。 Azure Red Hat OpenShift 无法为你管理此功能。
可以将一个或多个出口 IP 地址配置为一个命名空间或专用群集的命名空间中没有公共 IP 地址的特定 Pod。 为此,请按照上述过程创建没有公共 IP 地址的专用群集,然后按照此 Red Hat OpenShift 文档配置出口 IP。 这些出口 IP 地址需要来自与群集关联的子网。
只有具有 --outbound-type UserDefinedRouting 参数的群集才支持为专用群集配置出口 IP。 具有 --outbound-type LoadBalancer 参数的公共群集不支持它。
连接到专用群集
可以使用 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 --resource-group $RESOURCEGROUP --name $CLUSTER --query apiserverProfile.url --output tsv)
重要
为了连接到专用的 Azure Red Hat OpenShift 群集,需要从创建的虚拟网络中的主机上,或从与群集部署到的虚拟网络进行了对等连接的虚拟网络中的主机上执行以下步骤。
使用以下命令登录到 OpenShift 群集的 API 服务器。 将 <kubeadmin password> 替换为您检索到的密码。
oc login $apiServer --username kubeadmin --password <kubeadmin password>
后续步骤
在本文中,部署了一个运行 OpenShift 4 的 Azure Red Hat OpenShift 群集。 你已了解如何执行以下操作:
- 安装必备组件并创建所需的虚拟网络和子网
- 部署群集
- 使用
kubeadmin用户连接到群集
转到下一篇文章,了解如何使用 Microsoft Entra ID 配置用于进行身份验证的群集。