【发布时间】:2020-05-19 18:29:27
【问题描述】:
我正在尝试创建一个 mongodb 用户以及一个有状态集。这是我的 .yaml 文件:
apiVersion: v1
kind: Service
metadata:
name: mongo
labels:
name: mongo
spec:
type: NodePort
ports:
- port: 27017
targetPort: 27017
selector:
name: mongo
---
apiVersion: v1
kind: Secret
metadata:
name: admin-secret
# corresponds to user.spec.passwordSecretKeyRef.name
type: Opaque
stringData:
password: pass1
# corresponds to user.spec.passwordSecretKeyRef.key
---
apiVersion: mongodb.com/v1
kind: MongoDBUser
metadata:
name: admin
spec:
passwordSecretKeyRef:
name: admin-secret
# Match to metadata.name of the User Secret
key: password
username: admin
db: "admin" #
mongodbResourceRef:
name: mongo
# Match to MongoDB resource using authenticaiton
roles:
- db: "admin"
name: "clusterAdmin"
- db: "admin"
name: "userAdminAnyDatabase"
- db: "admin"
name: "readWrite"
- db: "admin"
name: "userAdminAnyDatabase"
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mongo
spec:
serviceName: "mongo"
replicas: 2
selector:
matchLabels:
name: mongo
template:
metadata:
labels:
name: mongo
spec:
terminationGracePeriodSeconds: 10
containers:
# - envFrom:
# - secretRef:
# name: mongo-secret
- image: mongo
name: mongodb
command:
- mongod
- "--replSet"
- rs0
- "--bind_ip"
- 0.0.0.0
ports:
- containerPort: 27017
之前我使用秘密创建了一个 mongo 用户:
...
spec:
containers:
- envFrom:
- secretRef:
name: mongo-secret
...
但是一旦我将 spec.template.spec.containers.command 添加到 StatefulSet,这种方法就不再有效。然后我添加了 Secret 和 MongoDBUser 但我开始收到此错误:
unable to recognize "mongo.yaml": no matches for kind "MongoDBUser" in version "mongodb.com/v1"
在kubernetes创建StatefulSet少副本时如何自动创建mongodb用户?
【问题讨论】:
-
您遇到该错误是因为您没有 MongoDBUser 的 CustomResourceDefinition (CRD)。您参考了哪个指南来创建 YAML 对象?是你唯一需要创建一个用户的 MongoDB,你可以参考这个清单:gist.github.com/thilinapiy/0c5abc2c0c28efe1bbe2165b0d8dc115 & medium.com/@dilipkumar/…
-
@hdhruna 我在创建 yaml 文件时参考了官方文档:docs.mongodb.com/kubernetes-operator/master/tutorial/…。我的第一个没有 Secret 和 MongoDBUser 的 yaml 版本使用 env 变量来初始化 mongo 用户——与中型帖子类似的方法。我会仔细研究要点,ty
标签: mongodb kubernetes