Distribuera SQL Managed Instance aktiverat av Azure Arc med kubernetes-verktyg
Den här artikeln visar hur du distribuerar Azure SQL Managed Instance för Azure Arc med Kubernetes-verktyg.
Förutsättningar
Du borde redan ha skapat en datakontrollant.
Om du vill skapa en SQL-hanterad instans med Kubernetes-verktyg måste du ha Kubernetes-verktygen installerade. Exemplen i den här artikeln använder kubectl
, men liknande metoder kan användas med andra Kubernetes-verktyg, till exempel Kubernetes-instrumentpanelen, oc
eller helm
om du är bekant med dessa verktyg och Kubernetes yaml/json.
Översikt
Om du vill skapa en SQL Managed Instance måste du:
- Skapa en Kubernetes-hemlighet för att lagra systemadministratörens inloggning och lösenord på ett säkert sätt
- Skapa en anpassad SQL Managed Instance-resurs baserat på den anpassade resursdefinitionen
SqlManagedInstance
Definiera båda dessa objekt i en yaml-fil.
Skapa en yaml-fil
Använd yaml-mallfilen som utgångspunkt för att skapa en egen anpassad YAML-fil för SQL-hanterad instans. Ladda ned den här filen till den lokala datorn och öppna den i en textredigerare. Använd en textredigerare som VS Code som stöder syntaxmarkering och lintning för yaml-filer.
Kommentar
Från och med versionen ReadWriteMany
från februari 2022 måste lagringsklassen (RWX) anges för säkerhetskopior. Läs mer om åtkomstlägen.
Om ingen lagringsklass har angetts för säkerhetskopior används standardlagringsklassen i Kubernetes. Om standardvärdet inte är RWX-kompatibelt kanske installationen av SQL Managed Instance inte lyckas.
Exempel på yaml-fil
Se följande exempel på en yaml-fil:
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
Anpassa inloggningen och lösenordet
En Kubernetes-hemlighet lagras som en base64-kodad sträng – en för användarnamnet och en för lösenordet. Du måste base64 koda en systemadministratörsinloggning och lösenord och placera dem på platshållarplatsen på data.password
och data.username
. Ta inte med symbolerna <
och >
i mallen.
Kommentar
För optimal säkerhet är det inte tillåtet att använda värdet sa
för inloggningen .
Följ policyn för lösenordskomplexitet.
Du kan använda ett onlineverktyg för att base64 koda önskat användarnamn och lösenord eller använda CLI-verktyg beroende på din plattform.
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
Anpassa namnet
Mallen har värdet sql1
för namnattributet. Du kan ändra det här värdet, men det måste innehålla tecken som följer DNS-namngivningsstandarderna. Du måste också ändra namnet på hemligheten så att den matchar. Om du till exempel ändrar namnet på den HANTERADE SQL-instansen till sql2
måste du ändra namnet på hemligheten från sql1-login-secret
till sql2-login-secret
Anpassa resurskraven
Du kan ändra resurskraven – RAM-minnet och kärngränser och begäranden – efter behov.
Kommentar
Du kan lära dig mer om Kubernetes-resursstyrning.
Krav för resursgränser och begäranden:
- Kärngränsvärdet krävs för faktureringsändamål.
- Resten av resursbegäranden och begränsningar är valfria.
- Kärngränsen och begäran måste vara ett positivt heltalsvärde om det anges.
- Minst en kärna krävs för cores-begäran, om det anges.
- Minnesvärdeformatet följer Kubernetes-notationen.
- Minst 2 GB krävs för minnesbegäran, om det anges.
- Som en allmän riktlinje bör du ha 4 GB RAM-minne för varje 1 kärna för produktionsanvändningsfall.
Anpassa tjänsttyp
Tjänsttypen kan ändras till NodePort om du vill. Ett slumpmässigt portnummer tilldelas.
Anpassa lagring
Du kan anpassa lagringsklasserna för lagring så att de matchar din miljö. Om du inte är säker på vilka lagringsklasser som är tillgängliga kör du kommandot kubectl get storageclass
för att visa dem.
Mallen har standardvärdet default
.
Till exempel
storage:
data:
volumes:
- className: default
Det här exemplet innebär att det finns en lagringsklass med namnet default
– inte att det finns en lagringsklass som är standard. Du kan också ändra storleken på lagringen. Mer information finns i Lagringskonfiguration.
Skapa den SQL-hanterade instansen
Nu när du har anpassat YAML-filen för SQL-hanterad instans kan du skapa den SQL-hanterade instansen genom att köra följande kommando:
kubectl create -n <your target namespace> -f <path to your yaml file>
#Example
#kubectl create -n arc -f C:\arc-data-services\sqlmi.yaml
Övervaka skapandestatusen
Det tar några minuter att skapa den SQL-hanterade instansen. Du kan övervaka förloppet i ett annat terminalfönster med följande kommandon:
Kommentar
Exempelkommandona nedan förutsätter att du har skapat en SQL-hanterad instans med namnet sql1
och Kubernetes-namnområdet med namnet arc
. Om du använde ett annat namnområde/SQL-hanterat instansnamn kan du ersätta arc
och sqlmi
med dina namn.
kubectl get sqlmi/sql1 --namespace arc
kubectl get pods --namespace arc
Du kan också kontrollera skapandestatusen för en viss podd. Kör kubectl describe pod ...
. Använd det här kommandot för att felsöka eventuella problem. Till exempel:
kubectl describe pod/<pod name> --namespace arc
#Example:
#kubectl describe pod/sql1-0 --namespace arc
Felsöka distributionsproblem
Om du får problem med distributionen kan du läsa felsökningsguiden.