Share via


Gegevenscontroller met Azure Arc maken met behulp van Kubernetes-hulpprogramma's

Een gegevenscontroller beheert gegevensservices met Azure Arc voor een Kubernetes-cluster. In dit artikel wordt beschreven hoe u Kubernetes-hulpprogramma's gebruikt om een gegevenscontroller te maken.

Het maken van de gegevenscontroller heeft de volgende stappen op hoog niveau:

  1. De naamruimte en bootstrapper-service maken
  2. De gegevenscontroller maken

Notitie

Voor het gemak gaan de onderstaande stappen ervan uit dat u een Kubernetes-clusterbeheerder bent. Voor productie-implementaties of veiligere omgevingen wordt aanbevolen om de aanbevolen beveiligingsprocedures van minimale bevoegdheden te volgen bij het implementeren van de gegevenscontroller door alleen specifieke machtigingen te verlenen aan gebruikers en serviceaccounts die betrokken zijn bij het implementatieproces.

Zie het onderwerp Gegevensservices met Arc gebruiken met minimale bevoegdheden voor gedetailleerde instructies.

Vereisten

Bekijk het onderwerp Een implementatie van gegevensservices met Azure Arc plannen voor overzichtsinformatie.

Als u de gegevenscontroller wilt maken met behulp van Kubernetes-hulpprogramma's, moet u de Kubernetes-hulpprogramma's hebben geïnstalleerd. De voorbeelden in dit artikel zullen worden gebruikt kubectl, maar vergelijkbare benaderingen kunnen worden gebruikt met andere Kubernetes-hulpprogramma's, zoals het Kubernetes-dashboard, ocof helm als u bekend bent met deze hulpprogramma's en Kubernetes yaml/json.

Het kubectl-hulpprogramma installeren

De naamruimte en bootstrapper-service maken

De bootstrapper-service verwerkt binnenkomende aanvragen voor het maken, bewerken en verwijderen van aangepaste resources, zoals een gegevenscontroller.

Sla een kopie van bootstrapper-unified.yaml op en vervang de tijdelijke aanduiding {{NAMESPACE}} op alle plaatsen in het bestand door de gewenste naamruimtenaam, bijvoorbeeld: arc.

Belangrijk

Het bootstrapper-unified.yaml-sjabloonbestand wordt standaard ingesteld op het ophalen van de bootstrapper-containerinstallatiekopie uit Microsoft Container Registry (MCR). Als uw omgeving geen rechtstreeks toegang heeft tot het Microsoft Container Registry, kunt u het volgende doen:

  • Volg de stappen om de containerinstallatiekopieën uit het Microsoft Container Registry op te halen en naar een privécontainerregister te pushen.
  • Maak een pull-geheim voor de installatiekopie met de naam arc-private-registry voor uw privécontainerregister.
  • Wijzig de installatiekopie-URL voor de bootstrapper-installatiekopie in het bestand bootstrap.yaml.
  • Vervang arc-private-registry in het bootstrap.yaml-bestand als er een andere naam is gebruikt voor het pull-geheim van de installatiekopie.

Voer de volgende opdracht uit om de naamruimte en bootstrapper-service te maken met het bewerkte bestand.

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

Controleer of de bootstrapper-pod wordt uitgevoerd met behulp van de volgende opdracht.

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

Als de status niet wordt uitgevoerd, voert u de opdracht een paar keer uit totdat de status wordt uitgevoerd.

De gegevenscontroller maken

U bent nu klaar om de gegevenscontroller zelf te maken.

Maak eerst een kopie van het sjabloonbestand lokaal op uw computer, zodat u enkele van de instellingen kunt wijzigen.

De gebruikersnamen en wachtwoorden van dashboards voor metrische gegevens en logboeken maken

Boven aan het bestand kunt u een gebruikersnaam en wachtwoord opgeven die wordt gebruikt voor verificatie bij de metrische gegevens en logboeken van dashboards als beheerder. Kies een beveiligd wachtwoord en deel het met alleen wachtwoorden die deze bevoegdheden nodig hebben.

