建立 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 控制台將可在 URL https://console-openshift-console.apps.foo.example.com
中使用,而不是內建網域 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
在瀏覽器中啟動主控台 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 設定叢集以進行驗證。