Creare un server PostgreSQL abilitato per Azure Arc dall'interfaccia della riga di comando

Questo documento descrive i passaggi necessari per la creazione di un server PostgreSQL in Azure Arc e per la connessione al server.

Prerequisiti

Prima di procedere con le attività presentate in questo articolo, è necessario disporre degli strumenti necessari. Per tutte le distribuzioni sono richiesti gli strumenti seguenti:

  • Azure Data Studio

  • Estensione Azure Arc per Azure Data Studio

  • Interfaccia della riga di comando di Azure (az)

  • arcdata estensione per l'interfaccia della riga di comando di Azure

  • kubectl

    Strumenti client aggiuntivi in base all'ambiente. Per un elenco più completo, vedere Strumenti client.

Oltre agli strumenti richiesti, il completamento delle attività necessita di un titolare del trattamento dei dati di Azure Arc.

Nota

In quanto funzionalità di anteprima, la tecnologia presentata in questo articolo è soggetta alle condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure.

Gli aggiornamenti più recenti sono disponibili nelle note sulla versione.

Introduzione

Se si ha già familiarità con gli argomenti riportati di seguito, è possibile ignorare questo paragrafo. Prima di procedere con la creazione, è consigliabile leggere alcuni argomenti importanti:

Se si preferisce fare una prova senza effettuare il provisioning di un ambiente completo, è possibile iniziare rapidamente a usare Azure Arc Jumpstart nel servizio Azure Kubernetes (AKS), in AWS Elastic Kubernetes Service (EKS), Google Cloud Kubernetes Engine (GKE) o in una macchina virtuale di Azure.

Passaggio preliminare e temporaneo solo per gli utenti di OpenShift

Implementare questo passaggio prima di procedere al passaggio successivo. Per distribuire il server PostgreSQL in Red Hat OpenShift in un progetto diverso da quello predefinito, dovranno essere eseguiti i comandi seguenti nel cluster per aggiornare i vincoli di protezione. Questo comando concede i privilegi necessari agli account del servizio che eseguiranno il server PostgreSQL. Il vincolo di contesto di protezione arc-data-scc è quello che è stato aggiunto al momento della distribuzione del controller dei dati di Azure Arc.

oc adm policy add-scc-to-user arc-data-scc -z <server-name> -n <namespace-name>

Server-name è il nome del server che verrà creato durante il passaggio successivo.

Per maggiori dettagli sui vincoli del contesto di protezione di OpenShift, consultare la Documentazione di OpenShift. Passare al passaggio successivo.

Creare un server PostgreSQL abilitato per Azure Arc

Per creare un server PostgreSQL abilitato per Azure Arc nel controller dei dati Arc, verrà utilizzato il comando az postgres server-arc create al quale verranno trasmessi diversi parametri.

Per informazioni dettagliate su tutti i parametri che è possibile impostare al momento della creazione, rivedere l'output del comando:

az postgres server-arc create --help

I parametri principali che devono essere considerati sono:

  • nome del server che si desidera distribuire. Indicare --name o -n e in sequenza un nome la cui lunghezza non superi 11 caratteri.

  • Le classi di archiviazione che si desidera vengano utilizzate dal server. È importante impostare la classe di archiviazione direttamente nel momento in cui si distribuisce un server, infatti, questa impostazione non potrà essere modificata dopo la distribuzione. È possibile specificare le classi di archiviazione per i dati, i log e i backup. Per impostazione predefinita, se non si indicano le classi di archiviazione, saranno usate le classi di archiviazione del controller dei dati.

    • Per impostare la classe di archiviazione per i backup, indicare il parametro --storage-class-backups seguito dal nome della classe di archiviazione. Se si esclude questo parametro, i backup automatizzati saranno disabilitati
    • Per impostare la classe di archiviazione per i dati, indicare il parametro --storage-class-data seguito dal nome della classe di archiviazione.
    • Per impostare la classe di archiviazione per i log, indicare il parametro --storage-class-logs seguito dal nome della classe di archiviazione.

    Importante

    Se fosse necessario modificare la classe di archiviazione dopo la distribuzione, estrarre i dati, eliminare il server, creare un nuovo server e importare i dati.

Quando si esegue il comando create, verrà richiesto di immettere il nome utente e la password dell'utente amministratore. È possibile ignorare il prompt interattivo impostando le variabili di ambiente della sessione AZDATA_USERNAME e AZDATA_PASSWORD prima di eseguire il comando create.

Esempi

Per distribuire un server PostgreSQL denominato postgres01 che utilizza le stesse classi di archiviazione del controller dei dati, eseguire il comando seguente:

az postgres server-arc create -n postgres01 --k8s-namespace <namespace> --use-k8s

