برنامه نویسی

نحوه تنظیم AWS EFS استاتیک استاتیک در چندین مکان kubernetes

Bitnami PostgreSQL یک تصویر کانتینر کاملاً مورد استفاده است و پیش فرض آن با خیال راحت به عنوان یک کاربر غیر ریشه اجرا می شود. اما ذخیره مداوم – به ویژه ذخیره سازی مشترک بین محیط هایی مانند Dev و Test – یک مشکل را ایجاد می کند. در اینجا در این پست وبلاگ ، من شما را از طریق نحوه استفاده از AWS EFS Static Provitive برای به اشتراک گذاشتن ذخیره سازی بین دو فضای نام با Bitnami PostgreSQL که در Kubernetes اجرا می شود ، طی می کنم.

چرا تأمین استاتیک؟

در حالی که تأمین پویا آسان است ، تأمین استاتیک کنترل کامل را ارائه می دهد. این امکان را به شما می دهد تا یک پایدار (PV) را با دست تنظیم کنید که با یک سیستم فایل AWS EFS یا نقطه دسترسی مطابقت دارد – IDEAL برای محیط هایی که محیط های مختلفی وجود دارد (به عنوان مثال ، dev و آزمایش). از آنجا که ما از تأمین استاتیک استفاده می کنیم ، دیگر نیازی به تعریف یک storageClass برای EFS نیست.

  • کنترل کامل بر تنظیمات PersistentVolume (PV).
  • راهی برای استفاده مجدد از همان حجم EFS در فضای نام های مختلف.
  • اشکال زدایی ساده تر برای مجوز یا مسائل دسترسی.
  • نیازی به تعریف یک storageclass نیست

آنچه در حال ساخت هستیم

یک راه اندازی postgresql که در دو فضای نام جداگانه اجرا می شود: dev and test

  • هر دو محیط با همان حجم EFS سوار می شوند
  • داده های postgreSQL به اشتراک گذاشته می شود

شرح تصویر

پیش نیازهای

قبل از شروع:

  • خوشه در حال اجرا Kubernetes (K3S ، EKS و غیره)
  • یک سیستم فایل AWS EFS قبلاً ایجاد شده است

ساختار پروژه

repo شما باید به این شکل باشد:
اعزام پرونده ها/
deployment-dev/
│ └└ pv-dev.yml ، pvc-dev.yml ، postgres.yml
test استقرار/ آزمون/
pv pv-test.yml ، pvc-test.yml ، postgres*.yml

مرحله 1: ایجاد نقطه دسترسی EFS

برای جلوگیری از مشکلات مجوز هنگام نصب EFS در فضای نام ، یک نقطه دسترسی از کنسول AWS با:

  • شناسه کاربر: 1001
  • شناسه گروه: 1001
  • مجوزها: 0775

شرح تصویر

درایور EFS CSI را در خوشه خود نصب کنید:

kubectl apply -k "github.com/kubernetes-sigs/aws-efs-csi-driver/deploy/kubernetes/overlays/stable/?ref=release-1.7"
حالت تمام صفحه را وارد کنید

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

همچنین می توانید از HELM برای نصب درایور EFS CSI استفاده کنید.

مرحله 2: PV و PVC را تعریف کنید

بخش VolumeHandle PV خود را با شناسه سیستم فایل FS و شناسه نقطه دسترسی تنظیم کنید:

volumeHandle: fs-::fsap-
حالت تمام صفحه را وارد کنید

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

نام StorageClassName را خالی بگذارید.

pv-dev.yml:

شرح تصویر
برای PVC همچنین StorageClassName را خالی بگذارید.

pvc-dev.yml:

شرح تصویر

PV و PVC را به عنوان یکسان برای فضای نام آزمایش ایجاد کنید. PV Namespace Test همچنین به همان نقطه دسترسی در EFS اشاره خواهد کرد.

مرحله 3: استقرار PostgreSQL را پیکربندی کنید

اطمینان حاصل کنید که استقرار از FSGroup: 1001 در SecurityContext خود برای مطابقت با مجوزهای نقطه دسترسی EFS استفاده می کند:
SecurityContext:
fsgroup: 1001

مرحله 4: نام های نامگذاری را مستقر کنید

استقرار به DEV:

kubectl create namespace dev
kubectl apply -f deployment-files/deployment-dev/ -n dev
حالت تمام صفحه را وارد کنید

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

برای تأیید اینکه PostgreSQL PV و PVC محدود هستند ، سیاهههای مربوط را بررسی کنید و Postgres Pod در حال اجرا است.

استقرار برای تست:

kubectl create namespace test
kubectl apply -f deployment-files/deployment-test/ -n test
حالت تمام صفحه را وارد کنید

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

برای تأیید اینکه PostgreSQL PV و PVC محدود هستند ، سیاهههای مربوط را بررسی کنید و Postgres Pod در حال اجرا است.
شرح تصویر

نتیجه

شما اکنون یک حجم EFS مشترک دارید که توسط غلافهای PostgreSQL که در مکان های مختلف در حال اجرا هستند ، قابل دسترسی است.

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

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

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

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