تخطَّ إلى المحتوى

Project 3: Frontend + Backend + PostgreSQL PVC

بناء تطبيق مكون من frontend و backend و PostgreSQL، مع PVC لبيانات PostgreSQL وخدمات داخلية واضحة.

flowchart LR
Browser --> FE[frontend Service]
FE --> API[backend Service]
API --> DB[(PostgreSQL PVC)]
  • Namespace باسم project-fullstack.
  • PostgreSQL Deployment أو StatefulSet مع PVC.
  • Backend Deployment يقرأ DATABASE_URL من Secret.
  • Frontend Deployment يتصل بالـ backend Service.
  • Services داخلية لكل جزء.

postgres.yaml:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-data
namespace: project-fullstack
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 1Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres
namespace: project-fullstack
spec:
replicas: 1
selector:
matchLabels:
app: postgres
template:
metadata:
labels:
app: postgres
spec:
containers:
- name: postgres
image: postgres:16
env:
- name: POSTGRES_PASSWORD
value: "demo-password"
ports:
- name: postgres
containerPort: 5432
volumeMounts:
- name: data
mountPath: /var/lib/postgresql/data
resources:
requests:
cpu: "250m"
memory: "512Mi"
limits:
cpu: "1"
memory: "1Gi"
volumes:
- name: data
persistentVolumeClaim:
claimName: postgres-data
---
apiVersion: v1
kind: Service
metadata:
name: postgres
namespace: project-fullstack
spec:
selector:
app: postgres
ports:
- name: postgres
port: 5432
targetPort: postgres

Lab: تشغيل PostgreSQL مع PVC

المستوى: مبتدئ الوقت: 45 دقيقة الأدوات: kubectl

الهدف: تشغيل قاعدة بيانات والتأكد من أن PVC Bound.

Terminal window
kubectl create namespace project-fullstack
kubectl apply -f postgres.yaml
kubectl -n project-fullstack get pvc
kubectl -n project-fullstack rollout status deployment/postgres
kubectl -n project-fullstack exec deploy/postgres -- psql -U postgres -c "select version();"
postgres-data Bound
PostgreSQL 16
Terminal window
kubectl delete namespace project-fullstack
  • PVC بحالة Bound.
  • database لا تفقد البيانات عند إعادة إنشاء Pod.
  • backend لا يتصل بالـ database عبر Pod IP.
  • كل جزء له Service واضح.