Wdrażanie wystąpienia zarządzanego SQL włączonego przez usługę Azure Arc przy użyciu narzędzi platformy Kubernetes
W tym artykule pokazano, jak wdrożyć usługę Azure SQL Managed Instance dla usługi Azure Arc przy użyciu narzędzi Platformy Kubernetes.
Wymagania wstępne
Powinien już zostać utworzony kontroler danych.
Aby utworzyć wystąpienie zarządzane SQL przy użyciu narzędzi Kubernetes, musisz mieć zainstalowane narzędzia Kubernetes. Przykłady w tym artykule będą używane, kubectl
ale podobne podejścia mogą być używane z innymi narzędziami kubernetes, takimi jak pulpit nawigacyjny Kubernetes, oc
lub helm
jeśli znasz te narzędzia i plik yaml/json platformy Kubernetes.
Instalowanie narzędzia kubectl
Omówienie
Aby utworzyć wystąpienie zarządzane SQL, należy wykonać następujące kroki:
- Tworzenie wpisu tajnego platformy Kubernetes w celu bezpiecznego przechowywania identyfikatora logowania administratora systemu i hasła
- Tworzenie zasobu niestandardowego usługi SQL Managed Instance na podstawie niestandardowej
SqlManagedInstance
definicji zasobu
Zdefiniuj oba te elementy w pliku yaml.
Tworzenie pliku yaml
Użyj pliku yaml szablonu jako punktu początkowego, aby utworzyć własny niestandardowy plik yaml wystąpienia zarządzanego SQL. Pobierz ten plik na komputer lokalny i otwórz go w edytorze tekstów. Użyj edytora tekstów, takiego jak PROGRAM VS Code , który obsługuje wyróżnianie składni i podszewkę dla plików yaml.
Uwaga
Począwszy od wersji z lutego 2022 r., ReadWriteMany
należy określić klasę magazynu z obsługą RWX dla kopii zapasowych. Dowiedz się więcej o trybach dostępu.
Jeśli dla kopii zapasowych nie określono żadnej klasy magazynu, zostanie użyta domyślna klasa magazynu na platformie Kubernetes. Jeśli wartość domyślna nie jest w stanie rwX, instalacja usługi SQL Managed Instance może zakończyć się niepowodzeniem.
Przykładowy plik yaml
Zobacz następujący przykład pliku yaml:
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
Dostosowywanie identyfikatora logowania i hasła
Wpis tajny kubernetes jest przechowywany jako ciąg zakodowany w formacie base64 — jeden dla nazwy użytkownika i jeden dla hasła. Musisz zakodować identyfikator logowania i hasło administratora systemu base64, a następnie umieścić je w lokalizacji zastępczej w data.password
lokalizacji i data.username
. Nie dołączaj <
symboli i >
podanych w szablonie.
Uwaga
W celu uzyskania optymalnego bezpieczeństwa użycie wartości sa
nie jest dozwolone w przypadku logowania .
Postępuj zgodnie z zasadami złożoności haseł.
Możesz użyć narzędzia online, aby zakodować żądaną nazwę użytkownika i hasło, lub użyć narzędzi interfejsu wiersza polecenia w zależności od platformy.
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
Dostosowywanie nazwy
Szablon ma wartość sql1
atrybutu name. Można zmienić tę wartość, ale musi zawierać znaki zgodne ze standardami nazewnictwa DNS. Należy również zmienić nazwę wpisu tajnego tak, aby był zgodny. Jeśli na przykład zmienisz nazwę wystąpienia zarządzanego SQL na sql2
, musisz zmienić nazwę wpisu tajnego z sql1-login-secret
na sql2-login-secret
Dostosowywanie wymagań dotyczących zasobów
Możesz zmienić wymagania dotyczące zasobów — limity pamięci RAM i rdzeni oraz żądania — zgodnie z potrzebami.
Uwaga
Aby dowiedzieć się więcej na temat zarządzania zasobami platformy Kubernetes, możesz dowiedzieć się więcej.
Wymagania dotyczące limitów zasobów i żądań:
- Wartość limitu rdzeni jest wymagana do celów rozliczeniowych.
- Pozostałe żądania zasobów i limity są opcjonalne.
- Limit rdzeni i żądanie muszą być dodatnią wartością całkowitą, jeśli zostanie określona.
- Co najmniej 1 rdzeń jest wymagany dla żądania rdzeni, jeśli określono.
- Format wartości pamięci jest zgodny z notacją Kubernetes.
- W przypadku żądania pamięci wymagane jest co najmniej 2 GB.
- Ogólnie rzecz biorąc, należy mieć 4 GB pamięci RAM dla każdego 1 rdzenia dla przypadków użycia w środowisku produkcyjnym.
Dostosowywanie typu usługi
W razie potrzeby można zmienić typ usługi na NodePort. Zostanie przypisany losowy numer portu.
Dostosowywanie magazynu
Możesz dostosować klasy magazynu dla magazynu, aby dopasować je do środowiska. Jeśli nie masz pewności, które klasy magazynu są dostępne, uruchom polecenie kubectl get storageclass
, aby je wyświetlić.
Szablon ma wartość default
domyślną .
Na przykład
storage:
data:
volumes:
- className: default
Ten przykład oznacza, że istnieje klasa magazynu o nazwie default
— nie istnieje klasa magazynu, która jest domyślna. Opcjonalnie możesz również zmienić rozmiar magazynu. Aby uzyskać więcej informacji, zobacz Konfiguracja magazynu.
Tworzenie wystąpienia zarządzanego SQL
Po dostosowaniu pliku yaml wystąpienia zarządzanego SQL możesz utworzyć wystąpienie zarządzane SQL, uruchamiając następujące polecenie:
kubectl create -n <your target namespace> -f <path to your yaml file>
#Example
#kubectl create -n arc -f C:\arc-data-services\sqlmi.yaml
Monitorowanie stanu tworzenia
Tworzenie wystąpienia zarządzanego SQL potrwa kilka minut. Postęp można monitorować w innym oknie terminalu za pomocą następujących poleceń:
Uwaga
W poniższych przykładowych poleceniach przyjęto założenie, że utworzono wystąpienie zarządzane SQL o nazwie sql1
i przestrzeń nazw Kubernetes o nazwie arc
. Jeśli użyto innej przestrzeni nazw/nazwy wystąpienia zarządzanego SQL, możesz zastąpić arc
ciąg i sqlmi
swoimi nazwami.
kubectl get sqlmi/sql1 --namespace arc
kubectl get pods --namespace arc
Możesz również sprawdzić stan tworzenia dowolnego określonego zasobnika. Uruchom program kubectl describe pod ...
. Użyj tego polecenia, aby rozwiązać wszelkie problemy. Na przykład:
kubectl describe pod/<pod name> --namespace arc
#Example:
#kubectl describe pod/sql1-0 --namespace arc
Rozwiązywanie problemów z wdrażaniem
Jeśli wystąpią problemy z wdrożeniem, zapoznaj się z przewodnikiem rozwiązywania problemów.
Powiązana zawartość
Nawiązywanie połączenia z wystąpieniem zarządzanym SQL włączonym przez usługę Azure Arc