Nota

  • Se il controller dei dati è stato distribuito usando le variabili di ambiente della sessione AZDATA_USERNAME e AZDATA_PASSWORD nella medesima sessione del terminale, i valori per AZDATA_PASSWORD saranno usati per distribuire anche il server PostgreSQL. Se si preferisce usare un'altra password, è possibile (1) aggiornare i valori di AZDATA_USERNAME e AZDATA_PASSWORD, oppure (2) eliminare le variabili di ambiente AZDATA_USERNAME e AZDATA_PASSWORD, oppure (3) eliminare i relativi valori che saranno richiesti per immettere un nome utente e una password in modo interattivo al momento della creazione di un server.
  • La creazione di un server PostgreSQL non comporta la registrazione immediata delle risorse in Azure. Come parte del processo di caricamento dell'inventario risorse o dei dati di utilizzo in Azure, le risorse verranno create in Azure e sarà possibile visualizzarle nel portale di Azure.

Elencare i server PostgreSQL distribuiti nel controller dei dati Arc

Per elencare i server PostgreSQL distribuiti nel controller dei dati Arc, eseguire il comando seguente:

az postgres server-arc list --k8s-namespace <namespace> --use-k8s
  {
    "name": "postgres01",
    "state": "Ready"
  }

Ottenere gli endpoint per collegarsi ai server PostgreSQL abilitati per Azure Arc

Per visualizzare gli endpoint per un server PostgreSQL, eseguire il comando seguente:

az postgres server-arc endpoint list -n <server name> --k8s-namespace <namespace> --use-k8s

Ad esempio:

{
  "instances": [
    {
      "endpoints": [
        {
          "description": "PostgreSQL Instance",
          "endpoint": "postgresql://postgres:<replace with password>@123.456.78.912:5432"
        },
        {
          "description": "Log Search Dashboard",
        },
        {
          "description": "Metrics Dashboard",
          "endpoint": "https://98.765.432.11:3000/d/postgres-metrics?var-Namespace=arc&var-Name=postgres01"
        }
      ],
      "engine": "PostgreSql",
      "name": "postgres01"
    }
  ],
  "namespace": "arc"
}

È possibile usare l'endpoint dell'Istanza PostgreSQL per collegarsi al server PostgreSQL dallo strumento preferito: Azure Data Studio, pgcli psql, pgAdmin, e così via.

A questo punto, usare la build Insider di Azure Data Studio.

Nota speciale sulle distribuzioni di macchine virtuali di Azure

Se si usa una macchina virtuale di Azure, l'indirizzo IP dell'endpoint non mostrerà l'indirizzo IP pubblico. Per individuare l'indirizzo IP pubblico, usare il comando seguente:

az network public-ip list -g azurearcvm-rg --query "[].{PublicIP:ipAddress}" -o table

Sarà quindi possibile combinare l'indirizzo IP pubblico con la porta per eseguire la connessione.

Potrebbe anche essere necessario esporre la porta del server PostgreSQL tramite il gateway di sicurezza di rete (NSG). Per consentire il passaggio del traffico attraverso il gateway di sicurezza di rete (NSG), impostare una regola. Per impostare una regola, è necessario conoscere il nome del gateway di sicurezza di rete. Per determinare il gateway di sicurezza di rete, usare il comando seguente:

az network nsg list -g azurearcvm-rg --query "[].{NSGName:name}" -o table

Una volta ottenuto il nome NSG, sarà possibile aggiungere una regola del firewall usando il comando seguente. I valori indicati nell'esempio creano una regola del gateway di sicurezza di rete per la porta 30655 e viene consentita la connessione da qualsiasi indirizzo IP di origine.

Avviso

Non è consigliabile impostare una regola per consentire la connessione da qualsiasi indirizzo IP di origine. È possibile applicare un blocco specificando un valore -source-address-prefixes specifico per l'indirizzo IP del client, oppure un intervallo di indirizzi IP che includa gli indirizzi IP del team o dell'organizzazione.

Sostituire il valore del parametro --destination-port-ranges riportato di seguito, con il numero di porta ottenuto dal comando az postgres server-arc list indicato in precedenza.

az network nsg rule create -n db_port --destination-port-ranges 30655 --source-address-prefixes '*' --nsg-name azurearcvmNSG --priority 500 -g azurearcvm-rg --access Allow --description 'Allow port through for db access' --destination-address-prefixes '*' --direction Inbound --protocol Tcp --source-port-ranges '*'

Stabilire la connessione con Azure Data Studio

Aprire Azure Data Studio e connettersi all'istanza con l'indirizzo IP dell'endpoint esterno, il numero di porta indicato in precedenza e la password specificata al momento della creazione dell'istanza. Se PostgreSQL non è disponibile nell'elenco a discesa Tipo di connessione, è possibile installare l'estensione PostgreSQL eseguendo una ricerca di PostgreSQL nella scheda delle estensioni.

Nota

È necessario fare clic sul pulsante [Advanced] nel pannello di connessione per immettere il numero di porta.

Tenere presente che se si usa una macchina virtuale di Azure, verrà richiesto l'indirizzo IP pubblico, accessibile tramite il comando seguente:

az network public-ip list -g azurearcvm-rg --query "[].{PublicIP:ipAddress}" -o table

Connettersi con psql

Per accedere al server PostgreSQL, passare l'endpoint esterno del server PostgreSQL recuperato in precedenza:

È ora possibile connettersi a psql:

psql postgresql://postgres:<EnterYourPassword>@10.0.0.4:30655