无法验证部署在kubernetes中的Mongodb
您好,我已经在kubernetes上部署了mongodb V-4.2.6,下面是yaml文件无法验证部署在kubernetes中的Mongodb,mongodb,docker,kubernetes,Mongodb,Docker,Kubernetes,您好,我已经在kubernetes上部署了mongodb V-4.2.6,下面是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
# 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"
如果我尝试使用上述yaml文件中指定的凭据(db.auth(“admin”,“password”))登录,我将在mongodb中收到身份验证失败消息。我在stackoverflow中发现了相关问题,但找不到解决方案。任何人都可以帮助我从yaml文件中创建管理员用户。从部署文件中删除
命令
,它就会工作。因为当您在清单中设置MONGO\u INITDB\u ROOT\u用户名
和MONGO\u INITDB\u ROOT\u密码
ENV变量时。Mongo容器将自行启用--auth
。因此,您不需要显式地指定。看一看
# 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"
更新的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
从部署文件中删除
命令
,它就会工作。因为当您在清单中设置MONGO\u INITDB\u ROOT\u用户名
和MONGO\u INITDB\u ROOT\u密码
ENV变量时。Mongo容器将自行启用--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
这对我不管用,我很生气