1. Deployment YAML
Deployment ka kaam hota hai ki pods create kare aur unka management kare (replica, rolling updates, etc.).
Example:
apiVersion: apps/v1 # Resource ka version
kind: Deployment # Resource ka type
metadata: # Metadata section
name: myapp-deployment # Deployment ka naam
labels: # Labels help karte hain resources ko group karne me
app: myapp
spec: # Specification section
replicas: 3 # Kitne pods chalane hain
selector: # Define karte hain ki kaunsa pod is deployment ka part hai
matchLabels:
app: myapp
template: # Pods ka template define hota hai
metadata:
labels: # Har pod ka label
app: myapp
spec:
containers: # Container ka definition
- name: myapp # Container ka naam
image: myapp:v1 # Kaunsa Docker image use hoga
ports:
- containerPort: 3000 # App ka port
Key Points:
- replicas: Kitne pods deploy karne hain.
- template: Pods ka template define karta hai.
- selector: Ensure karta hai ki ye deployment kaunsa pod manage karega.
2. Service YAML
Service ka kaam hota hai ki pods ke upar network traffic ko manage kare.
Example:
apiVersion: v1 # Service ka version
kind: Service # Resource ka type
metadata:
name: myapp-service # Service ka naam
spec:
selector: # Kaunse pods is service ka part hain
app: myapp
ports: # Service ke ports define karte hain
- protocol: TCP
port: 80 # Service ka port (external)
targetPort: 3000 # Pod ke andar ka port
type: LoadBalancer # Service ka type
Key Points:
- selector: Ye service kaunse pods ko target karegi.
- type:
ClusterIP
(default): Sirf cluster ke andar access milega.NodePort
: External traffic ke liye specific port open karega.LoadBalancer
: Public-facing service ke liye.
3. ConfigMap YAML
ConfigMap ka kaam hota hai ki non-sensitive configuration ko store kare (e.g., environment variables).
Example:
apiVersion: v1
kind: ConfigMap
metadata:
name: myapp-config # ConfigMap ka naam
data: # Configurations store hoti hain yaha
DATABASE_URL: mysql://db-user@db-host/mydb
APP_MODE: production
Use in Deployment:
containers:
- name: myapp
image: myapp:v1
env:
- name: DATABASE_URL
valueFrom:
configMapKeyRef:
name: myapp-config
key: DATABASE_URL
Key Points:
- ConfigMap ko
data
section me store karte hain. - Deployment ke
env
section me isse use karte hain.
4. Secret YAML
Secret ka kaam hota hai ki sensitive data (e.g., passwords, tokens) ko securely store kare.
Example:
apiVersion: v1
kind: Secret
metadata:
name: myapp-secret # Secret ka naam
type: Opaque # Default type
data: # Base64 encoded data
DB_PASSWORD: bXlwYXNzd29yZA== # "mypassword" ka Base64
Use in Deployment:
containers:
- name: myapp
image: myapp:v1
env:
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: myapp-secret
key: DB_PASSWORD
Key Points:
Secret ko Base64 me encode karte hain.
Encode karne ka command:echo -n "mypassword" | base64
5. Ingress YAML
Ingress ka kaam hota hai ki external HTTP/HTTPS traffic ko route karna.
Example:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: myapp-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: myapp.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: myapp-service
port:
number: 80
Key Points:
- host: Define karta hai ki kaunsa domain is ingress ko target karega.
- backend: Service ka naam aur port jaha traffic route hoga.
- Ingress ke liye external ingress controller chahiye hota hai (e.g., NGINX Ingress Controller).
6. Persistent Volume (PV) & Persistent Volume Claim (PVC) YAML
PV aur PVC ka kaam hota hai ki storage allocate karna.
Persistent Volume (PV) Example:
apiVersion: v1
kind: PersistentVolume
metadata:
name: myapp-pv
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/myapp
Persistent Volume Claim (PVC) Example:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: myapp-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
Use in Deployment:
containers:
- name: myapp
image: myapp:v1
volumeMounts:
- mountPath: /app/data
name: myapp-storage
volumes:
- name: myapp-storage
persistentVolumeClaim:
claimName: myapp-pvc
Key Points:
- PV defines the actual storage.
- PVC requests storage from PV.
7. Horizontal Pod Autoscaler (HPA) YAML
HPA ka kaam hota hai ki pods ka auto-scaling manage karna.
Example:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: myapp-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: myapp-deployment
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
Key Points:
scaleTargetRef
: Kaunsa deployment scale karna hai.minReplicas
aurmaxReplicas
: Minimum aur maximum pods.- Metrics ke basis pe scaling hoti hai (e.g., CPU usage).
Summary
YAML file types and their purpose:
- Deployment YAML: Pods create aur manage karne ke liye.
- Service YAML: Pods ke upar network traffic route karne ke liye.
- ConfigMap YAML: Non-sensitive configuration store karne ke liye.
- Secret YAML: Sensitive data securely store karne ke liye.
- Ingress YAML: External HTTP/HTTPS traffic route karne ke liye.
- PV & PVC YAML: Persistent storage allocate karne ke liye.
- HPA YAML: Pods ka auto-scaling manage karne ke liye.
Aur bhai, agar koi YAML samajhne me dikkat ho rahi hai, to bata!