建立 Azure Red Hat OpenShift 4 私人叢集

在本文中,您將準備環境以建立執行 OpenShift 4 的 Azure Red Hat OpenShift 私人叢集。 您將了解如何:

  • 設定必要條件並建立必要的虛擬網路和子網
  • 使用私人 API 伺服器端點和私人輸入控制器部署叢集

如果您選擇在本機安裝和使用 CLI,本教學課程會要求您執行 Azure CLI 2.30.0 版或更新版本。 執行 az --version 以尋找版本。 如果您需要安裝或升級,請參閱 安裝 Azure CLI

開始之前

註冊資源提供者

  1. 如果您有多個 Azure 訂用帳戶,請指定相關的訂用帳戶識別碼:

    az account set --subscription <SUBSCRIPTION ID>
    
  2. Microsoft.RedHatOpenShift註冊資源提供者:

    az provider register -n Microsoft.RedHatOpenShift --wait
    
  3. Microsoft.Compute註冊資源提供者(如果您尚未註冊):

    az provider register -n Microsoft.Compute --wait
    
  4. Microsoft.Network註冊資源提供者(如果您尚未註冊):

    az provider register -n Microsoft.Network --wait
    
  5. Microsoft.Storage註冊資源提供者(如果您尚未註冊):

    az provider register -n Microsoft.Storage --wait
    

取得 Red Hat 提取秘密 (選擇性)

Red Hat 提取秘密可讓您的叢集存取 Red Hat 容器登錄,以及其他內容。 此步驟是選擇性的,但建議使用。

  1. 移至您的 Red Hat OpenShift 叢集管理員入口網站 並登入。

    您必須登入您的 Red Hat 帳戶,或使用您的商務電子郵件建立新的 Red Hat 帳戶,並接受條款和條件。

  2. 按兩下 [下載提取密碼]。

將儲存盤案 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 字串。

建立包含兩個空子網的虛擬網路

接下來,您將建立包含兩個空子網的虛擬網路。

  1. 設定下列變數。

    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
    
  2. 建立資源群組

    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
    }
    
  3. 建立虛擬網路

    執行 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"
    }
    }
    
  4. 為主要節點新增空的子網。

    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
    
  5. 為背景工作節點新增空的子網。

    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
    
  6. 停用主要子網上的子網私人端點 原則。 這需要能夠連線和管理叢集。

    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

重要

若要連線到私人 Azure Red Hat OpenShift 叢集,您必須從您所建立 虛擬網絡 的主機,或在已部署叢集 虛擬網絡 的 虛擬網絡 中執行下列步驟。

在瀏覽器中啟動主控台 URL,並使用 kubeadmin 認證登入。

Screenshot that shows the Azure Red Hat OpenShift login screen.

安裝 OpenShift CLI

登入 OpenShift Web 控制台之後,請按下右上方的 ?,然後在命令行工具按兩下 。 下載適合您機器的版本。

Image shows Azure Red Hat OpenShift login screen

您也可以下載 適合您的電腦的最新 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 設定叢集以進行驗證。