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:
- Creare lo spazio dei nomi e il servizio bootstrapper
- 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, oc
o 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:
- Seguire la procedura per eseguire il pull delle immagini del contenitore dal Registro Contenitori Microsoft ed eseguirne il push in un registro contenitori privato.
- Creare un segreto pull di immagini denominato
arc-private-registry
per il registro contenitori privato. - Modificare l'URL dell'immagine del programma di avvio automatico nel file bootstrap.yaml.
- Sostituire
arc-private-registry
nel file bootstrap.yaml se è stato usato un nome diverso per il segreto pull dell'immagine.
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 edefault
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.