Bereitstellen von SQL Managed Instance mit Azure Arc-Unterstützung mithilfe von Kubernetes-Tools
In diesem Artikel wird veranschaulicht, wie Sie Azure SQL Managed Instance für Azure Arc mit Kubernetes-Tools bereitstellen.
Voraussetzungen
Einen Datencontroller sollten Sie bereits erstellt haben.
Zum Erstellen einer verwalteten SQL-Instanz mithilfe von Kubernetes-Tools müssen die Kubernetes-Tools installiert sein. In den Beispielen in diesem Artikel wird kubectl
verwendet, allerdings können auch ähnliche Ansätze mit anderen Kubernetes-Tools verfolgt werden, z. B. dem Kubernetes-Dashboard, oc
oder helm
, wenn Sie mit diesen Tools und Kubernetes-YAML/JSON-Dateien vertraut sind.
Installieren des kubectl-Tools
Überblick
Um eine Instanz von SQL Managed Instance zu erstellen, müssen Sie folgende Schritte ausführen:
- Erstellen eines Kubernetes-Geheimnisses zum sicheren Speichern Ihres Anmeldenamens und Kennworts als Systemadministrator*in
- Erstellen einer benutzerdefinierten SQL Managed Instance-Ressource basierend auf der benutzerdefinierten
SqlManagedInstance
-Ressourcendefinition
Definieren Sie beide Elemente in einer YAML-Datei.
Erstellen einer YAML-Datei
Verwenden Sie die Datei template yaml als Ausgangspunkt, um Ihre eigene benutzerdefinierte YAML-Datei für die verwaltete SQL-Instanz zu erstellen. Laden Sie diese Datei auf Ihren Computer herunter, und öffnen Sie sie in einem Text-Editor. Verwenden Sie einen Text-Editor wie VS Code, der Syntaxhervorhebung und Linten für YAML-Dateien unterstützen.
Hinweis
Ab dem Release von Februar 2022 muss eine RWX-fähige (ReadWriteMany
) Speicherklasse für Sicherungen angegeben werden. Weitere Informationen finden Sie unter Zugriffsmodi.
Wenn für Sicherungen keine Speicherklasse angegeben ist, wird die Standardspeicherklasse in Kubernetes verwendet. Wenn die Standardeinstellung nicht für RWX geeignet ist, ist die Installation von SQL Managed Instance möglicherweise nicht erfolgreich.
YAML-Beispieldatei
Sehen Sie sich das folgende Beispiel für eine YAML-Datei an:
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
Anpassen des Anmeldenamens und des Kennworts
Ein Kubernetes-Geheimnis wird als Base64-codierte Zeichenfolge gespeichert – eine für den Benutzernamen und eine für das Kennwort. Sie müssen den Anmeldenamen und das Kennwort eines Systemadministrators base64-codieren und sie am Platzhalterort unter data.password
und data.username
ablegen. Nehmen Sie nicht die Symbole <
und >
mit auf, die in der Vorlage vorhanden sind.
Hinweis
Um optimale Sicherheit zu garantieren, ist die Verwendung des Werts sa
als Anmeldename nicht zulässig.
Befolgen Sie die Kennwortkomplexitätsrichtlinie.
Sie können ein Onlinetool verwenden, um den gewünschten Benutzernamen und das zugehörige Kennwort mit einer Base64-Codierung zu versehen, oder Sie können abhängig von Ihrer Plattform CLI-Tools verwenden.
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
Anpassen des Namens
Die Vorlage hat einen Wert von sql1
für das Attribut name. Sie können diesen Wert ändern, aber es müssen Zeichen enthalten sein, die den DNS-Namensstandards entsprechen. Sie müssen außerdem den Namen des Geheimnisses entsprechend ändern. Wenn Sie z. B. den Namen der verwalteten SQL-Instanz in sql2
ändern, müssen Sie den Namen des Geheimnisses von sql1-login-secret
in sql2-login-secret
ändern.
Anpassen der Ressourcenanforderungen
Sie können die Ressourcenanforderungen (Limits und Anforderungen für RAM und Kerne) je nach Bedarf ändern.
Hinweis
Weitere Informationen zur Kubernetes-Ressourcengovernance.
Anforderungen für Ressourcenlimits und -anforderungen:
- Der Grenzwert für die Anzahl von Kernen ist aus Abrechnungsgründen obligatorisch.
- Der Rest der Ressourcenanforderungen und -limits ist optional.
- Das Limit und die Anforderung für Kerne müssen ein positiver ganzzahliger Wert sein, falls angegeben.
- Für die Kerneanforderung ist mindestens 1 Kern erforderlich, falls angegeben.
- Das Format des Arbeitsspeicherwerts folgt der Kubernetes-Notation.
- Für die Arbeitsspeicheranforderung sind mindestens 2 GB erforderlich, falls angegeben.
- Als generelle Richtlinie sollten Sie 4 GB RAM für jeden Kern bei Produktionsanwendungsfällen haben.
Anpassen des Diensttyps
Der Diensttyp kann bei Bedarf in „NodePort“ geändert werden. Es wird eine zufällige Portnummer zugewiesen.
Anpassen von Speicher
Sie können die Speicherklassen für Speicher so anpassen, dass sie Ihrer Umgebung entsprechen. Wenn Sie nicht sicher sind, welche Speicherklassen verfügbar sind, führen Sie den Befehl kubectl get storageclass
aus, um sie anzuzeigen.
Die Vorlage hat einen Standardwert von default
.
Beispiel:
storage:
data:
volumes:
- className: default
Dieses Beispiel bedeutet, dass es eine Speicherklasse mit dem Namen default
gibt und nicht, dass es eine Speicherklasse gibt, die der Standard ist. Sie können die Größe Ihres Speichers auch optional ändern. Weitere Informationen finden Sie unter Speicherkonfiguration.
Erstellen der verwalteten SQL-Instanz
Nachdem Sie nun die YAML-Datei der verwalteten SQL-Instanz angepasst haben, können Sie die verwaltete SQL-Instanz erstellen, indem Sie den folgenden Befehl ausführen:
kubectl create -n <your target namespace> -f <path to your yaml file>
#Example
#kubectl create -n arc -f C:\arc-data-services\sqlmi.yaml
Überwachen des Erstellungsstatus
Das Erstellen der verwalteten SQL-Instanz dauert einige Minuten. Mithilfe der folgenden Befehle können Sie den Status in einem anderen Terminalfenster überwachen:
Hinweis
Bei den folgenden Beispielbefehlen wird davon ausgegangen, dass Sie eine verwaltete SQL-Instanz namens sql1
sowie einen Kubernetes-Namespace namens arc
erstellt haben. Wenn Sie andere Namen für den Namespace/die verwaltete SQL-Instanz verwendet haben, können Sie arc
und sqlmi
durch Ihre Namen ersetzen.
kubectl get sqlmi/sql1 --namespace arc
kubectl get pods --namespace arc
Sie können auch den Erstellungsstatus eines bestimmten Pods überprüfen. Führen Sie kubectl describe pod ...
aus. Verwenden Sie diesen Befehl, um Probleme zu beheben. Beispiel:
kubectl describe pod/<pod name> --namespace arc
#Example:
#kubectl describe pod/sql1-0 --namespace arc
Behandeln von Bereitstellungsproblemen
Wenn Probleme bei der Bereitstellung auftreten, finden Sie weitere Informationen im Leitfaden zur Problembehandlung.
Zugehöriger Inhalt
Herstellen einer Verbindung mit von Azure Arc aktivierten verwalteten SQL-Instanzen