Condividi tramite


Creare un server PostgreSQL con gli strumenti Kubernetes

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.

Prerequisiti

È necessario aver già creato un controller dei dati.

Per creare un server PostgreSQL con gli strumenti Kubernetes, tali strumenti devono essere installati. Gli esempi riportati in questo articolo useranno kubectl, tuttavia è possibile usare approcci simili con altri strumenti Kubernetes, ad esempio il dashboard di Kubernetes, oc o helm, se si ha familiarità con questi strumenti e con i file yaml/json di Kubernetes.

Installare lo strumento kubectl

Panoramica

Per creare un server PostgreSQL, è necessario creare un segreto Kubernetes che consenta di archiviare in modo sicuro l'ID accesso e la password dell'amministratore postgres e una risorsa personalizzata del server PostgreSQL in base alle definizioni delle risorse personalizzate postgresqls.

Creare un file yaml

È possibile usare il file del modello yaml come punto di partenza per creare un file yaml personalizzato del server PostgreSQL. Scaricare questo file nel computer locale e aprirlo in un editor di testo. È utile usare un editor di testo come VS Code che supporta l'evidenziazione della sintassi e il linting per i file yaml.

File yaml di esempio:

apiVersion: v1
data:
  username: <your base64 encoded username>
  password: <your base64 encoded password>
kind: Secret
metadata:
  name: pg1-login-secret
type: Opaque
---
apiVersion: arcdata.microsoft.com/v1beta3
kind: postgresql
metadata:
  name: pg1
spec:
  scheduling:
    default:
      resources:
        limits:
          cpu: "4"
          memory: 4Gi
        requests:
          cpu: "1"
          memory: 2Gi
  services:
    primary:
      type: LoadBalancer # Modify service type based on your Kubernetes environment
  storage:
    data:
      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

Personalizzazione di ID accesso e password.

Un segreto Kubernetes viene archiviato come stringa con codifica in Base 64, una per il nome utente e una per la password. Sarà necessario codificare in Base 64 un ID accesso e una password amministratore e inserirli nel percorso segnaposto in data.password e data.username. Non includere i simboli < e > indicati nel modello.

È possibile avvalersi di uno strumento online per la codifica in Base 64 del nome utente e della password desiderati, oppure degli strumenti predefiniti dell'interfaccia della riga di comando, in base alla piattaforma.

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

Personalizzazione del nome

Il modello ha un valore di pg1 per l'attributo name. È possibile modificare questo valore, ma si devono usare caratteri che seguono gli standard di denominazione DNS. Se si modifica il nome, modificare il nome del segreto affinché corrisponda. Ad esempio, se si modifica il nome del server PostgreSQL in pg2, sarà necessario modificare il nome del segreto da pg1-login-secret a pg2-login-secret

Personalizzazione dei requisiti delle risorse

È possibile modificare i requisiti delle risorse, ovvero i limiti e le richieste RAM e core in base alle esigenze.

Nota

Sono disponibili altre informazioni sulla governance delle risorse Kubernetes.

Requisiti per i limiti e le richieste di risorse:

  • Il valore limite di core è obbligatorio per motivi di fatturazione.
  • La parte restante delle richieste e dei limiti delle risorse è facoltativa.
  • Il limite di core e richieste deve essere un valore intero positivo, se specificato.
  • È richiesto un minimo di un core per la richiesta di core, se specificato.
  • Il formato del valore di memoria segue la notazione Kubernetes.

Personalizzazione del tipo di servizio

Se si desidera, il tipo di servizio può essere modificato in NodePort. Verrà assegnato un numero di porta casuale.

Personalizzazione dell'archiviazione

È possibile personalizzare le classi di archiviazione affinché l'archiviazione corrisponda all'ambiente. Se si hanno dubbi sulle classi di archiviazione disponibili, eseguire il comando kubectl get storageclass per visualizzarle. Il modello ha un valore predefinito di default. Questo valore significa che è presente una classe di archiviazione denominata default e non che esiste una classe di archiviazione che è quella predefinita. Facoltativamente, è anche possibile modificare le dimensioni dello spazio di archiviazione. Sono disponibili altre informazioni sulla configurazione dell'archiviazione.

Creazione del server PostgreSQL

Ora che il file yaml del server PostgreSQL è stato personalizzato, è possibile creare il server PostgreSQL eseguendo il comando seguente:

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

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

Monitoraggio dello stato della creazione

Il completamento della creazione del server PostgreSQL richiederà alcuni minuti. Lo stato di avanzamento può essere monitorato in un'altra finestra del terminale con i comandi seguenti:

Nota

I comandi di esempio riportati di seguito presuppongono che sia stato creato un server PostgreSQL denominato pg1 e uno spazio dei nomi Kubernetes con il nome arc. Se è stato usato un nome diverso per lo spazio dei nomi/il server PostgreSQL, è possibile sostituire arc e pg1 con nomi personalizzati.

kubectl get postgresqls/pg1 --namespace arc
kubectl get pods --namespace arc

È anche possibile controllare lo stato della creazione di qualsiasi pod specifico, eseguendo il comando kubectl describe. Il comando describe è particolarmente utile per la risoluzione di eventuali problemi. Ad esempio:

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

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

Risoluzione dei problemi relativi alla creazione

Se si verificano problemi con la creazione, vedere la Guida per la risoluzione dei problemi.