Erstellen eines Azure Arc-aktivierten Datencontrollers mithilfe von Kubernetes-Tools
Ein Datencontroller verwaltet Datendienste mit Azure Arc-Unterstützung für einen Kubernetes-Cluster. In diesem Artikel erfahren Sie, wie Sie Kubernetes-Tools zum Erstellen eines Datencontrollers verwenden.
Das Erstellen des Datencontrollers umfasst die folgenden allgemeinen Schritte:
- Erstellen des Namespaces und des Bootstrapperdiensts
- Erstellen des Datencontrollers
Hinweis
Aus Gründen der Einfachheit, gehen die nachstehenden Schritte davon aus, dass Sie ein Kubernetes-Clusteradministrator sind. Für Produktionsbereitstellungen oder Umgebungen mit höherer Sicherheit empfiehlt es sich, die bewährten Sicherheitsmethoden der „geringsten Rechte“ zu befolgen, wenn der Datencontroller bereitgestellt wird, indem nur bestimmte Berechtigungen für Benutzer und Dienstkonten gewährt werden, die am Bereitstellungsprozess beteiligt sind.
Ausführliche Anweisungen finden Sie im Thema Ausführen von Arc-aktivierten Datendiensten mit den geringsten Berechtigungen.
Voraussetzungen
Lesen Sie den Artikel Planen einer Bereitstellung von Datendiensten mit Azure Arc-Unterstützung, um eine Übersicht zu erhalten.
Um den Datencontroller mithilfe von Kubernetes-Tools erstellen zu können, müssen die Kubernetes-Tools installiert sein. In den Beispielen in diesem Artikel wird kubectl
verwendet, allerdings können auch ähnliche Ansätze mit anderen Kubernetes-Tools verfolgt werden, z. B. dem Kubernetes-Dashboard, oc
oder helm
, wenn Sie mit diesen Tools und Kubernetes-YAML/JSON-Dateien vertraut sind.
Installieren des kubectl-Tools
Erstellen des Namespaces und des Bootstrapperdiensts
Der Bootstrapperdienst verarbeitet eingehende Anforderungen zum Erstellen, Bearbeiten und Löschen benutzerdefinierter Ressourcen (beispielsweise eines Datencontrollers).
Speichern Sie eine Kopie von bootstrapper-unified.yaml, und ersetzen Sie den Platzhalter {{NAMESPACE}}
an allen Stellen in der Datei durch den gewünschten Namespacenamen, z. B. arc
.
Wichtig
Mit der Vorlagendatei „bootstrapper-unified.yaml“ wird standardmäßig das Bootstrapper-Containerimage aus der Microsoft Container Registry (MCR) gepullt. Falls von Ihrer Umgebung nicht direkt auf Microsoft Container Registry zugegriffen werden kann, können Sie wie folgt vorgehen:
- Befolgen Sie die Schritte, mit denen Sie Containerimages aus der Microsoft Container Registry pullen und in eine private Containerregistrierung pushen können.
- Erstellen Sie ein Geheimnis für Imagepullvorgänge namens
arc-private-registry
für Ihre private Containerregistrierung. - Ändern Sie die Image-URL für das Bootstrapperimage in der Datei „bootstrap.yaml“.
- Ersetzen Sie
arc-private-registry
in der Datei „bootstrap.yaml“, wenn für das Geheimnis für Imagepullvorgänge ein anderer Name verwendet wurde.
Führen Sie den folgenden Befehl aus, um den Namespace und den Bootstrapperdienst mit der bearbeiteten Datei zu erstellen.
kubectl apply --namespace arc -f bootstrapper-unified.yaml
Überprüfen Sie mithilfe des folgenden Befehls, ob der Bootstrapperpod ausgeführt wird.
kubectl get pod --namespace arc -l app=bootstrapper
Wenn der Status nicht Wird ausgeführt lautet, führen Sie den Befehl mehrmals aus, bis der Status Wird ausgeführt lautet.
Erstellen des Datencontrollers
Nun können Sie den Datencontroller selbst erstellen.
Erstellen Sie zunächst eine lokale Kopie der Vorlagendatei auf Ihrem Computer, damit Sie einige Einstellungen ändern können.
Erstellen der Dashboards mit Metriken und Protokollen sowie der Benutzernamen und Kennwörter
Am Anfang der Datei können Sie einen Benutzernamen und ein Kennwort angeben, die für die Authentifizierung bei den Dashboards mit Metriken und Protokollen als Administrator verwendet werden. Wählen Sie ein sicheres Kennwort aus, und geben Sie es nur an Personen weiter, die diese Berechtigungen besitzen müssen.
Ein Kubernetes-Geheimnis wird als Base64-codierte Zeichenfolge gespeichert – eine für den Benutzernamen und eine für das Kennwort.
Sie können ein Onlinetool verwenden, um den gewünschten Benutzernamen und das zugehörige Kennwort mit einer Base64-Codierung zu versehen, oder Sie können abhängig von Ihrer Plattform integrierte CLI-Tools verwenden.
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
Erstellen Sie Zertifikate für Protokolle und Metrikdashboards
Optional können Sie SSL/TLS-Zertifikate für die Protokolle und Metrikdashboards erstellen. Befolgen Sie die Anweisungen unter Angeben von SSL/TLS-Zertifikaten während der Bereitstellung nativer Kubernetes-Tools.
Bearbeiten der Datencontrollerkonfiguration
Bearbeiten Sie Datencontrollerkonfiguration nach Bedarf:
ERFORDERLICH
- Standort: Ändern Sie diese Einstellung in den Azure-Standort, an dem die Metadaten zum Datencontroller gespeichert werden sollen. Sehen Sie sich die Liste der verfügbaren Regionen an.
- resourceGroup: Die Azure-Ressourcengruppe, in der Sie die Azure-Ressource für den Datencontroller im Azure Resource Manager erstellen möchten. Diese Ressourcengruppe sollte in der Regel bereits vorhanden sein, wird jedoch erst benötigt, wenn Sie die Daten in Azure hochladen.
- subscription: Die Azure-Abonnement-GUID für das Abonnement, in dem Sie die Azure-Ressourcen erstellen möchten.
ÜBERPRÜFUNG UND GGF. ÄNDERUNG DER STANDARDWERTE EMPFOHLEN
- storage..className: Die Speicherklasse, die für die Daten- und Protokolldateien des Datencontrollers verwendet werden soll. Wenn Sie nicht sicher sind, welche Speicherklassen in Ihrem Kubernetes-Cluster verfügbar sind, können Sie den folgenden Befehl ausführen:
kubectl get storageclass
. Der Standardwert istdefault
. Dabei wird davon ausgegangen, dass eine Speicherklasse mit dem Namendefault
vorhanden ist, und nicht, dass eine Speicherklasse vorhanden ist, die der Standardspeicherklasse entspricht. Hinweis: Es gibt zwei className-Einstellungen, die auf die gewünschte Speicherklasse festgelegt werden müssen – eine für Daten und eine für Protokolle. - serviceType: Ändern Sie den Diensttyp in
NodePort
, wenn Sie keinen Lastenausgleich verwenden. - Sicherheit: Ersetzen Sie bei Azure Red Hat OpenShift oder bei der Red Hat OpenShift-Containerplattform die Einstellungen vom Typ
security:
durch die folgenden Werte in der YAML-Datei des Datencontrollers.
security:
allowDumps: false
allowNodeMetricsCollection: false
allowPodMetricsCollection: false
OPTIONAL
- name: Der Standardname des Datencontrollers lautet
arc
, Sie können ihn jedoch ändern. - displayName: Legen Sie diesen Wert auf denselben Wert fest wie das name-Attribut am Anfang der Datei.
- logsui-certificate-secret: Der Name des Geheimnisses, das im Kubernetes-Cluster für das Protokoll-Benutzeroberflächen-Zertifikat erstellt wurde.
- metricsui-certificate-secret: Der Name des Geheimnisses, das im Kubernetes-Cluster für das Metrik-Benutzeroberflächen-Zertifikat erstellt wurde.
Das folgende Beispiel zeigt eine vollständige YAML-Datei eines Datencontrollers.
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
Speichern Sie die bearbeitete Datei auf Ihrem lokalen Computer, und führen Sie den folgenden Befehl aus, um den Datencontroller zu erstellen:
kubectl create --namespace arc -f <path to your data controller file>
#Example
kubectl create --namespace arc -f data-controller.yaml
Überwachen des Erstellungsstatus
Das Erstellen des Controllers dauert einige Minuten. Mithilfe der folgenden Befehle können Sie den Status in einem anderen Terminalfenster überwachen:
kubectl get datacontroller --namespace arc
kubectl get pods --namespace arc
Sie können auch den Erstellungsstatus oder die Protokolle eines bestimmten Pods überprüfen, indem Sie einen Befehl wie den folgenden ausführen. Dies ist besonders bei der Problembehandlung hilfreich.
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
Beheben von Problemen bei der Erstellung
Wenn Probleme bei der Erstellung auftreten, finden Sie weitere Informationen im Handbuch zur Problembehandlung.