GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come distribuire PostgreSQL su Kubernetes

Introduzione

PostgreSQL è un sistema di database relazionale affidabile e robusto con transazioni conformi agli ACID. È progettato per gestire carichi di lavoro di tutte le dimensioni, rendendolo adatto per l'uso personale e distribuzioni su larga scala come data warehouse, server di big data o servizi Web.

La distribuzione di PostgreSQL su Kubernetes crea un'istanza PostgreSQL scalabile e portatile, sfruttando i lati positivi sia dell'RDBMS che della piattaforma di orchestrazione.

Questo articolo ti mostrerà due metodi per distribuire PostgreSQL su Kubernetes:utilizzando un grafico Helm o creando manualmente la tua configurazione.

Prerequisiti

  • Un cluster Kubernetes con kubectl installato
  • Timone 3 installato
  • Privilegi amministrativi sul tuo sistema

Distribuisci PostgreSQL usando Helm

Helm ti offre un modo semplice e veloce per distribuire un'istanza PostgreSQL sul tuo cluster.

Passaggio 1:aggiungi il repository di Helm

1. Cerca in Artifact Hub un grafico Helm PostgreSQL che desideri utilizzare. Aggiungi il repository del grafico all'installazione locale di Helm digitando:

helm repo add [repository-name] [repository-address]

Questo articolo utilizza il grafico Bitnami Helm per l'installazione di PostgreSQL.

2. Dopo aver aggiunto il repository, aggiorna i tuoi repository locali.

helm repo update

Il sistema conferma l'avvenuto aggiornamento.

Passaggio 2:crea e applica un volume di archiviazione persistente

I dati nel tuo database Postgres devono persistere durante i riavvii del pod.

1. Per ottenere ciò, crea una risorsa PersistentVolume in un file YAML, utilizzando un editor di testo come nano.

nano postgres-pv.yaml

Il contenuto del file definisce:

  • La risorsa stessa.
  • La classe di archiviazione.
  • La quantità di spazio di archiviazione allocato.
  • Le modalità di accesso.
  • Il percorso di montaggio sul sistema host.

Questo esempio utilizza la configurazione seguente:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: postgresql-pv
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"

2. Salvare il file ed uscire. Quindi applica la configurazione con kubectl :

kubectl apply -f postgres-pv.yaml

Il sistema conferma la creazione del volume persistente.

Fase 3:crea e applica la richiesta di volume persistente

1. Crea un Persistent Volume Claim (PVC) per richiedere lo spazio di archiviazione allocato nel passaggio precedente.

nano postgres-pvc.yaml

L'esempio utilizza la configurazione seguente:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: postgresql-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

2. Salvare il file ed uscire. Applica la configurazione con kubectl :

kubectl apply -f postgres-pvc.yaml

Il sistema conferma la corretta creazione della PVC.

3. Usa kubectl get per verificare se la PVC è collegata correttamente al fotovoltaico:

kubectl get pvc

La colonna dello stato mostra che il reclamo è Bound .

Fase 4:installa il grafico del timone

Installa la tabella timone con helm install comando. Aggiungi --set flag al comando per collegare l'installazione alla PVC che hai creato e abilitare i permessi del volume:

helm install [release-name] [repo-name] --set persistence.existingClaim=[pvc-name] --set volumePermissions.enabled=true

Il sistema visualizza un rapporto al termine dell'installazione.

Fase 5:connettiti al client PostgreSQL

1. Esporta il POSTGRES_PASSWORD variabile di ambiente per poter accedere all'istanza PostgreSQL:

export POSTGRES_PASSWORD=$(kubectl get secret --namespace default psql-test-postgresql -o jsonpath="{.data.postgresql-password}" | base64 --decode)

2. Apri un'altra finestra del terminale e digita il seguente comando per inoltrare la porta Postgres:

kubectl port-forward --namespace default svc/psql-test-postgresql 5432:5432

Il sistema inizia a gestire la connessione alla porta.

3. Ridurre a icona la finestra di port forwarding e tornare a quella precedente. Digita il comando per connetterti a psql, un client PostgreSQL:

PGPASSWORD="$POSTGRES_PASSWORD" psql --host 127.0.0.1 -U postgres -d postgres -p 5432

Il psql viene visualizzato il prompt dei comandi e PostgreSQL è pronto a ricevere il tuo input.

Distribuisci PostgreSQL creando la configurazione da zero

La configurazione manuale di Postgres su Kubernetes ti consente di ottimizzare la configurazione della distribuzione.

Fase 1:crea e applica ConfigMap

La risorsa ConfigMap contiene i dati utilizzati durante il processo di distribuzione.

1. Crea un file YAML ConfigMap in un editor di testo.

nano postgres-configmap.yaml

2. La parte più importante del file è la sezione dei dati, dove fornisci un nome per il database , il nome utente e la password per accedere all'istanza PostgreSQL.

