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

Kontroler danych zarządza usługami danych z obsługą usługi Azure Arc dla klastra 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. Tworzenie przestrzeni nazw i usługi programu inicjją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 Obsługa usług danych z obsługą usługi Arc z najmniejszymi uprawnieniami .

Wymagania wstępne

Zapoznaj się z tematem Planowanie wdrożenia usług danych z obsługą usługi Azure Arc, aby uzyskać informacje o przeglądzie.

Aby utworzyć kontroler danych przy użyciu narzędzi Platformy Kubernetes, musisz mieć zainstalowane narzędzia Kubernetes. Przykłady w tym artykule będą używane, kubectlale podobne podejścia mogą być używane z innymi narzędziami kubernetes, takimi jak pulpit nawigacyjny Kubernetes, oclub helm jeśli znasz te narzędzia i plik yaml/json platformy Kubernetes.

Instalowanie narzędzia kubectl

Tworzenie przestrzeni nazw i usługi programu inicjjącego

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

Zapisz kopię pliku bootstrapper-unified.yaml i zastąp symbol zastępczy {{NAMESPACE}} we wszystkich miejscach w pliku odpowiednią nazwą przestrzeni nazw, na przykład: arc.

Ważne

Plik szablonu bootstrapper-unified.yaml domyślnie pobiera obraz kontenera programu inicjującego 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ć przestrzeń nazw i usługę programu inicjającego z edytowanym plikiem.

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

Sprawdź, czy zasobnik programu inicjujący 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.

Tworzenie metryk i dzienników pulpitów nawigacyjnych nazw użytkowników i haseł

W górnej części pliku można określić nazwę użytkownika i hasło używane do uwierzytelniania w metrykach i dziennikach pulpitów nawigacyjnych jako administrator. 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, aby zakodować żądaną nazwę użytkownika i hasło, lub użyć wbudowanych narzędzi interfejsu wiersza polecenia 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

Tworzenie certyfikatów dla pulpitów nawigacyjnych dzienników i metryk

Opcjonalnie możesz utworzyć certyfikaty SSL/TLS dla pulpitów nawigacyjnych 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.

ZALECANE DO PRZEJRZENIA I EWENTUALNIE ZMIANY WARTOŚCI DOMYŚLNYCH

  • Magazynu.. className: klasa magazynu do użycia dla danych kontrolera danych i plików dziennika. 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 zakłada default , że istnieje klasa magazynu, która istnieje i nie ma nazwy default , że istnieje 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.
  • Zabezpieczenia dla 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

OPCJONALNIE

  • name: Domyślna nazwa kontrolera danych to arc, ale możesz ją zmienić, jeśli chcesz.
  • displayName: ustaw tę samą wartość co atrybut name w górnej części pliku.
  • logsui-certificate-secret: nazwa wpisu tajnego utworzonego w klastrze Kubernetes dla certyfikatu interfejsu użytkownika dzienników.
  • metricsui-certificate-secret: nazwa wpisu tajnego utworzonego w klastrze Kubernetes dla certyfikatu 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.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

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 zasobnika, uruchamiając polecenie podobne do poniższego. 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.