Dela via


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, oceller helm om du är bekant med dessa verktyg och Kubernetes yaml/json.

Installera kubectl-verktyget

Översikt

Om du vill skapa en SQL Managed Instance måste du:

  1. Skapa en Kubernetes-hemlighet för att lagra systemadministratörens inloggning och lösenord på ett säkert sätt
  2. 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 sql2må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.

Anslut till SQL Managed Instance aktiverat av Azure Arc