L'esempio utilizza i seguenti parametri nel file ConfigMap.

apiVersion: v1
kind: ConfigMap
metadata:
  name: postgres-config
  labels:
    app: postgres
data:
  POSTGRES_DB: postgresdb
  POSTGRES_USER: admin
  POSTGRES_PASSWORD: test123

3. Salvare il file ed uscire. Quindi applica la risorsa con kubectl :

kubectl apply -f postgres-configmap.yaml

Il sistema conferma la corretta creazione del file di configurazione.

Fase 2:crea e applica il volume di archiviazione persistente e la richiesta di volume persistente

1. Crea un file YAML per la configurazione dell'archiviazione.

nano postgres-storage.yaml

2. Il metodo di distribuzione del grafico Helm utilizzava due file separati per il volume persistente e la richiesta di volume persistente, ma puoi anche inserire entrambe le configurazioni in un unico file, come nell'esempio seguente.

kind: PersistentVolume
apiVersion: v1
metadata:
  name: postgres-pv-volume
  labels:
    type: local
    app: postgres
spec:
  storageClassName: manual
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  hostPath:
    path: "/mnt/data"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: postgres-pv-claim
  labels:
    app: postgres
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi

3. Salvare il file ed uscire. Applica le risorse con kubectl :

kubectl apply -f postgres-storage.yaml

Il sistema conferma la riuscita creazione sia del fotovoltaico che del PVC.

4. Verificare che la PVC sia collegata al PV con il seguente comando:

kubectl get pvc

Lo stato della PVC è Bound e la PVC è pronta per essere utilizzata nella distribuzione di PostgreSQL.

Passaggio 3:crea e applica la distribuzione PostgreSQL

1. Crea un file YAML di distribuzione.

nano postgres-deployment.yaml

2. Il file di distribuzione contiene la configurazione della distribuzione di PostgreSQL e fornisce le specifiche per i contenitori ei volumi:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: postgres
spec:
  replicas: 1
  selector:
    matchLabels:
      app: postgres
  template:
    metadata:
      labels:
        app: postgres
    spec:
      containers:
        - name: postgres
          image: postgres:10.1
          imagePullPolicy: "IfNotPresent"
          ports:
            - containerPort: 5432
          envFrom:
            - configMapRef:
                name: postgres-config
          volumeMounts:
            - mountPath: /var/lib/postgresql/data
              name: postgredb
      volumes:
        - name: postgredb
          persistentVolumeClaim:
            claimName: postgres-pv-claim

3. Salvare il file ed uscire. Applica la distribuzione con kubectl :

kubectl apply -f postgres-deployment.yaml

Il sistema conferma la corretta creazione della distribuzione.

Fase 4:crea e applica il servizio PostgreSQL

1. Infine, crea il file YAML per configurare il servizio PostgreSQL.

nano postgres-service.yaml

2. Specificare il tipo di servizio e le porte. L'esempio utilizza la configurazione seguente:

apiVersion: v1
kind: Service
metadata:
  name: postgres
  labels:
    app: postgres
spec:
  type: NodePort
  ports:
   - port: 5432
  selector:
   app: postgres

3. Salvare il file ed uscire. Applica la configurazione con kubectl :

kubectl apply -f postgres-service.yaml

Il sistema conferma la corretta creazione del servizio.

4. Utilizzare il comando seguente per elencare tutte le risorse sul sistema.

kubectl get all

Il pod e la distribuzione mostrano 1/1 stato pronto. Il numero desiderato di set di repliche riflette ciò che è configurato nel file YAML di distribuzione.

Fase 5:connettiti a PostgreSQL

1. Quando tutte le risorse sono pronte, usa kubectl exec per accedere all'istanza PostgreSQL.

kubectl exec -it [pod-name] --  psql -h localhost -U admin --password -p [port] postgresdb

2. Il sistema richiede la password. Digita la password definita nel passaggio 1 e premi Invio . Il psql viene visualizzato il prompt dei comandi.

Il database è ora pronto per ricevere l'input dell'utente.


Cent OS
  1. Come distribuire PostgreSQL su Docker Container

  2. Come distribuire Elasticsearch su Kubernetes

  3. Come installare PostgreSQL su CentOS 7

  4. Come distribuire il tuo primo pod su un cluster Kubernetes

  5. Come distribuire PostgreSQL come contenitore Docker

Che cos'è Ingress Controller e come distribuire Nginx Ingress Controller in Kubernetes Cluster su AWS utilizzando Helm

Come distribuire applicazioni su Kubernetes usando Helm

Come distribuire il cluster Kubernetes su AWS con Amazon EKS

Come distribuire Kubernetes a nodo singolo con Microk8s su Ubuntu 20.04

Come installare PostgreSQL su CentOS 6

Come distribuire Docker Compose Stack su Kubernetes con Kompose