使用 Kubernetes 工具建立已啟用 Azure Arc 的資料控制器

資料控制器會為 Kubernetes 叢集管理已啟用 Azure Arc 的資料服務。 本文說明如何使用 Kubernetes 工具來建立資料控制器。

建立資料控制器的概要步驟如下:

  1. 建立命名空間和啟動載入器服務
  2. 建立資料控制器

注意

為了簡單起見,下列步驟假設您是 Kubernetes 叢集管理員。 針對生產環境或更安全的環境,建議您在部署資料控制器時,遵循「最低權限」的安全性最佳做法,只將特定權限授與部署程序中所涉及的使用者和服務帳戶。

如需詳細指示,請參閱以最低權限操作已啟用 Arc 的資料服務主題。

必要條件

如需概觀資訊,請檢閱規劃已啟用 Azure Arc 的資料服務部署主題。

若要使用 Kubernetes 工具來建立資料控制器,您必須安裝 Kubernetes 工具。 本文中的範例會使用 kubectl,但您可以使用類似的方法搭配其他 Kubernetes 工具,例如 Kubernetes 儀表板、ochelm (如果您熟悉這些工具和 Kubernetes yaml/json)。

安裝 kubectl 工具

建立命名空間和啟動載入器服務

啟動載入器服務會處理傳入要求,以建立、編輯和刪除自訂資源,例如資料控制器。

儲存 bootstrapper-unified.yaml 的複本,並以所需的命名空間名稱取代檔案中所有位置的預留位置 {{NAMESPACE}},例如:arc

重要

bootstrapper-unified.yaml 範本檔案預設會從 Microsoft Container Registry (MCR) 提取啟動載入器容器映像。 如果您的環境無法直接存取 Microsoft Container Registry,您可以執行下列動作:

執行下列命令,以使用編輯的檔案建立命名空間和啟動載入器服務。

kubectl apply --namespace arc -f bootstrapper-unified.yaml

使用下列命令確認啟動載入器 Pod 正在執行。

kubectl get pod --namespace arc -l app=bootstrapper

如果狀態不是 [執行中],請執行命令數次,直到狀態為 [執行中] 為止。

建立資料控制器

現在您已準備好建立資料控制器本身。

首先,在電腦本機上建立範本檔案的複本,以修改部分設定。

建立計量和記錄儀表板使用者名稱和密碼

在檔案頂端,您可以指定使用者名稱和密碼,以便以管理員身分向計量和記錄儀表板進行驗證。 選擇安全密碼,並只分享給需要有這些權限的人。

Kubernetes 祕密會儲存為 base64 編碼字串 - 一個用於使用者名稱,另一個用於密碼。

您可以使用線上工具,將所需的使用者名稱和密碼編碼為 base64,也可以根據平台使用內建 CLI 工具。

PowerShell

[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('<your string to encode here>'))

#Example
#[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('example'))

Linux/macOS

echo -n '<your string to encode here>' | base64

#Example
# echo -n 'example' | base64

建立記錄和計量儀表板的憑證

您可以選擇性地為記錄和計量儀表板建立 SSL/TLS 憑證。 請遵循在 Kubernetes 原生工具部署期間指定 SSL/TLS 憑證的指示。

編輯資料控制器設定

視需要編輯資料控制器設定:

必要

  • location:將此變更為將儲存資料控制器相關中繼資料的 Azure 位置。 請參閱可用區域清單
  • resourceGroup:您想要在其中在建立資料控制站 (Azure Resource Manager 中的 Azure 資源) 的 Azure 資源群組。 一般而言,此資源群組應該已經存在,但在您將資料上傳至 Azure 之前不需要此資源群組。
  • 訂用帳戶:訂用帳戶 (將在其中建立 Azure 資源) 的 Azure 訂用帳戶 GUID。

