建立 Azure Red Hat OpenShift 4 私人叢集
在此文章中,您將備妥環境,以建立執行 OpenShift 4 的 Azure Red Hat OpenShift 私人叢集。 您將學習如何:
- 設定必要條件,並建立必要的虛擬網路和子網路
- 使用私人 API 伺服器端點與私人輸入控制器來部署叢集
如果您選擇在本機安裝和使用 CLI,本教學課程會要求您執行 Azure CLI 2.30.0 版或更新版本。 執行 az --version
以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI。
開始之前
註冊資源提供者
如果您有多個 Azure 訂用帳戶,請指定相關的訂用帳戶識別碼:
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) 叢集的輸出流量 (預覽) (部分機器翻譯)。
注意
如果您選擇 [使用者定義的路由網路類型],則您完全負責管理叢集路由在虛擬網路外部的輸出 (例如,取得公用網際網路的存取權)。 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 密碼>。
oc login $apiServer -u kubeadmin -p <kubeadmin password>
下一步
在此文章中,已部署執行 OpenShift 4 的 Azure Red Hat OpenShift 叢集。 您已了解如何︰
- 設定必要條件,並建立必要的虛擬網路和子網路
- 部署叢集
- 使用
kubeadmin
使用者連線至叢集
進入下一篇文章,了解如何使用 Microsoft Entra ID 來設定叢集以進行驗證。