共用方式為


建立 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 主控台將會以類似 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 認證登入。

顯示 Azure Red Hat OpenShift 登入畫面的螢幕擷取畫面。

安裝 OpenShift CLI

登入 OpenShift Web 主控台之後,選取右上方的 [?],然後選取 [命令列工具]。 下載適合您電腦的版本。

顯示 Azure Red Hat OpenShift 登入畫面的影像

您也可以下載適用於您的機器的最新 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 來設定叢集以進行驗證。