Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Semplifica le implementazioni di PostgreSQL su Amazon EKS utilizzando PGO
Creato da Shalaka Dengale (AWS)
Riepilogo
Questo modello integra Postgres Operator di Crunchy Data (PGO) con Amazon Elastic Kubernetes Service (Amazon EKS) per semplificare le implementazioni di PostgreSQL in ambienti nativi del cloud. PGO offre automazione e scalabilità per la gestione dei database PostgreSQL in Kubernetes. Combinando PGO con Amazon EKS, si forma una solida piattaforma per la distribuzione, la gestione e la scalabilità efficiente dei database PostgreSQL.
Questa integrazione offre i seguenti vantaggi chiave:
Distribuzione automatizzata: semplifica l'implementazione e la gestione dei cluster PostgreSQL.
Definizioni di risorse personalizzate (CRDs): utilizza le primitive Kubernetes per la gestione di PostgreSQL.
Alta disponibilità: supporta il failover automatico e la replica sincrona.
Backup e ripristini automatizzati: semplifica i processi di backup e ripristino.
Scalabilità orizzontale: consente il ridimensionamento dinamico dei cluster PostgreSQL.
Aggiornamenti di versione: facilita gli aggiornamenti continui con tempi di inattività minimi.
Sicurezza: applica la crittografia, i controlli di accesso e i meccanismi di autenticazione.
Prerequisiti e limitazioni
Prerequisiti
Un attivo Account AWS.
AWS Command Line Interface (AWS CLI) versione 2, installata e configurata su Linux, macOS o Windows.
AWS CLI Config, per connettere AWS le risorse dalla riga di comando.
eksctl
, installato e configurato su Linux, macOS o Windows. kubectl
, installato e configurato per accedere alle risorse sul tuo cluster Amazon EKS. Per ulteriori informazioni, consulta Configurare kubectl ed eksctl nella documentazione di Amazon EKS.Il terminale del tuo computer è configurato per accedere al cluster Amazon EKS. Per ulteriori informazioni, consulta Configurare il computer per comunicare con il cluster nella documentazione di Amazon EKS.
Versioni del prodotto
Versioni di Kubernetes 1.21—1.24 o successive (consulta la documentazione di PGO).
PostgreSQL versione 10 o successiva. Questo modello utilizza PostgreSQL versione 16.
Limitazioni
Alcuni Servizi AWS non sono disponibili in tutti. Regioni AWS Per la disponibilità per regione, vedi Servizi AWS per regione
. Per endpoint specifici, consulta la pagina Endpoint e quote del servizio e scegli il link relativo al servizio.
Architettura
Stack tecnologico Target
Amazon EKS
Amazon Virtual Private Cloud (Amazon VPC) (Amazon VPC)
Amazon Elastic Compute Cloud (Amazon EC2)
Architettura Target

Questo modello crea un'architettura che contiene un cluster Amazon EKS con tre nodi. Ogni nodo viene eseguito su un set di EC2 istanze nel backend. Questa configurazione di PostgreSQL segue un'architettura di replica primaria, particolarmente efficace per i casi d'uso che richiedono una lettura intensiva. L'architettura include i seguenti componenti:
Il contenitore del database primario (pg-primary) ospita l'istanza PostgreSQL principale in cui sono dirette tutte le operazioni di scrittura.
I contenitori di replica secondari (pg-replica) ospitano le istanze PostgreSQL che replicano i dati dal database primario e gestiscono le operazioni di lettura.
PgBouncerè un pool di connessioni leggero per database PostgreSQL incluso in PGO. Si colloca tra il client e il server PostgreSQL e funge da intermediario per le connessioni al database.
PGO automatizza l'implementazione e la gestione dei cluster PostgreSQL in questo ambiente Kubernetes.
Patroni è uno strumento open source che gestisce e automatizza le configurazioni ad alta disponibilità per PostgreSQL. È incluso in PGO. Quando usi Patroni con PGO in Kubernetes, svolge un ruolo cruciale nel garantire la resilienza e la tolleranza ai guasti di un cluster PostgreSQL. Per ulteriori informazioni, consulta la documentazione di Patroni.
Il flusso di lavoro include i seguenti passaggi:
Implementa l'operatore PGO. Implementa l'operatore PGO sul tuo cluster Kubernetes eseguito su Amazon EKS. Questo può essere fatto utilizzando i manifesti di Kubernetes o i grafici Helm. Questo modello utilizza i manifesti di Kubernetes.
Definisci le istanze PostgreSQL. Quando l'operatore è in esecuzione, si creano risorse personalizzate (CRs) per specificare lo stato desiderato delle istanze PostgreSQL. Ciò include configurazioni come archiviazione, replica e impostazioni di alta disponibilità.
Gestione degli operatori. Interagisci con l'operatore tramite oggetti API Kubernetes, ad esempio CRs per creare, aggiornare o eliminare istanze PostgreSQL.
Monitoraggio e manutenzione. Puoi monitorare lo stato e le prestazioni delle istanze PostgreSQL in esecuzione su Amazon EKS. Gli operatori spesso forniscono metriche e registrazioni per scopi di monitoraggio. Se necessario, è possibile eseguire attività di manutenzione di routine come aggiornamenti e patch. Per ulteriori informazioni, consulta Monitoraggio delle prestazioni del cluster e visualizzazione dei log nella documentazione di Amazon EKS.
Scalabilità e backup: è possibile utilizzare le funzionalità fornite dall'operatore per ridimensionare le istanze PostgreSQL e gestire i backup.
Questo modello non copre le operazioni di monitoraggio, manutenzione e backup.
Automazione e scalabilità
È possibile utilizzare AWS CloudFormation per automatizzare la creazione dell'infrastruttura. Per ulteriori informazioni, consulta Creare risorse Amazon EKS AWS CloudFormation nella documentazione di Amazon EKS.
Puoi utilizzare GitVersion o Jenkins build Numbers per automatizzare la distribuzione delle istanze di database.
Strumenti
Servizi AWS
Amazon Elastic Kubernetes Service (Amazon EKS) ti aiuta a eseguire AWS Kubernetes senza dover installare o gestire il tuo piano di controllo o i tuoi nodi Kubernetes.
AWS Command Line Interface (AWS CLI) è uno strumento open source che ti aiuta a interagire tramite comandi nella shell della riga di comando. Servizi AWS
Altri strumenti
Best practice
Segui queste best practice per garantire un'implementazione fluida ed efficiente:
Proteggi il tuo cluster EKS. Implementa le migliori pratiche di sicurezza per il tuo cluster EKS, come l'utilizzo di ruoli AWS Identity and Access Management (IAM) per account di servizio (IRSA), policy di rete e gruppi di sicurezza VPC. Limita l'accesso al server API del cluster EKS e crittografa le comunicazioni tra i nodi e il server API utilizzando TLS.
Garantisci la compatibilità delle versioni tra PGO e Kubernetes in esecuzione su Amazon EKS. Alcune funzionalità di PGO potrebbero richiedere versioni specifiche di Kubernetes o introdurre limitazioni di compatibilità. Per ulteriori informazioni, consulta Componenti e compatibilità
nella documentazione di PGO. Pianifica l'allocazione delle risorse per la tua implementazione PGO, tra cui CPU, memoria e archiviazione. Considera i requisiti di risorse sia di PGO che delle istanze PostgreSQL che gestisce. Monitora l'utilizzo delle risorse e ridimensionale in base alle esigenze.
Progettato per un'elevata disponibilità. Progetta la tua implementazione PGO per un'elevata disponibilità per ridurre al minimo i tempi di inattività e garantire l'affidabilità. Implementa più repliche di PGO su più zone di disponibilità per la tolleranza agli errori.
Implementa procedure di backup e ripristino per i database PostgreSQL gestiti da PGO. Utilizza le funzionalità fornite da PGO o soluzioni di backup di terze parti compatibili con Kubernetes e Amazon EKS.
Configura il monitoraggio e la registrazione per la tua implementazione PGO per tenere traccia delle prestazioni, dello stato e degli eventi. Utilizza strumenti come Prometheus per il monitoraggio delle metriche e Grafana per la visualizzazione. Configura la registrazione per acquisire i registri PGO per la risoluzione dei problemi e il controllo.
Configura correttamente la rete per consentire le comunicazioni tra PGO, istanze PostgreSQL e altri servizi nel tuo cluster Kubernetes. Utilizza le funzionalità di rete Amazon VPC e i plug-in di rete Kubernetes come Calico o Amazon VPC
CNI per l'applicazione delle politiche di rete e l'isolamento del traffico. Scegli le opzioni di storage appropriate per i tuoi database PostgreSQL, considerando fattori quali prestazioni, durabilità e scalabilità. Usa volumi Amazon Elastic Block Store (Amazon EBS) AWS o servizi di storage gestito per lo storage persistente. Per ulteriori informazioni, consulta Archivia volumi Kubernetes con Amazon EBS nella documentazione di Amazon EKS.
Utilizza strumenti Infrastructure as Code (IaC) AWS CloudFormation per automatizzare la distribuzione e la configurazione di PGO su Amazon EKS. Definisci i componenti dell'infrastruttura, tra cui il cluster EKS, il networking e le risorse PGO, come codice per garantire coerenza, ripetibilità e controllo delle versioni.
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea un ruolo IAM. |
| Amministratore AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea un cluster Amazon EKS. | Se hai già distribuito un cluster, salta questo passaggio. Altrimenti, distribuisci un cluster Amazon EKS nel tuo ambiente attuale Account AWS utilizzando NotaQuesto modello utilizza Amazon EC2 come gruppo di nodi per Amazon EKS. Se desideri utilizzarlo AWS Fargate, consulta la
| Amministratore AWS, amministratore Terraform o eksctl, amministratore Kubernetes |
Convalida lo stato del cluster. | Esegui il comando seguente per visualizzare lo stato corrente dei nodi nel cluster:
Se riscontri errori, consulta la sezione sulla risoluzione dei problemi della documentazione di Amazon EKS. | Amministratore AWS, amministratore Terraform o eksctl, amministratore Kubernetes |
Attività | Descrizione | Competenze richieste |
---|---|---|
Abilita il provider IAM OIDC. | Come prerequisito per il driver Amazon EBS Container Storage Interface (CSI), devi disporre di un provider IAM OpenID Connect (OIDC) esistente per il tuo cluster. Abilita il provider IAM OIDC utilizzando il seguente comando:
Per ulteriori informazioni su questo passaggio, consulta la documentazione di Amazon EKS. | Amministratore AWS |
Crea un ruolo IAM per il driver CSI di Amazon EBS. | Usa il seguente
Se utilizzi unità Amazon EBS crittografate, devi configurare ulteriormente la policy. Per istruzioni, consulta la documentazione del driver Amazon EBS SCI | Amministratore AWS |
Aggiungi il driver Amazon EBS CSI. | Usa il seguente
| Amministratore AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Clona il repository PGO. | Clona il repository per PGO GitHub :
| AWS DevOps |
Fornisci i dettagli del ruolo per la creazione dell'account di servizio. | Per concedere al cluster Amazon EKS l'accesso alle AWS risorse richieste, specifica l'Amazon Resource Name (ARN) del ruolo OIDC che hai creato in precedenza nel file.
| Amministratore AWS, amministratore Kubernetes |
Crea il namespace e i prerequisiti PGO. |
| Amministratore Kunernetes |
Verifica la creazione dei pod. | Verifica che lo spazio dei nomi e la configurazione predefinita siano stati creati:
| Amministratore AWS, amministratore Kubernetes |
Verifica. PVCs | Utilizzate il seguente comando per verificare le dichiarazioni di volume persistenti (PVCs):
| Amministratore AWS, amministratore Kubernetes |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea un operatore. | Modifica il contenuto del file che si trova in
Questi aggiornamenti eseguono le seguenti operazioni:
| Amministratore AWS, DBA, amministratore Kubernetes |
Implementa l'operatore. | Implementa l'operatore PGO per consentire la gestione e il funzionamento semplificati dei database PostgreSQL negli ambienti Kubernetes:
| Amministratore AWS, DBA, amministratore Kubernetes |
Verifica la distribuzione. |
Dall'output del comando, annota la replica principale ( | Amministratore AWS, DBA, amministratore Kubernetes |
Attività | Descrizione | Competenze richieste |
---|---|---|
Scrive i dati sulla replica principale. | Usa i seguenti comandi per connetterti alla replica primaria di PostgreSQL e scrivere dati nel database:
| Amministratore AWS, amministratore Kubernetes |
Verifica che la replica letta contenga gli stessi dati. | Connect alla replica di lettura PostgreSQL e verifica se la replica in streaming funziona correttamente:
La replica di lettura dovrebbe contenere la tabella creata nella replica primaria nel passaggio precedente. | Amministratore AWS, amministratore Kubernetes |
Risoluzione dei problemi
Problema | Soluzione |
---|---|
Il pod non si avvia. |
|
Le repliche sono notevolmente inferiori rispetto al database principale. |
|
Non hai visibilità sulle prestazioni e sullo stato del cluster PostgreSQL. |
|
La replica non funziona. |
|
Risorse correlate
Amazon Elastic Kubernetes Service (white paper sulla panoramica delle opzioni di distribuzione su AWS)
AWS CloudFormation(Panoramica delle opzioni di distribuzione nel white paper di AWS)
Inizia a usare Amazon EKS — eksctl (Amazon EKS User Guide)
Configura kubectl ed eksctl (Guida per l'utente di Amazon EKS)
Creare un ruolo per la federazione OpenID Connect (IAM User Guide)
Configurazione delle impostazioni per la AWS CLI(Guida per l'AWS CLIutente)
Crunch & Learn: Crunchy
Postgres per Kubernetes 5.0 (video)