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:
- De naamruimte en bootstrapper-service maken
- 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, oc
of 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 wordtdefault
ervan uitgegaan dat er een opslagklasse bestaat die niet de naamdefault
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.