خودکارسازی خوشه های 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
و از یک نما به راحتی قابل مدیریت است.
نمایش گرافیکی:
منابع:
اعتبار تصویر:
ساندر موتوکوماران