Sdílet prostřednictvím


Nasazení služby SQL Managed Instance povolené službou Azure Arc pomocí nástrojů Kubernetes

Tento článek ukazuje, jak nasadit službu Azure SQL Managed Instance pro Azure Arc pomocí nástrojů Kubernetes.

Požadavky

Už byste měli vytvořit kontroler dat.

Pokud chcete vytvořit spravovanou instanci SQL pomocí nástrojů Kubernetes, budete muset mít nainstalované nástroje Kubernetes. Příklady v tomto článku se použijí kubectl, ale podobné přístupy je možné použít s jinými nástroji Kubernetes, jako je řídicí panel Kubernetes, ocnebo helm pokud znáte tyto nástroje a Kubernetes yaml/json.

Instalace nástroje kubectl

Přehled

Pokud chcete vytvořit spravovanou instanci SQL, musíte:

  1. Vytvoření tajného kódu Kubernetes pro bezpečné uložení přihlašovacího jména a hesla správce systému
  2. Vytvoření vlastního prostředku služby SQL Managed Instance na základě definice vlastního SqlManagedInstance prostředku

Definujte obě tyto položky v souboru yaml.

Vytvoření souboru yaml

Soubor yaml šablony použijte jako výchozí bod k vytvoření vlastního souboru YAML spravované instance SQL. Stáhněte si tento soubor do místního počítače a otevřete ho v textovém editoru. Použijte textový editor, jako je VS Code , který podporuje zvýrazňování syntaxe a lintování souborů yaml.

Poznámka:

Počínaje verzí ReadWriteMany z února 2022 musí být pro zálohy zadána třída úložiště podporující RWX. Přečtěte si další informace o režimech přístupu. Pokud pro zálohy není zadaná žádná třída úložiště, použije se výchozí třída úložiště v Kubernetes. Pokud výchozí nastavení nepodporuje RWX, instalace služby SQL Managed Instance nemusí být úspěšná.

Příklad souboru yaml

Podívejte se na následující příklad souboru 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

Přizpůsobení přihlášení a hesla

Tajný kód Kubernetes je uložený jako řetězec kódovaný jako base64 – jeden pro uživatelské jméno a druhý pro heslo. Budete muset base64 zakódovat přihlašovací jméno a heslo správce systému a umístit je do zástupného umístění na data.password adrese a data.username. Nezahrnujte symboly < a > symboly uvedené v šabloně.

Poznámka:

Pro optimální zabezpečení není použití hodnoty sa pro přihlášení povoleno . Postupujte podle zásad složitosti hesla.

K kódování požadovaného uživatelského jména a hesla můžete použít online nástroj base64 nebo můžete použít nástroje rozhraní příkazového řádku v závislosti na vaší 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

Přizpůsobení názvu

Šablona má hodnotu sql1 atributu name. Tuto hodnotu můžete změnit, ale musí obsahovat znaky, které splňují standardy pojmenování DNS. Musíte také změnit název tajného kódu tak, aby odpovídal. Pokud například změníte název spravované instance SQL na sql2, musíte změnit název tajného klíče z sql1-login-secret na sql2-login-secret

Přizpůsobení požadavků na prostředky

Podle potřeby můžete změnit požadavky na prostředky – omezení paměti RAM a jádra a požadavky.

Poznámka:

Další informace ozásadách

Požadavky na limity a požadavky na prostředky:

  • Hodnota limitu počtu jader se vyžaduje pro účely fakturace.
  • Zbývající požadavky a limity prostředků jsou volitelné.
  • Limit počtu jader a požadavek musí být kladné celé číslo, pokud je zadáno.
  • Pro požadavek na jádra je vyžadováno minimálně 1 jádro, pokud je zadáno.
  • Formát hodnoty paměti se řídí zápisem Kubernetes.
  • V případě zadání požadavku na paměť se vyžaduje minimálně 2 GB.
  • Obecně platí, že pro každý 1 jádro pro případy použití v produkčním prostředí byste měli mít 4 GB paměti RAM.

Přizpůsobení typu služby

V případě potřeby je možné typ služby změnit na NodePort. Přiřadí se náhodné číslo portu.

Přizpůsobení úložiště

Třídy úložiště můžete přizpůsobit tak, aby odpovídaly vašemu prostředí. Pokud si nejste jistí, které třídy úložiště jsou k dispozici, spusťte příkaz kubectl get storageclass , který je zobrazí.

Šablona má výchozí hodnotu default.

Například

storage:
    data:
      volumes:
      - className: default 

Tento příklad znamená, že existuje třída úložiště s názvem default , ne že existuje třída úložiště, která je výchozí. Volitelně můžete také změnit velikost úložiště. Další informace najdete v tématu Konfigurace úložiště.

Vytvoření spravované instance SQL

Teď, když jste přizpůsobili soubor yaml spravované instance SQL, můžete spravovanou instanci SQL vytvořit spuštěním následujícího příkazu:

kubectl create -n <your target namespace> -f <path to your yaml file>

#Example
#kubectl create -n arc -f C:\arc-data-services\sqlmi.yaml

Monitorování stavu vytváření

Vytvoření spravované instance SQL bude trvat několik minut. Průběh můžete sledovat v jiném okně terminálu pomocí následujících příkazů:

Poznámka:

Následující ukázkové příkazy předpokládají, že jste vytvořili spravovanou instanci SQL s názvem sql1 arca oborem názvů Kubernetes. Pokud jste použili jiný název oboru názvů nebo spravované instance SQL, můžete názvy nahradit arc a sqlmi zadávat.

kubectl get sqlmi/sql1 --namespace arc
kubectl get pods --namespace arc

Můžete také zkontrolovat stav vytvoření libovolného konkrétního podu. Spusťte kubectl describe pod .... Tento příkaz použijte k řešení potíží. Příklad:

kubectl describe pod/<pod name> --namespace arc

#Example:
#kubectl describe pod/sql1-0 --namespace arc

Řešení potíží s nasazením

Pokud při nasazení narazíte na nějaké potíže, projděte si průvodce odstraňováním potíží.

Připojení ke službě SQL Managed Instance povolené službou Azure Arc