برنامه نویسی

خودکارسازی خوشه های PostgreSQL: راهنمای استقرار با ArgoCD و CloudNativePG

Summarize this content to 400 words in Persian Lang

مورد استفاده:

قادر به استقرار و مدیریت خوشه های PostgreSQL با GitOps و ارائه یک سیستم قابل بازرسی و به راحتی قابل درک برای توسعه دهندگان برای مدیریت خوشه های Postgres خود از همان مخزن git.

توضیح مختصری از فناوری درگیر:

GitOps با ArgoCD:

GitOps یک رویکرد نرم‌افزاری و استقرار است که در آن تعریف و چرخه حیات برای کل زیرساخت و برنامه‌ها از طریق مخازن Git مدیریت می‌شود، این مخزن را به منبعی از حقیقت برای زیرساخت ما تبدیل می‌کند و همچنین به ما امکان می‌دهد از شیوه‌های CI/CD با زیرساخت خود استفاده کنیم. . ArgoCD یک ابزار تحویل مداوم GitOps برای Kubernetes است، ArgoCD به مخزن ما گوش می دهد و تغییرات را برای رسیدن به وضعیت دلخواه خود اعمال می کند.

اپراتور Kubernetes:

اپراتورها افزونه هایی برای Kubernetes هستند که تعاریف منابع سفارشی (CRD) را ایجاد می کنند که برای مدیریت برنامه ها و اجزای آن برنامه ها استفاده می شود، اپراتورها از اصل حلقه کنترل Kubernetes پیروی می کنند، جایی که یک کنترل کننده وضعیت فعلی منابع مرتبط خود را در مقابل وضعیت مطلوب بررسی می کند و برای ایجاد این تغییرات با سرور Kube-API ارتباط برقرار می کند. برای جزئیات بیشتر به: الگوی اپراتور و کنترلرها مراجعه کنید

CloudNativePG:

CloudNativePG یک اپراتور Kubernetes برای پوشش چرخه عمر خوشه های PostgreSQL است، ویژگی های زیادی را برای استقرار و مدیریت خوشه های پایگاه داده با در دسترس بودن بالا ارائه می دهد. CloudNativePG یک اپراتور با قابلیت “Autopilot” است که بالاترین سطح یک اپراتور است که اجازه می دهد:

نصب های اساسی
ارتقا بدون درز
چرخه زندگی کامل
بینش عمیق با معیارها
مقیاس افقی و عمودی + تنظیم خودکار پیکربندی اطلاعات بیشتر در مورد اپراتور CloudNativePG در OperatorHub

برای موارد استفاده ما، CloudNativePG کنترلر و CRD ها را برای مدیریت خوشه های PostgreSQL ما فراهم می کند.

نحوه عملکرد سیستم:

اپراتور CloudNativePG CRD های مورد نیاز برای خوشه های ما را در خوشه Kubernetes ما ایجاد می کند که اصلی ترین آنها است. Cluster این CRD همه چیز را برای خوشه ما تعریف می کند، نمونه ای از یک خوشه پایه به صورت زیر است:

apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: cluster-example
spec:
instances: 3

storage:
size: 1Gi

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

با این حال، اگر می‌خواهیم این را به روش GitOps اجرا کنیم، باید مانیفست‌های yaml را در دایرکتوری خود بسازیم که ArgoCD برای تغییرات نظارت خواهد کرد. نمونه ای از این خواهد بود pg-clusters/cluster1.yaml manifest، که به عنوان مثال به نظر می رسد:

pg-clusters/cluster1.yaml:

apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: generator-cluster1
namespace: default
spec:
description: “Generated Cluster 1”
imageName: ghcr.io/cloudnative-pg/postgresql:15.1
instances: 1
startDelay: 10
stopDelay: 10
primaryUpdateStrategy: unsupervised

bootstrap:
initdb:
database: postgres
owner: app
secret:
name: cluster-example-app-user

superuserSecret:
name: cluster-example-superuser

storage:
size: “1Gi”
monitoring:
enablePodMonitor: true

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون باید یک برنامه جدید در ArgoCD ایجاد کنیم تا این کار را انجام دهیم و مطمئن شویم که منابع را از دایرکتوری درست می‌سازد (در مثال ما این باید باشد pg-clusters دایرکتوری)، موارد زیر را ارائه خواهیم داد Application آشکار:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: pg-clusters
spec:
destination:
name: ”
namespace: default
server: ‘https://kubernetes.default.svc’
source:
path: pg-clusters
repoURL: ‘https://github.com/azaurus1/gitops-pgclusters’
targetRevision: HEAD
sources: [] project: default

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هنگامی که این برنامه در ArgoCD مستقر شد، یک همگام سازی شروع به تطبیق حالت های مورد نظر و فعلی می کند و شروع به استقرار Cluster ما همانطور که در مانیفست قبلی تعریف شده است، می کند.

مورد بالا نمونه ای از برنامه کاربردی pg-cluster مستقر در حالت همگام نشده است، ما می توانیم خوشه خود را با همگام سازی منبع خوشه بسازیم، نمونه ای از همگام سازی generator-cluster1 خوشه به شکل زیر خواهد بود:

همانطور که می بینیم، اکنون دید خوبی از تمام منابع مورد نیاز برای PostgreSQL خود داریم Cluster که در کلاستر ما ارائه شده اند و با مشخصات مانیفست ما مطابقت دارند، از جمله 1 Instance، 1Gi PersistentVolumeClaim. علاوه بر این، خوشه ها همه یکسان هستند Application و از یک نما به راحتی قابل مدیریت است.

نمایش گرافیکی:

منابع:

اعتبار تصویر:

ساندر موتوکوماران

