Condividi tramite


Creare un controller dei dati abilitato per Azure Arc con gli strumenti Kubernetes

Un controller dei 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 dei dati.

La creazione del controller dei dati prevede la seguente procedura generale:

  1. Creare lo spazio dei nomi e il servizio caricatore di bootstrap
  2. Creare il titolare del trattamento dei dati

Nota

Per semplicità, i passaggi seguenti presuppongono la presenza di un amministratore del cluster Kubernetes. Per le distribuzioni di produzione o ambienti più sicuri, si raccomanda di seguire le procedure consigliate per la sicurezza dei "privilegi minimi", quando si distribuisce il controller dei dati concedendo soltanto 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

Per informazioni generali, rivedere l'argomento Pianificare una distribuzione dei servizi dati abilitati per Azure Arc.

Per creare il controller dei dati con gli strumenti Kubernetes, tali strumenti devono essere installati. Gli esempi riportati in questo articolo useranno kubectl, tuttavia è possibile usare approcci simili con altri strumenti Kubernetes, ad esempio il dashboard di Kubernetes, oc o helm, se si ha familiarità con questi strumenti e con i file yaml/json di Kubernetes.

Installare lo strumento kubectl

Creare lo spazio dei nomi e il servizio caricatore di bootstrap

Il servizio caricatore di bootstrap consente di gestire le richieste in ingresso per la creazione, la modifica e l'eliminazione di risorse personalizzate, ad esempio un controller dei 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

Il file modello bootstrapper-unified.yaml effettua il pull dell'immagine del contenitore del caricatore di bootstrap dal Registro Container Microsoft (MCR). Se l'ambiente non è in grado di accedere direttamente al Registro Container Microsoft, è possibile eseguire le operazioni seguenti:

Eseguire il comando seguente per creare lo spazio dei nomi e il servizio caricatore di bootstrap con il file modificato.

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

Verificare con il comando seguente che il pod del caricatore di bootstrap sia in esecuzione.

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

Se lo stato non èIn esecuzione, eseguire il comando alcune volte finché lo stato indicato sarà In esecuzione.

Creare il titolare del trattamento dei dati

Adesso è possibile creare il controller dei dati.

In primo luogo, creare una copia del file modello in locale nel computer, in questo modo sarà possibile modificare alcune delle impostazioni.

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

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

Un segreto Kubernetes viene archiviato come stringa con codifica in Base 64, una per il nome utente e una per la password.

È possibile avvalersi di uno strumento online per la codifica in Base 64 del nome utente e della password desiderati, oppure degli strumenti predefiniti dell'interfaccia della riga di comando, in base alla 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 dashboard dei log e delle metriche

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

Modificare la configurazione del controller dei dati

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

OBBLIGATORIO

  • posizione: modificare questa impostazione in modo che sia la posizione di Azure in cui verranno archiviati i metadati relativi al controller dei dati. Rivedere l'elenco delle aree disponibili.
  • resourceGroup: il gruppo di risorse di Azure in cui si desidera creare la risorsa Azure del controller dei dati in Azure Resource Manager. Solitamente, questo gruppo di risorse dovrebbe essere già esistente, ma non è necessario finché non si caricano i dati in Azure.
  • sottoscrizione: GUID della sottoscrizione di Azure per la sottoscrizione in cui si desidera creare le risorse di Azure.

SI CONSIGLIA DI RIVEDERE, ED EVENTUALMENTE MODIFICARE, LE IMPOSTAZIONI PREDEFINITE

  • storage..className: classe di archiviazione da utilizzare per i file di dati e di log del controller dei dati. Se si hanno dubbi sulle classi di archiviazione disponibili nel cluster Kubernetes, è possibile eseguire il comando seguente: kubectl get storageclass. Il valore predefinito è default, ciò presuppone l’esistenza di una classe di archiviazione denominata default e non che esista una classe di archiviazione che è quella predefinita. Nota: due impostazioni className devono essere impostate per la classe di archiviazione desiderata, una per i dati e una per i log.
  • serviceType: modificare il tipo di servizio su NodePort se non si usa LoadBalancer.
  • Security Per Azure Red Hat OpenShift o Red Hat OpenShift Container Platform, sostituire le impostazioni security: con i valori seguenti nel file yaml del controller dei dati.
  security:
    allowDumps: false
    allowNodeMetricsCollection: false
    allowPodMetricsCollection: false

FACOLTATIVO

  • name: il nome predefinito del controller dei dati è arc, tuttavia, se si desidera, è possibile modificarlo.
  • displayName: impostare 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 file yaml completato del controller dei dati.

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

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

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

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

Monitoraggio dello stato della creazione

Il completamento della creazione del controller richiederà alcuni minuti. Lo stato di avanzamento può essere monitorato 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 della creazione o i log di qualsiasi pod specifico eseguendo un comando simile a quello riportato di seguito. 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 relativi alla creazione

Se si verificano problemi con la creazione, consultare la Guida per la risoluzione dei problemi.