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:
- Creare lo spazio dei nomi e il servizio caricatore di bootstrap
- 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:
- Seguire i passaggi per effettuare il pull delle immagini del Registro Container Microsoft ed eseguirne il push in un registro contenitori privato.
- Creare un segreto del pull di immagini denominato
arc-private-registry
per il registro contenitori privato. - Modificare l'URL dell'immagine del caricatore di bootstrap nel file bootstrap.yaml.
- Sostituire
arc-private-registry
nel file bootstrap.yaml se è stato usato un nome diverso per il segreto del pull di immagini.
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 denominatadefault
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.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
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.