建議檢閱並盡可能變更預設值

  • storage..className:用於資料控制器資料和記錄檔的儲存類別。 如果您不確定 Kubernetes 叢集中可用的儲存體類別,您可以執行下列命令:kubectl get storageclass。 預設值 default 是假設有一個儲存類別存在,而且命名為 default,不是「有」預設的儲存類別。 注意:有兩個 className 設定可設定為所需的儲存類別 - 一個用於資料和一個用於記錄。
  • serviceType:如果您未使用 LoadBalancer,請將服務類型變更為 NodePort
  • Security 針對 Azure Red Hat OpenShift 或 Red Hat OpenShift 容器平台,請將 security: 設定取代為資料控制器 yaml 檔案中的下列值。
  security:
    allowDumps: false
    allowNodeMetricsCollection: false
    allowPodMetricsCollection: false

選用

  • name:資料控制器的預設名稱是 arc,但您可以視需要加以變更。
  • displayName:將此設定為與檔案頂端名稱屬性相同的值。
  • logsui-certificate-secret:在 Kubernetes 叢集上為記錄 UI 憑證建立的秘密名稱。
  • metricsui-certificate-secret:在 Kubernetes 叢集上為計量 UI 憑證建立的秘密名稱。

下列範例顯示已完成的資料控制器 yaml。

apiVersion: v1
data:
  password: <your base64 encoded password>
  username: <your base64 encoded username>
kind: Secret
metadata:
  name: metricsui-admin-secret
type: Opaque

---

apiVersion: v1
data:
  password: <your base64 encoded password>
  username: <your base64 encoded username>
kind: Secret
metadata:
  name: logsui-admin-secret
type: Opaque

---

apiVersion: arcdata.microsoft.com/v5
kind: DataController
metadata:
  name: arc-dc
spec:
  credentials:
    dockerRegistry: arc-private-registry # Create a registry secret named 'arc-private-registry' if you are going to pull from a private registry instead of MCR.
    serviceAccount: sa-arc-controller
  docker:
    imagePullPolicy: Always
    imageTag: v1.29.0_2024-04-09
    registry: mcr.microsoft.com
    repository: arcdata
  infrastructure: other # Must be a value in the array [alibaba, aws, azure, gcp, onpremises, other]
  security:
    allowDumps: true # Set this to false if deploying on OpenShift
    allowNodeMetricsCollection: true # Set this to false if deploying on OpenShift
    allowPodMetricsCollection: true # Set this to false if deploying on OpenShift
  services:
  - name: controller
    port: 30080
    serviceType: LoadBalancer # Modify serviceType based on your Kubernetes environment
  settings:
    ElasticSearch:
      vm.max_map_count: "-1"
    azure:
      connectionMode: indirect # Only indirect is supported for Kubernetes-native deployment for now.
      location: eastus # Choose a different Azure location if you want
      resourceGroup: <your resource group>
      subscription: <your subscription GUID>
    controller:
      displayName: arc-dc
      enableBilling: true
      logs.rotation.days: "7"
      logs.rotation.size: "5000"
  storage:
    data:
      accessMode: ReadWriteOnce
      className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
      size: 15Gi
    logs:
      accessMode: ReadWriteOnce
      className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
      size: 10Gi

將編輯過的檔案儲存在本機電腦上,然後執行下列命令來建立資料控制器:

kubectl create --namespace arc -f <path to your data controller file>

#Example
kubectl create --namespace arc -f data-controller.yaml

監視建立狀態

建立控制器需要幾分鐘的時間才能完成。 您可以使用下列命令,在另一個終端機視窗中監視進度:

kubectl get datacontroller --namespace arc
kubectl get pods --namespace arc

您也可以執行如下命令來查看任何特定 Pod 的建立狀態或記錄。 這特別適合針對任何問題進行疑難排解。

kubectl describe pod/<pod name> --namespace arc
kubectl logs <pod name> --namespace arc

#Example:
#kubectl describe pod/control-2g7bl --namespace arc
#kubectl logs control-2g7b1 --namespace arc

針對建立問題進行疑難排解

如果您在建立時遇到任何問題,請參閱疑難排解指南