使用 Kubernetes 工具建立已啟用 Azure Arc 的資料控制器
資料控制器會為 Kubernetes 叢集管理已啟用 Azure Arc 的資料服務。 本文說明如何使用 Kubernetes 工具來建立資料控制器。
建立資料控制器的概要步驟如下:
- 建立命名空間和啟動載入器服務
- 建立資料控制器
注意
為了簡單起見,下列步驟假設您是 Kubernetes 叢集管理員。 針對生產環境或更安全的環境,建議您在部署資料控制器時,遵循「最低權限」的安全性最佳做法,只將特定權限授與部署程序中所涉及的使用者和服務帳戶。
如需詳細指示,請參閱以最低權限操作已啟用 Arc 的資料服務主題。
必要條件
如需概觀資訊,請檢閱規劃已啟用 Azure Arc 的資料服務部署主題。
若要使用 Kubernetes 工具來建立資料控制器,您必須安裝 Kubernetes 工具。 本文中的範例會使用 kubectl
,但您可以使用類似的方法搭配其他 Kubernetes 工具,例如 Kubernetes 儀表板、oc
或 helm
(如果您熟悉這些工具和 Kubernetes yaml/json)。
建立命名空間和啟動載入器服務
啟動載入器服務會處理傳入要求,以建立、編輯和刪除自訂資源,例如資料控制器。
儲存 bootstrapper-unified.yaml 的複本,並以所需的命名空間名稱取代檔案中所有位置的預留位置 {{NAMESPACE}}
,例如:arc
。
重要
bootstrapper-unified.yaml 範本檔案預設會從 Microsoft Container Registry (MCR) 提取啟動載入器容器映像。 如果您的環境無法直接存取 Microsoft Container Registry,您可以執行下列動作:
- 請遵循步驟,從 Microsoft Container Registry 提取容器映像,並將其推送至私人容器登錄。
- 為您的私人容器登錄建立名為
arc-private-registry
的映像提取祕密。 - 變更 bootstrap.yaml 檔案中啟動載入器映像的映像 URL。
- 如果針對映像提取祕密使用不同的名稱,請取代 bootstrap.yaml 檔案中的
arc-private-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.33.0_2024-09-10
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
針對建立問題進行疑難排解
如果您在建立時遇到任何問題,請參閱疑難排解指南。