以下是在 Kubernetes 上使用 StatefulSet 部署 MongoDB 并设置用户名和密码的代码:
- 创建一个名为
mongo-secret的 Secret,其中包含用于身份验证的用户名和密码:
kubectl create secret generic mongo-secret --from-literal=username=testuser --from-literal=password=testpassword
- 创建以下 YAML 文件并保存为
mongodb-statefulset.yaml:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mongodb
labels:
app: mongodb
spec:
serviceName: mongodb-service
replicas: 3 # 适当调整数量以适合您的需求
selector:
matchLabels:
app: mongodb
template:
metadata:
labels:
app: mongodb
spec:
containers:
- name: mongodb-container
image: mongo
ports:
- containerPort: 27017 # MongoDB 默认端口号。
volumeMounts:
- name: mongo-persistent-storage # 持久化存储卷名称。
mountPath: /data/db # 数据库文件将存储在此目录下。
envFrom:
- secretRef:
name: mongo-secret # 引用上述创建的 Secret。
volumes:
- name: mongo-persistent-storage # 持久化存储卷名称。
persistentVolumeClaim:
claimName: mongo-pvc # 数据库数据将存储在此 PVC 中,需要提前创建好。
- 创建名为
mongo-pvc的 PersistentVolumeClaim(PVC),该 PVC 将用于持久化 MongoDB 数据:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mongo-pvc
spec:
accessModes:
- ReadWriteOnce # 仅允许单个 Pod 以读写模式访问此 PVC。
resources:
requests:
storage: 1Gi # 您可以适当调整容量以适合您的需求。
- 运行以下命令来创建 StatefulSet 和 PVC:
kubectl apply -f mongodb-statefulset.yaml
kubectl apply -f mongo-pvc.yaml
- 等待 StatefulSet 和 PVC 创建完成并运行成功。您可以使用以下命令检查它们的状态:
kubectl get statefulsets,pvc, pods -l app=mongodb
使用以下命令连接到 MongoDB 实例,然后验证用户名和密码是否正常工作:
kubectl run --rm -it mongo-client --image=mongo --restart=Never mongo -- mongo mongodb-service/testuser?authSource=mydb -u testuser -p testpassword在 mongoshell 中,输入以下命令确认您已经成功连接到 MongoDB 并已通过身份验证:
db.runCommand({ connectionStatus: 1 })如果一切正常,请退出 mongoshell。
要删除部署,请使用以下命令:
kubectl delete statefulset,pvc,service,secret -l app=mongodb




