Невозможно аутентифицировать Mongodb, развернутый в кубернетах - PullRequest
0 голосов
/ 26 мая 2020

Привет, я развернул mongodb V-4.2.6 на kubernetes, и ниже показан файл yaml.

# Service to expose MongoDB
apiVersion: v1
kind: Service
metadata:
  name: mongo
  namespace: namespace-name 
  labels:
    app: mongo
spec:
  ports:
  - name: mongo
    port: 27017
    targetPort: 27017
  clusterIP: None
  selector:
    app: mongo
    tier: db
  type: ClusterIP

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongo
  namespace: namespace-name
  labels:
    tier: "db"
    app: "mongo"   
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mongo
      tier: "db"
  template:
    metadata:
      labels:
        app: mongo
        tier: "db"
    spec:
      terminationGracePeriodSeconds: 10
      containers:
      - name: mongo
        image: mongo:4.2.6
        resources:
            limits:
              memory: "2Gi"
            requests:
              memory: "512Mi"
        env:
        - name: MONGO_INITDB_ROOT_USERNAME
          value: "admin"
        - name: MONGO_INITDB_ROOT_PASSWORD
          value: "password"
        - name: MONGO_INITDB_DATABASE
          value: admin
        command: 
          - mongod
          - --auth
        ports:
        - containerPort: 27017
        volumeMounts:
        - name: nfs1
          mountPath: /data/db
      volumes:
        - name: nfs1
          nfs:
            server: 0.0.0.0
            path: "/path/to/volumes"

Если я попытаюсь войти в систему с учетными данными (db.auth ("admin", " пароль ")), указанный в приведенном выше файле yaml. Я получаю сообщение об ошибке аутентификации в mongodb. Я обнаружил связанные проблемы в stackoverflow, но не смог найти для этого решения. Может ли кто-нибудь помочь мне создать пользователя с правами администратора из файла yaml.

1 Ответ

2 голосов
/ 26 мая 2020

Удалите command из файла развертывания, и он заработает. Потому что, когда вы устанавливаете переменные MONGO_INITDB_ROOT_USERNAME и MONGO_INITDB_ROOT_PASSWORD ENV в своем manifest. Контейнер Mon go включит --auth сам. Таким образом, вам не нужно указывать явно. Взгляните на здесь .

Обновленный YAML

env:
        - name: MONGO_INITDB_ROOT_USERNAME
          value: "admin"
        - name: MONGO_INITDB_ROOT_PASSWORD
          value: "password"
        - name: MONGO_INITDB_DATABASE
          value: admin
        ports:
        - containerPort: 27017
...