نحوه تنظیم 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 که در مکان های مختلف در حال اجرا هستند ، قابل دسترسی است.