with kubernetes config files

This commit is contained in:
Mosiur
2026-05-03 07:59:17 +00:00
commit 3e5fb66bd6
45 changed files with 423 additions and 0 deletions

85
mongodb/development.yaml Normal file
View File

@@ -0,0 +1,85 @@
# kubernetes/mongodb/mongodb.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: mongo-pv
spec:
capacity:
storage: 2Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage
local:
path: /root/todoApp/kubernetes/mongodb/data
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- master-controller
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mongo
namespace: todo-app
spec:
serviceName: mongo-service # ✅ REQUIRED
replicas: 1
selector:
matchLabels:
app: mongo
volumeClaimTemplates:
- metadata:
name: mongo-pvc
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: local-storage
resources:
requests:
storage: 2Gi
template:
metadata:
labels:
app: mongo
tier: database # ← label for NetworkPolicy
spec:
tolerations:
- key: "node-role.kubernetes.io/control-plane"
operator: "Exists"
effect: "NoSchedule"
containers:
- name: mongo
image: mongo
ports:
- containerPort: 27017
volumeMounts:
- name: mongo-pvc
mountPath: /data/db
# Security — run as non-root
securityContext:
runAsNonRoot: true
runAsUser: 999
allowPrivilegeEscalation: false
---
apiVersion: v1
kind: Service
metadata:
name: mongo-service
namespace: todo-app
spec:
clusterIP: None
selector:
app: mongo
ports:
- port: 27017
targetPort: 27017
# ClusterIP — internal only, never exposed outside
type: ClusterIP