Creare un controller dati abilitato per Azure Arc usando gli strumenti kubernetes

Un controller di dati gestisce i servizi dati abilitati per Azure Arc per un cluster Kubernetes. Questo articolo descrive come usare gli strumenti kubernetes per creare un controller dati.

La creazione del titolare del trattamento dei dati prevede i passaggi generali seguenti:

  1. Creare lo spazio dei nomi e il servizio bootstrapper
  2. Creare il titolare del trattamento dei dati

Nota

Per semplicità, i passaggi seguenti presuppongono che si sia un amministratore del cluster Kubernetes. Per le distribuzioni di produzione o più ambienti sicuri, è consigliabile seguire le procedure consigliate per la sicurezza di "privilegi minimi" quando si distribuisce il titolare del trattamento dei dati concedendo solo autorizzazioni specifiche agli utenti e agli account di servizio coinvolti nel processo di distribuzione.

Per istruzioni dettagliate, vedere l'argomento Gestire i servizi dati abilitati per Arc con privilegi minimi.

Prerequisiti

Vedere l'argomento Pianificare una distribuzione dei servizi dati abilitata per Azure Arc per informazioni generali.

Per creare il controller dati usando gli strumenti Kubernetes, è necessario che gli strumenti Kubernetes siano installati. Gli esempi in questo articolo useranno kubectl, ma è possibile usare approcci simili con altri strumenti Kubernetes, ad esempio il dashboard di Kubernetes, oco helm se si ha familiarità con questi strumenti e Kubernetes yaml/json.

Installare lo strumento kubectl

Creare lo spazio dei nomi e il servizio bootstrapper

Il servizio bootstrapper gestisce le richieste in ingresso per la creazione, la modifica e l'eliminazione di risorse personalizzate, ad esempio un controller dati.

Salvare una copia di bootstrapper-unified.yaml e sostituire il segnaposto {{NAMESPACE}} in tutte le posizioni del file con il nome dello spazio dei nomi desiderato, ad esempio : arc.

Importante

Per impostazione predefinita, il file modello bootstrapper-unified.yaml esegue il pull dell'immagine del contenitore del programma di avvio automatico dal Registro Contenitori Microsoft. Se l'ambiente non è in grado di accedere direttamente al Registro Azure Container, è possibile eseguire le operazioni seguenti:

Eseguire il comando seguente per creare lo spazio dei nomi e il servizio programma di avvio automatico con il file modificato.

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

Verificare che il pod del programma di avvio automatico sia in esecuzione usando il comando seguente.

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

Se lo stato non è In esecuzione, eseguire il comando alcune volte fino a quando lo stato è In esecuzione.

Creare il titolare del trattamento dei dati

A questo momento si è pronti per creare il titolare del trattamento dei dati stesso.

Creare prima di tutto una copia del file modello in locale nel computer in modo da poter modificare alcune delle impostazioni.

Creare le metriche e i log dei dashboard nomi utente e password

Nella parte superiore del file è possibile specificare un nome utente e una password usati per eseguire l'autenticazione ai dashboard delle metriche e dei log come amministratore. Scegliere una password sicura e condividerla solo con quelle che devono avere questi privilegi.

Un segreto Kubernetes viene archiviato come stringa con codifica Base64, uno per il nome utente e uno per la password.

È possibile usare uno strumento online per codificare in base64 il nome utente e la password desiderati oppure usare gli strumenti predefiniti dell'interfaccia della riga di comando a seconda della piattaforma.

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

Creare certificati per i log e i dashboard delle metriche

Facoltativamente, è possibile creare certificati SSL/TLS per i dashboard di log e metriche. Seguire le istruzioni in Specificare i certificati SSL/TLS durante la distribuzione degli strumenti nativi di Kubernetes.

Modificare la configurazione del controller dati

Modificare la configurazione del controller di dati in base alle esigenze:

OBBLIGATORIO

  • location: modificare questa impostazione in modo che sia la posizione di Azure in cui verranno archiviati i metadati relativi al titolare del trattamento dei dati. Esaminare l'elenco delle aree disponibili.
  • resourceGroup: il gruppo di risorse di Azure in cui si vuole creare la risorsa di Azure del controller di dati in Azure Resource Manager. In genere questo gruppo di risorse dovrebbe esistere già, ma non è necessario fino al momento in cui si caricano i dati in Azure.
  • sottoscrizione: GUID della sottoscrizione di Azure per la sottoscrizione in cui si vogliono creare le risorse di Azure.

CONSIGLIATO PER ESAMINARE ED EVENTUALMENTE MODIFICARE LE IMPOSTAZIONI PREDEFINITE

  • Archiviazione.. className: classe di archiviazione da usare per i file di dati e di log del controller di dati. Se non si è certi delle classi di archiviazione disponibili nel cluster Kubernetes, è possibile eseguire il comando seguente: kubectl get storageclass. Il valore predefinito è default che presuppone che esista una classe di archiviazione e default che non sia presente una classe di archiviazione predefinita. Nota: sono disponibili due impostazioni className da impostare sulla classe di archiviazione desiderata, una per i dati e una per i log.
  • serviceType: modificare il tipo di servizio in NodePort se non si usa loadBalancer.
  • Sicurezza per Azure Red Hat OpenShift o Red Hat OpenShift Container Platform, sostituire le security: impostazioni con i valori seguenti nel file yaml del controller di dati.
  security:
    allowDumps: false
    allowNodeMetricsCollection: false
    allowPodMetricsCollection: false

FACOLTATIVO

  • name: il nome predefinito del titolare del trattamento dei dati è arc, ma è possibile modificarlo se necessario.
  • displayName: impostare questo valore sullo stesso valore dell'attributo name nella parte superiore del file.
  • logsui-certificate-secret: nome del segreto creato nel cluster Kubernetes per il certificato dell'interfaccia utente dei log.
  • metricsui-certificate-secret: nome del segreto creato nel cluster Kubernetes per il certificato dell'interfaccia utente delle metriche.

L'esempio seguente mostra un yaml del controller dati completato.

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

Salvare il file modificato nel computer locale ed eseguire il comando seguente per creare il controller dati:

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

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

Monitoraggio dello stato di creazione

Il completamento della creazione del controller richiederà alcuni minuti. È possibile monitorare lo stato di avanzamento in un'altra finestra del terminale con i comandi seguenti:

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

È anche possibile controllare lo stato di creazione o i log di qualsiasi pod specifico eseguendo un comando simile al seguente. Ciò è particolarmente utile per la risoluzione di eventuali problemi.

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

Risoluzione dei problemi di creazione

Se si verificano problemi con la creazione, vedere la guida alla risoluzione dei problemi.