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:
- Tworzenie przestrzeni nazw i usługi programu inicjjącego
- 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, 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 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:
- Wykonaj kroki, aby ściągnąć obrazy kontenerów z usługi Microsoft Container Registry i wypchnąć je do prywatnego rejestru kontenerów.
- Utwórz wpis tajny ściągania obrazu o nazwie
arc-private-registry
dla prywatnego rejestru kontenerów. - Zmień adres URL obrazu dla obrazu programu inicjjącego w pliku bootstrap.yaml.
- Zastąp element
arc-private-registry
w pliku bootstrap.yaml, jeśli dla wpisu tajnego ściągania obrazu użyto innej nazwy.
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
- składowanie.. 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ładadefault
, że istnieje klasa magazynu, która istnieje i nie ma nazwydefault
, ż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.34.0_2024-10-08
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.