Delen via


SQL Managed Instance implementeren die is ingeschakeld door Azure Arc met behulp van Kubernetes-hulpprogramma's

Dit artikel laat zien hoe u Azure SQL Managed Instance voor Azure Arc implementeert met Kubernetes-hulpprogramma's.

Vereisten

U moet al een gegevenscontroller hebben gemaakt.

Als u een met SQL beheerd exemplaar wilt maken met behulp van Kubernetes-hulpprogramma's, moet de Kubernetes-hulpprogramma's zijn geïnstalleerd. De voorbeelden in dit artikel zullen worden gebruikt kubectl, maar vergelijkbare benaderingen kunnen worden gebruikt met andere Kubernetes-hulpprogramma's, zoals het Kubernetes-dashboard, ocof helm als u bekend bent met deze hulpprogramma's en Kubernetes yaml/json.

Het kubectl-hulpprogramma installeren

Overzicht

Als u een met SQL beheerd exemplaar wilt maken, moet u het volgende doen:

  1. Een Kubernetes-geheim maken om uw systeembeheerder veilig aan te melden en wachtwoord op te slaan
  2. Een aangepaste SQL Managed Instance-resource maken op basis van de definitie van de SqlManagedInstance aangepaste resource

Definieer beide items in een YAML-bestand.

Een yaml-bestand maken

Gebruik het yaml-sjabloonbestand als uitgangspunt om uw eigen aangepaste YAML-bestand voor sql Managed Instance te maken. Download dit bestand naar uw lokale computer en open het in een teksteditor. Gebruik een teksteditor zoals VS Code die ondersteuning biedt voor syntaxismarkering en linting voor yaml-bestanden.

Notitie

Vanaf de release ReadWriteMany van februari 2022 moet de opslagklasse (RWX) worden opgegeven voor back-ups. Meer informatie over toegangsmodi. Als er geen opslagklasse is opgegeven voor back-ups, wordt de standaardopslagklasse in Kubernetes gebruikt. Als de standaardwaarde niet geschikt is voor RWX, kan de installatie van sql Managed Instance mogelijk niet lukken.

Voorbeeld van yaml-bestand

Zie het volgende voorbeeld van een YAML-bestand:

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

De aanmelding en het wachtwoord aanpassen

Een Kubernetes-geheim wordt opgeslagen als een met base64 gecodeerde tekenreeks: één voor de gebruikersnaam en een voor het wachtwoord. U moet base64 een aanmelding en wachtwoord van een systeembeheerder coderen en deze op de locatie van de tijdelijke aanduiding plaatsen op data.password en data.username. Neem de < symbolen die > zijn opgegeven in de sjabloon niet op.

Notitie

Voor een optimale beveiliging is het gebruik van de waarde sa niet toegestaan voor de aanmelding. Volg het beleid voor wachtwoordcomplexiteit.

U kunt een onlinehulpprogramma gebruiken om uw gewenste gebruikersnaam en wachtwoord te coderen met base64 of u kunt CLI-hulpprogramma's gebruiken, afhankelijk van uw 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

De naam aanpassen

De sjabloon heeft een waarde voor sql1 het naamkenmerk. U kunt deze waarde wijzigen, maar moet tekens bevatten die voldoen aan de DNS-naamgevingsstandaarden. U moet ook de naam van het geheim wijzigen zodat deze overeenkomt. Als u bijvoorbeeld de naam van het beheerde SQL-exemplaar sql2wijzigt in, moet u de naam van het geheim wijzigen in sql1-login-secretsql2-login-secret

De resourcevereisten aanpassen

U kunt indien nodig de resourcevereisten wijzigen: de RAM- en kernlimieten en aanvragen.

Notitie

Meer informatie over Kubernetes-resourcebeheer.

Vereisten voor resourcelimieten en aanvragen:

  • De limietwaarde voor kerngeheugens is vereist voor factureringsdoeleinden.
  • De rest van de resourceaanvragen en -limieten zijn optioneel.
  • De kernlimiet en aanvraag moeten een positief geheel getal zijn, indien opgegeven.
  • Het minimum van 1 kern is vereist voor de aanvraag voor kernen, indien opgegeven.
  • De indeling van de geheugenwaarde volgt de Kubernetes-notatie.
  • Er is minimaal 2 GB vereist voor een geheugenaanvraag, indien opgegeven.
  • Als algemene richtlijn moet u 4 GB RAM hebben voor elke 1 kern voor productiegebruiksscenario's.

Servicetype aanpassen

Het servicetype kan desgewenst worden gewijzigd in NodePort. Er wordt een willekeurig poortnummer toegewezen.

Opslag aanpassen

U kunt de opslagklassen voor opslag aanpassen aan uw omgeving. Als u niet zeker weet welke opslagklassen beschikbaar zijn, voert u de opdracht kubectl get storageclass uit om deze weer te geven.

De sjabloon heeft een standaardwaarde van default.

Bijvoorbeeld

storage:
    data:
      volumes:
      - className: default 

Dit voorbeeld betekent dat er een opslagklasse met de naam is, default niet dat er een opslagklasse is die de standaardwaarde is. U kunt eventueel ook de grootte van uw opslag wijzigen. Zie de opslagconfiguratie voor meer informatie.

Het beheerde SQL-exemplaar maken

Nu u het yaml-bestand van het beheerde SQL-exemplaar hebt aangepast, kunt u het beheerde SQL-exemplaar maken door de volgende opdracht uit te voeren:

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

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

De status van het maken controleren

Het maken van het beheerde SQL-exemplaar duurt enkele minuten. U kunt de voortgang in een ander terminalvenster bewaken met de volgende opdrachten:

Notitie

In de onderstaande voorbeeldopdrachten wordt ervan uitgegaan dat u een met SQL beheerd exemplaar hebt gemaakt met de naam sql1 en kubernetes-naamruimte met de naam arc. Als u een andere naamruimte/sql managed instance-naam hebt gebruikt, kunt u deze vervangen arc en sqlmi vervangen door uw namen.

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

U kunt ook de status van het maken van een bepaalde pod controleren. Voer kubectl describe pod ... uit. Gebruik deze opdracht om eventuele problemen op te lossen. Voorbeeld:

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

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

Problemen met implementatie van apps oplossen

Als u problemen ondervindt met de implementatie, raadpleegt u de gids voor probleemoplossing.

Verbinding maken met SQL Managed Instance ingeschakeld door Azure Arc