Udostępnij za pośrednictwem


Tworzenie kontrolera danych z obsługą usługi Azure Arc przy użyciu narzędzi platformy Kubernetes

Kontroler danych zarządza usługami danych obsługiwanymi przez Azure Arc w klastrze Kubernetes. W tym artykule opisano sposób używania narzędzi Platformy Kubernetes do tworzenia kontrolera danych.

Utworzenie kontrolera danych ma następujące ogólne kroki:

  1. Utwórz przestrzeń nazw i usługę programu inicjującego
  2. Tworzenie kontrolera danych

Uwaga

Dla uproszczenia w poniższych krokach przyjęto założenie, że jesteś administratorem klastra Kubernetes. W przypadku wdrożeń produkcyjnych lub bardziej bezpiecznych środowisk zaleca się stosowanie najlepszych rozwiązań w zakresie zabezpieczeń "najniższych uprawnień" podczas wdrażania kontrolera danych, udzielając tylko określonych uprawnień do użytkowników i kont usług zaangażowanych w proces wdrażania.

Aby uzyskać szczegółowe instrukcje, zobacz temat Zarządzanie usługami danych włączonymi dla Arc z najmniejszymi uprawnieniami.

Wymagania wstępne

Zapoznaj się z tematem Planowanie wdrożenia usług danych obsługiwanych przez Azure Arc, aby uzyskać informacje ogólne.

Aby utworzyć kontroler danych przy użyciu narzędzi Platformy Kubernetes, musisz mieć zainstalowane narzędzia Kubernetes. Przykłady w tym artykule będą wykorzystywać kubectl, ale podobne podejścia mogą być używane z innymi narzędziami Kubernetes, takimi jak pulpit nawigacyjny Kubernetes, oc lub helm, jeśli znasz te narzędzia i pliki YAML/JSON platformy Kubernetes.

Instalowanie narzędzia kubectl

Utwórz przestrzeń nazw i usługę programu inicjującego

Usługa bootstrap obsługuje przychodzące żądania dotyczące tworzenia, edytowania i usuwania zasobów niestandardowych, takich jak kontroler danych.

Zapisz kopię pliku bootstrapper-unified.yaml

Ważne

Plik szablonu bootstrapper-unified.yaml domyślnie pobiera obraz kontenera bootstrappera z rejestru Microsoft Container Registry (MCR). Jeśli środowisko nie może bezpośrednio uzyskać dostępu do usługi Microsoft Container Registry, możesz wykonać następujące czynności:

Uruchom następujące polecenie, aby utworzyć namespace i usługę bootstrap za pomocą edytowanego pliku.

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

Sprawdź, czy pod bootstrap jest uruchomiony przy użyciu następującego polecenia.

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

Jeśli stan nie jest uruchomiony, uruchom polecenie kilka razy, aż stan ma wartość Uruchomiono.

Tworzenie kontrolera danych

Teraz możesz przystąpić do tworzenia samego kontrolera danych.

Najpierw utwórz kopię pliku szablonu lokalnie na komputerze, aby można było zmodyfikować niektóre ustawienia.

Utwórz nazwy użytkowników i hasła do pulpitów nawigacyjnych metryk i dzienników

W górnej części pliku można określić nazwę użytkownika i hasło używane do uwierzytelniania jako administrator na pulpitach nawigacyjnych dotyczących metryk i logów. Wybierz bezpieczne hasło i udostępnij je tylko tym, którzy muszą mieć te uprawnienia.

Wpis tajny kubernetes jest przechowywany jako ciąg zakodowany w formacie base64 — jeden dla nazwy użytkownika i jeden dla hasła.

Możesz użyć narzędzia online do zakodowania żądanej nazwy użytkownika i hasła lub skorzystać z wbudowanych narzędzi CLI, w zależności od platformy.

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

Utwórz certyfikaty dla dashboardów dzienników i metryk

Możesz opcjonalnie utworzyć certyfikaty SSL/TLS dla pulpitów dzienników i metryk. Postępuj zgodnie z instrukcjami w temacie Określanie certyfikatów SSL/TLS podczas wdrażania narzędzi natywnych platformy Kubernetes.

Edytowanie konfiguracji kontrolera danych

Edytuj konfigurację kontrolera danych zgodnie z potrzebami:

WYMAGANE

  • location: zmień tę wartość na lokalizację platformy Azure, w której będą przechowywane metadane dotyczące kontrolera danych. Przejrzyj listę dostępnych regionów.
  • resourceGroup: grupa zasobów platformy Azure, w której chcesz utworzyć zasób platformy Azure kontrolera danych w usłudze Azure Resource Manager. Zazwyczaj ta grupa zasobów powinna już istnieć, ale nie jest wymagana do momentu przekazania danych na platformę Azure.
  • subscription: identyfikator GUID subskrypcji platformy Azure dla subskrypcji, w której chcesz utworzyć zasoby platformy Azure.

ZALECA SIĘ PRZEJRZENIE ORAZ EWENTUALNĄ ZMIANĘ WARTOŚCI DOMYŚLNYCH

  • klasa przechowywania.. className: klasa przechowywania do użycia dla kontrolera danych i plików rejestru. Jeśli nie masz pewności co do dostępnych klas magazynu w klastrze Kubernetes, możesz uruchomić następujące polecenie: kubectl get storageclass. Wartość domyślna to default, co zakłada, że istnieje klasa magazynu o nazwie default, a nie że jest to klasa magazynu, która jest domyślna. Uwaga: istnieją dwa ustawienia className, które mają być ustawione na żądaną klasę magazynu — jedną dla danych i jedną dla dzienników.
  • serviceType: zmień typ usługi na NodePort , jeśli nie używasz modułu LoadBalancer.
  • Bezpieczeństwo W przypadku usługi Azure Red Hat OpenShift lub Red Hat OpenShift Container Platform zastąp security: ustawienia następującymi wartościami w pliku yaml kontrolera danych.
  security:
    allowDumps: false
    allowNodeMetricsCollection: false
    allowPodMetricsCollection: false

FAKULTATYWNY

  • name: Domyślna nazwa kontrolera danych to arc, ale możesz ją zmienić, jeśli chcesz.
  • displayName: ustaw tę samą wartość co atrybut name na początku pliku.
  • logsui-certificate-secret: nazwa tajnego klucza utworzonego w klastrze Kubernetes dla certyfikatu interfejsu użytkownika logów.
  • metricsui-certificate-secret: nazwa tajnego zasobu utworzonego w klastrze Kubernetes dla certyfikatu dla interfejsu użytkownika metryk.

W poniższym przykładzie pokazano ukończony plik yaml kontrolera danych.

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.39.0_2025-05-13
    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

Zapisz edytowany plik na komputerze lokalnym i uruchom następujące polecenie, aby utworzyć kontroler danych:

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

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

Monitorowanie stanu tworzenia

Utworzenie kontrolera potrwa kilka minut. Postęp można monitorować w innym oknie terminalu za pomocą następujących poleceń:

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

Możesz również sprawdzić stan tworzenia lub dzienniki dowolnego określonego poda, uruchamiając polecenie takie jak poniżej. Jest to szczególnie przydatne w przypadku rozwiązywania wszelkich problemów.

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

Rozwiązywanie problemów z tworzeniem

Jeśli wystąpią problemy z tworzeniem, zapoznaj się z przewodnikiem rozwiązywania problemów.