Een Kubernetes-geheim wordt opgeslagen als een met base64 gecodeerde tekenreeks: één voor de gebruikersnaam en een voor het wachtwoord.

U kunt een onlinehulpprogramma gebruiken om uw gewenste gebruikersnaam en wachtwoord te coderen met base64 of u kunt ingebouwde CLI-hulpprogramma's gebruiken, afhankelijk van uw platform.

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

Certificaten maken voor logboeken en dashboards voor metrische gegevens

U kunt desgewenst SSL/TLS-certificaten maken voor de logboeken en dashboards voor metrische gegevens. Volg de instructies bij Ssl/TLS-certificaten opgeven tijdens de implementatie van systeemeigen Kubernetes-hulpprogramma's.

De configuratie van de gegevenscontroller bewerken

Bewerk indien nodig de configuratie van de gegevenscontroller:

VEREIST

  • locatie: Wijzig dit in de Azure-locatie waar de metagegevens over de gegevenscontroller worden opgeslagen. Bekijk de lijst met beschikbare regio's.
  • resourceGroup: de Azure-resourcegroep waar u de Azure-resource voor de gegevenscontroller wilt maken in Azure Resource Manager. Deze resourcegroep moet doorgaans al bestaan, maar dit is pas vereist wanneer u de gegevens uploadt naar Azure.
  • abonnement: de GUID van het Azure-abonnement voor het abonnement waarin u de Azure-resources wilt maken.

AANBEVOLEN OM DE STANDAARDINSTELLINGEN TE CONTROLEREN EN MOGELIJK TE WIJZIGEN

  • opslag.. className: de opslagklasse die moet worden gebruikt voor de gegevenscontrollergegevens en logboekbestanden. Als u niet zeker weet welke opslagklassen beschikbaar zijn in uw Kubernetes-cluster, kunt u de volgende opdracht uitvoeren: kubectl get storageclass Bij de standaardinstelling wordt default ervan uitgegaan dat er een opslagklasse bestaat die niet de naam default heeft dat er een opslagklasse is die de standaardwaarde is . Opmerking: Er zijn twee className-instellingen die moeten worden ingesteld op de gewenste opslagklasse: één voor gegevens en één voor logboeken.
  • serviceType: wijzig het servicetype in NodePort als u geen LoadBalancer gebruikt.
  • Beveiliging voor Azure Red Hat OpenShift of Red Hat OpenShift Container Platform vervangt u de security: instellingen door de volgende waarden in het yaml-bestand van de gegevenscontroller.
  security:
    allowDumps: false
    allowNodeMetricsCollection: false
    allowPodMetricsCollection: false

OPTIONEEL

  • name: De standaardnaam van de gegevenscontroller is arc, maar u kunt deze desgewenst wijzigen.
  • displayName: stel dit in op dezelfde waarde als het naamkenmerk boven aan het bestand.
  • logsui-certificate-secret: de naam van het geheim dat is gemaakt op het Kubernetes-cluster voor het ui-certificaat voor logboeken.
  • metricsui-certificate-secret: de naam van het geheim dat is gemaakt op het Kubernetes-cluster voor het ui-certificaat voor metrische gegevens.

In het volgende voorbeeld ziet u een voltooide yaml voor de gegevenscontroller.

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

Sla het bewerkte bestand op uw lokale computer op en voer de volgende opdracht uit om de gegevenscontroller te maken:

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

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

De status van het maken controleren

Het maken van de controller duurt enkele minuten. U kunt de voortgang in een ander terminalvenster bewaken met de volgende opdrachten:

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

U kunt ook de status of logboeken van een bepaalde pod controleren door een opdracht zoals hieronder uit te voeren. Dit is vooral handig voor het oplossen van eventuele problemen.

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

Problemen met het maken oplossen

Als u problemen ondervindt met het maken, raadpleegt u de gids voor probleemoplossing.