TLS enabled secure connection
TLS-enabled MongoDB हे production-grade setup साठी अत्यावश्यक आहे कारण ते network-level encryption प्रदान करतं. म्हणजे MongoDB client ↔ server यांच्यातील traffic encrypted (SSL/TLS) असतो.
यामध्ये आपण काय पाहणार आहोत:
- Kubernetes मध्ये MongoDB चे TLS-enabled deployment
- Custom CA (Self-signed certificate) वापरून server-side TLS setup
- Secret स्वरूपात certs ठेवून MongoDB ला attach करणे
✅ 1. TLS साठी Self-Signed Certificates तयार करा
तुमच्या system मध्ये OpenSSL असल्यास, खालील कमांड वापर:
mkdir mongo-certs
cd mongo-certs
# CA key आणि cert
openssl req -new -x509 -days 365 -nodes -out ca.pem -keyout ca-key.pem -subj “/CN=MyMongoCA”
# MongoDB server cert + key
openssl req -newkey rsa:2048 -nodes -keyout mongo.key -out mongo.csr -subj “/CN=mongodb”
openssl x509 -req -in mongo.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out mongo.crt -days 365
# PEM फॉर्मेट मध्ये key + cert एकत्र करा
cat mongo.key mongo.crt > mongo.pem
✅ 2. Kubernetes Secret मध्ये certs टाका
kubectl create secret generic mongodb-tls-secret \
–from-file=mongo.pem=./mongo.pem \
–from-file=ca.pem=./ca.pem
✅ 3. MongoDB Deployment (TLS-enabled)
apiVersion: apps/v1
kind: Deployment
metadata:
name: mongodb
spec:
replicas: 1
selector:
matchLabels:
app: mongodb
template:
metadata:
labels:
app: mongodb
spec:
containers:
– name: mongodb
image: mongo:5.0
command:
– mongod
– “–bind_ip_all”
– “–tlsMode”
– “requireTLS”
– “–tlsCertificateKeyFile”
– “/tls/mongo.pem”
– “–tlsCAFile”
– “/tls/ca.pem”
– “–auth”
env:
– name: MONGO_INITDB_ROOT_USERNAME
value: mongoadmin
– name: MONGO_INITDB_ROOT_PASSWORD
value: mongopass
ports:
– containerPort: 27017
volumeMounts:
– name: tls-volume
mountPath: /tls
readOnly: true
volumes:
– name: tls-volume
secret:
secretName: mongodb-tls-secret
✅ 4. MongoDB Client कडून TLS साठी कनेक्ट होण्याचा command
mongo –host <NodeIP> –port <NodePort> \
–tls –tlsCAFile ./ca.pem \
–tlsCertificateKeyFile ./mongo.pem \
-u mongoadmin -p mongopass –authenticationDatabase admin
📌 टीप:
- हे setup “requireTLS” मोडमध्ये MongoDB चालवतं — म्हणजे non-TLS connections पूर्णपणे block होतात.
- याचं Helm chart स्वरूप हवं असल्यास, Bitnami चं MongoDB chart TLS support करतो.
- Clients (जसे Node.js, Python drivers) मध्येही TLS options explicitly enable करावे लागतील.