مورد استفاده:

قادر به استقرار و مدیریت خوشه های PostgreSQL با GitOps و ارائه یک سیستم قابل بازرسی و به راحتی قابل درک برای توسعه دهندگان برای مدیریت خوشه های Postgres خود از همان مخزن git.

توضیح مختصری از فناوری درگیر:

GitOps با ArgoCD:

GitOps یک رویکرد نرم‌افزاری و استقرار است که در آن تعریف و چرخه حیات برای کل زیرساخت و برنامه‌ها از طریق مخازن Git مدیریت می‌شود، این مخزن را به منبعی از حقیقت برای زیرساخت ما تبدیل می‌کند و همچنین به ما امکان می‌دهد از شیوه‌های CI/CD با زیرساخت خود استفاده کنیم. . ArgoCD یک ابزار تحویل مداوم GitOps برای Kubernetes است، ArgoCD به مخزن ما گوش می دهد و تغییرات را برای رسیدن به وضعیت دلخواه خود اعمال می کند.

اپراتور Kubernetes:

اپراتورها افزونه هایی برای Kubernetes هستند که تعاریف منابع سفارشی (CRD) را ایجاد می کنند که برای مدیریت برنامه ها و اجزای آن برنامه ها استفاده می شود، اپراتورها از اصل حلقه کنترل Kubernetes پیروی می کنند، جایی که یک کنترل کننده وضعیت فعلی منابع مرتبط خود را در مقابل وضعیت مطلوب بررسی می کند و برای ایجاد این تغییرات با سرور Kube-API ارتباط برقرار می کند. برای جزئیات بیشتر به: الگوی اپراتور و کنترلرها مراجعه کنید

CloudNativePG:

CloudNativePG یک اپراتور Kubernetes برای پوشش چرخه عمر خوشه های PostgreSQL است، ویژگی های زیادی را برای استقرار و مدیریت خوشه های پایگاه داده با در دسترس بودن بالا ارائه می دهد. CloudNativePG یک اپراتور با قابلیت “Autopilot” است که بالاترین سطح یک اپراتور است که اجازه می دهد:

  • نصب های اساسی
  • ارتقا بدون درز
  • چرخه زندگی کامل
  • بینش عمیق با معیارها
  • مقیاس افقی و عمودی + تنظیم خودکار پیکربندی اطلاعات بیشتر در مورد اپراتور CloudNativePG در OperatorHub

برای موارد استفاده ما، CloudNativePG کنترلر و CRD ها را برای مدیریت خوشه های PostgreSQL ما فراهم می کند.

نحوه عملکرد سیستم:

اپراتور CloudNativePG CRD های مورد نیاز برای خوشه های ما را در خوشه Kubernetes ما ایجاد می کند که اصلی ترین آنها است. Cluster این CRD همه چیز را برای خوشه ما تعریف می کند، نمونه ای از یک خوشه پایه به صورت زیر است:

apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
  name: cluster-example
spec:
  instances: 3

  storage:
    size: 1Gi
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

با این حال، اگر می‌خواهیم این را به روش GitOps اجرا کنیم، باید مانیفست‌های yaml را در دایرکتوری خود بسازیم که ArgoCD برای تغییرات نظارت خواهد کرد. نمونه ای از این خواهد بود pg-clusters/cluster1.yaml manifest، که به عنوان مثال به نظر می رسد:

pg-clusters/cluster1.yaml:

apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
  name: generator-cluster1
  namespace: default
spec:
  description: "Generated Cluster 1"
  imageName: ghcr.io/cloudnative-pg/postgresql:15.1
  instances: 1
  startDelay: 10
  stopDelay: 10
  primaryUpdateStrategy: unsupervised

  bootstrap:
    initdb:
      database: postgres
      owner: app
      secret:
        name: cluster-example-app-user

  superuserSecret:
    name: cluster-example-superuser

  storage:
    size: "1Gi"
  monitoring:
    enablePodMonitor: true
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون باید یک برنامه جدید در ArgoCD ایجاد کنیم تا این کار را انجام دهیم و مطمئن شویم که منابع را از دایرکتوری درست می‌سازد (در مثال ما این باید باشد pg-clusters دایرکتوری)، موارد زیر را ارائه خواهیم داد Application آشکار:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: pg-clusters
spec:
  destination:
    name: ''
    namespace: default
    server: 'https://kubernetes.default.svc'
  source:
    path: pg-clusters
    repoURL: 'https://github.com/azaurus1/gitops-pgclusters'
    targetRevision: HEAD
  sources: []
  project: default
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هنگامی که این برنامه در ArgoCD مستقر شد، یک همگام سازی شروع به تطبیق حالت های مورد نظر و فعلی می کند و شروع به استقرار Cluster ما همانطور که در مانیفست قبلی تعریف شده است، می کند.

توضیحات تصویر

مورد بالا نمونه ای از برنامه کاربردی pg-cluster مستقر در حالت همگام نشده است، ما می توانیم خوشه خود را با همگام سازی منبع خوشه بسازیم، نمونه ای از همگام سازی generator-cluster1 خوشه به شکل زیر خواهد بود:

توضیحات تصویر

همانطور که می بینیم، اکنون دید خوبی از تمام منابع مورد نیاز برای PostgreSQL خود داریم Cluster که در کلاستر ما ارائه شده اند و با مشخصات مانیفست ما مطابقت دارند، از جمله 1 Instance، 1Gi PersistentVolumeClaim. علاوه بر این، خوشه ها همه یکسان هستند Application و از یک نما به راحتی قابل مدیریت است.

نمایش گرافیکی:

توضیحات تصویر

منابع:

اعتبار تصویر:

ساندر موتوکوماران

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا