1. 程式人生 > 其它 >基礎設施即程式碼(IAC),Zalando Postgres Operator 簡介

基礎設施即程式碼(IAC),Zalando Postgres Operator 簡介

Postgres Operator 在由 Patroni 提供支援的 Kubernetes (K8s) 上提供易於執行的高可用性 PostgreSQL 叢集。它僅通過 Postgres 清單 (CRD) 進行配置,以輕鬆整合到自動化 CI/CD 管道中,而無需直接訪問 Kubernetes API,從而促進基礎設施即程式碼(infrastructure as code)而不是手動操作。

Operator 功能

  • Postgres 叢集變化的滾動更新,包括快速的小版本更新
  • 無需重新啟動 pod 即可調整實時卷大小(AWS EBSPVC
  • 使用 PGBouncer 進行資料庫連線池
  • 支援 PG13 的快速升級。支援所有叢集全域性升級
  • 恢復和克隆 Postgres 叢集(包括主要版本升級)
  • 此外,可以配置到 S3 儲存桶的邏輯備份
  • 來自 S3 WAL 存檔的備用叢集
  • 可針對非雲環境進行配置
  • K8s 上的基本憑證和使用者管理,簡化應用程式部署
  • 支援自定義 TLS 證書
  • 建立和編輯 Postgres 叢集清單的 UI
  • Amazon AWSGoogle CloudOpenShiftKind 本地執行良好
  • 支援 AWS EBS gp2gp3 遷移,支援 iops
    和吞吐量配置

PostgreSQL 功能

Postgres OperatorZalando 開發並已在生產中使用了三年多。

使用 Spilo 12 或更舊的映象

如果您已經在舊版本中使用帶有 Spilo 12 Docker 映象的 Postgres operator,則需要注意備份路徑的更改。我們將主版本引入備份路徑,以平滑現在支援的主版本升級

新的 operator 配置可以設定相容性標誌 enable_spilo_wal_path_compat 以使 Spilo 在當前路徑中查詢 wal 段,但也可以在舊格式路徑中查詢。 這是以潛在的效能成本為代價的,應該在幾天後禁用。

最新的 Spilo 映象是:registry.opensource.zalan.do/acid/spilo-14:2.1-p4

最舊的 Spilo 映象是:registry.opensource.zalan.do/acid/spilo-12:1.6-p5

入門

為了快速獲得第一印象,請按照入門教程的說明進行操作。

支援的 Postgres 和應用程式設定

概念

Postgres operator 在 Kubernetes (K8s) 上管理 PostgreSQL 叢集:

  1. operator 監視 PostgreSQL 叢集清單的新增、更新和刪除,並相應地更改正在執行的叢集。 例如,當用戶提交新清單時,operator 會獲取該清單並生成一個新的 Postgres 叢集以及所有必要的實體,例如 K8s StatefulSetsPostgres 角色。 有關清單可能包含的設定,請參閱此 Postgres 叢集清單
  2. operator 還監視其自身配置的更新,並在必要時更改正在執行的 Postgres 叢集。例如,如果 pod 中的 Docker 映象發生變化,則 operator 執行滾動更新,這意味著它會與新的 Docker 映象一一重新生成每個託管 StatefulSetpod
  3. 最後,operator 定期將每個 Postgres 叢集的實際狀態與叢集清單中定義的所需狀態同步。
  4. operator 的目標是解放雙手,因為配置只能通過清單進行。 這可以輕鬆整合到自動化部署管道中,而無需直接訪問 K8s

作用域

Postgres Operatorscope 是提供、修改配置和清理使用 PatroniPostgres 叢集,基本上是為了在 K8s 上輕鬆方便地執行基於 Patroni 的叢集。配置和修改包括一側的 K8s 資源,但也包括叢集啟動並執行後的資料庫和角色配置。我們儘量把工作留給 K8sPatroni,尤其是叢集引導和高可用性。不過,operator 需要參與一些總體編排,比如滾動更新以改善使用者體驗。

在當前狀態下,監控或調整 Postgres 不在 operator 的作用域內。但是,通過全域性可配置的 sidecar,我們提供了足夠的靈活性來補充其他工具,如 ZMONPrometheus 或更多 Postgres 特定選項。

所涉實體概述

這是一張圖,它總結了 operator 在提交新的 Postgres cluster CRD 時將建立的內容:

如果沒有對單個叢集 pod 內部的概述,這張圖是不完整的,所以讓我們放大一下:

這兩張圖應該可以幫助您瞭解 operator 提供的功能型別的基礎知識。

狀態

該專案目前正在積極開發中。然而,Zalando 已經在內部使用它,以便在 K8s 上執行大量 Postgres 叢集,用於 staging 環境和越來越多的 production 叢集。在這種環境中,operator 被部署到多個 K8s 叢集中,使用者通過我們的 CI/CD 基礎設施部署清單或依靠精簡的使用者介面來建立清單。

請將發現的任何問題報告給 https://github.com/zalando/postgres-operator/issues

相關視訊

相關文章

更多