SQL Managed Instance implementeren die is ingeschakeld door Azure Arc met behulp van Kubernetes-hulpprogramma's
Dit artikel laat zien hoe u Azure SQL Managed Instance voor Azure Arc implementeert met Kubernetes-hulpprogramma's.
Vereisten
U moet al een gegevenscontroller hebben gemaakt.
Als u een met SQL beheerd exemplaar wilt maken met behulp van Kubernetes-hulpprogramma's, moet de Kubernetes-hulpprogramma's zijn 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
Overzicht
Als u een met SQL beheerd exemplaar wilt maken, moet u het volgende doen:
- Een Kubernetes-geheim maken om uw systeembeheerder veilig aan te melden en wachtwoord op te slaan
- Een aangepaste SQL Managed Instance-resource maken op basis van de definitie van de
SqlManagedInstance
aangepaste resource
Definieer beide items in een YAML-bestand.
Een yaml-bestand maken
Gebruik het yaml-sjabloonbestand als uitgangspunt om uw eigen aangepaste YAML-bestand voor sql Managed Instance te maken. Download dit bestand naar uw lokale computer en open het in een teksteditor. Gebruik een teksteditor zoals VS Code die ondersteuning biedt voor syntaxismarkering en linting voor yaml-bestanden.
Notitie
Vanaf de release ReadWriteMany
van februari 2022 moet de opslagklasse (RWX) worden opgegeven voor back-ups. Meer informatie over toegangsmodi.
Als er geen opslagklasse is opgegeven voor back-ups, wordt de standaardopslagklasse in Kubernetes gebruikt. Als de standaardwaarde niet geschikt is voor RWX, kan de installatie van sql Managed Instance mogelijk niet lukken.
Voorbeeld van yaml-bestand
Zie het volgende voorbeeld van een YAML-bestand:
apiVersion: v1
data:
password: <your base64 encoded password>
username: <your base64 encoded username>
kind: Secret
metadata:
name: sql1-login-secret
type: Opaque
---
apiVersion: sql.arcdata.microsoft.com/v12
kind: SqlManagedInstance
metadata:
name: sql1
annotations:
exampleannotation1: exampleannotationvalue1
exampleannotation2: exampleannotationvalue2
labels:
examplelabel1: examplelabelvalue1
examplelabel2: examplelabelvalue2
spec:
dev: true #options: [true, false]
licenseType: LicenseIncluded #options: [LicenseIncluded, BasePrice]. BasePrice is used for Azure Hybrid Benefits.
tier: GeneralPurpose #options: [GeneralPurpose, BusinessCritical]
security:
adminLoginSecret: sql1-login-secret
scheduling:
default:
resources:
limits:
cpu: "2"
memory: 4Gi
requests:
cpu: "1"
memory: 2Gi
services:
primary:
type: LoadBalancer
storage:
#backups:
# volumes:
# - className: azurefile # Backup volumes require a ReadWriteMany (RWX) capable storage class
# size: 5Gi
data:
volumes:
- className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
size: 5Gi
datalogs:
volumes:
- className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
size: 5Gi
logs:
volumes:
- className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
size: 5Gi
De aanmelding en het wachtwoord aanpassen
Een Kubernetes-geheim wordt opgeslagen als een met base64 gecodeerde tekenreeks: één voor de gebruikersnaam en een voor het wachtwoord. U moet base64 een aanmelding en wachtwoord van een systeembeheerder coderen en deze op de locatie van de tijdelijke aanduiding plaatsen op data.password
en data.username
. Neem de <
symbolen die >
zijn opgegeven in de sjabloon niet op.
Notitie
Voor een optimale beveiliging is het gebruik van de waarde sa
niet toegestaan voor de aanmelding.
Volg het beleid voor wachtwoordcomplexiteit.
U kunt een onlinehulpprogramma gebruiken om uw gewenste gebruikersnaam en wachtwoord te coderen met base64 of u kunt 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
De naam aanpassen
De sjabloon heeft een waarde voor sql1
het naamkenmerk. U kunt deze waarde wijzigen, maar moet tekens bevatten die voldoen aan de DNS-naamgevingsstandaarden. U moet ook de naam van het geheim wijzigen zodat deze overeenkomt. Als u bijvoorbeeld de naam van het beheerde SQL-exemplaar sql2
wijzigt in, moet u de naam van het geheim wijzigen in sql1-login-secret
sql2-login-secret
De resourcevereisten aanpassen
U kunt indien nodig de resourcevereisten wijzigen: de RAM- en kernlimieten en aanvragen.
Notitie
Meer informatie over Kubernetes-resourcebeheer.
Vereisten voor resourcelimieten en aanvragen:
- De limietwaarde voor kerngeheugens is vereist voor factureringsdoeleinden.
- De rest van de resourceaanvragen en -limieten zijn optioneel.
- De kernlimiet en aanvraag moeten een positief geheel getal zijn, indien opgegeven.
- Het minimum van 1 kern is vereist voor de aanvraag voor kernen, indien opgegeven.
- De indeling van de geheugenwaarde volgt de Kubernetes-notatie.
- Er is minimaal 2 GB vereist voor een geheugenaanvraag, indien opgegeven.
- Als algemene richtlijn moet u 4 GB RAM hebben voor elke 1 kern voor productiegebruiksscenario's.
Servicetype aanpassen
Het servicetype kan desgewenst worden gewijzigd in NodePort. Er wordt een willekeurig poortnummer toegewezen.
Opslag aanpassen
U kunt de opslagklassen voor opslag aanpassen aan uw omgeving. Als u niet zeker weet welke opslagklassen beschikbaar zijn, voert u de opdracht kubectl get storageclass
uit om deze weer te geven.
De sjabloon heeft een standaardwaarde van default
.
Bijvoorbeeld
storage:
data:
volumes:
- className: default
Dit voorbeeld betekent dat er een opslagklasse met de naam is, default
niet dat er een opslagklasse is die de standaardwaarde is. U kunt eventueel ook de grootte van uw opslag wijzigen. Zie de opslagconfiguratie voor meer informatie.
Het beheerde SQL-exemplaar maken
Nu u het yaml-bestand van het beheerde SQL-exemplaar hebt aangepast, kunt u het beheerde SQL-exemplaar maken door de volgende opdracht uit te voeren:
kubectl create -n <your target namespace> -f <path to your yaml file>
#Example
#kubectl create -n arc -f C:\arc-data-services\sqlmi.yaml
De status van het maken controleren
Het maken van het beheerde SQL-exemplaar duurt enkele minuten. U kunt de voortgang in een ander terminalvenster bewaken met de volgende opdrachten:
Notitie
In de onderstaande voorbeeldopdrachten wordt ervan uitgegaan dat u een met SQL beheerd exemplaar hebt gemaakt met de naam sql1
en kubernetes-naamruimte met de naam arc
. Als u een andere naamruimte/sql managed instance-naam hebt gebruikt, kunt u deze vervangen arc
en sqlmi
vervangen door uw namen.
kubectl get sqlmi/sql1 --namespace arc
kubectl get pods --namespace arc
U kunt ook de status van het maken van een bepaalde pod controleren. Voer kubectl describe pod ...
uit. Gebruik deze opdracht om eventuele problemen op te lossen. Voorbeeld:
kubectl describe pod/<pod name> --namespace arc
#Example:
#kubectl describe pod/sql1-0 --namespace arc
Problemen met implementatie van apps oplossen
Als u problemen ondervindt met de implementatie, raadpleegt u de gids voor probleemoplossing.
Gerelateerde inhoud
Verbinding maken met SQL Managed Instance ingeschakeld door Azure Arc