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 करावे लागतील.