我有一个 mongo 数据库和 mongo-express 作为 Kubernetes 集群中的 Docker 容器运行。根据文档,我通过将用户名和密码分别分配给 ME_CONFIG_BASICAUTH_USERNAME 和 ME_CONFIG_BASICAUTH_PASSWORD envs 来启用 mongo-express 基本身份验证。https://github.com/mongo-express/mongo-express
之后,基本身份验证弹出窗口起作用,并且正确验证了 env 凭据。
这种方法 - 在 mongo-express 清单文件中将凭据作为纯文本传递并不能让我满意。我想将这些敏感凭证作为 base64 编码字符串保存在秘密 Kubernetes 对象中。
问题是,如果我尝试将 mongo-express 基本身份验证凭据存储在秘密对象中,则此凭据不再有效,因此我无法登录 mongo-express UI。
我目前正在使用秘密值来存储 mongodb 凭据,并且没有问题。
在 mongo-express 容器中,credentails 已正确分配给它们的环境。从容器的角度来看,ME_CONFIG_BASICAUTH_USERNAME 和 ME_CONFIG_BASICAUTH_PASSWORD 环境变量的值是相同的,无论它们是从秘密分配的,还是作为 mongo-express 清单中的值。
我在 mongo-express 部署之前重新加载了机密。
简而言之,如果凭据作为值传递一切正常,如果作为秘密,则登录失败且没有错误。
已登录用户的所需视图。
mongo-express 清单文件:
# SERVICE
apiVersion: v1
kind: Service
metadata:
name: mongo-express-service
labels:
app: mongo-express-service
spec:
selector:
app: mongo-express
type: LoadBalancer
ports:
- protocol: TCP
port: 80
targetPort: 8081
---
# DEPLOYMENT
apiVersion: apps/v1
kind: Deployment
metadata:
name: mongo-express-deployment
labels:
app: mongo-express-deployment
spec:
replicas: 1
selector:
matchLabels:
app: mongo-express
template:
metadata:
labels:
app: mongo-express
spec:
containers:
- name: mongo-express
image: mongo-express
ports:
- containerPort: 8081
env:
- name: ME_CONFIG_MONGODB_ADMINUSERNAME
valueFrom:
secretKeyRef:
name: mongo-secret
key: mongo-root-username
- name: ME_CONFIG_MONGODB_ADMINPASSWORD
valueFrom:
secretKeyRef:
name: mongo-secret
key: mongo-root-password
- name: ME_CONFIG_BASICAUTH_USERNAME
# value: admin
valueFrom:
secretKeyRef:
name: mongo-secret
key: mongo-basic-auth-username
- name: ME_CONFIG_BASICAUTH_PASSWORD
# value: admin
valueFrom:
secretKeyRef:
name: mongo-secret
key: mongo-basic-auth-password
- name: ME_CONFIG_MONGODB_SERVER
valueFrom:
configMapKeyRef:
name: mongo-config
key: mongo-server
mongo 秘密 mainfest 文件:
# SECRET
apiVersion: v1
kind: Secret
metadata:
name: mongo-secret
type: Opaque
data:
mongo-root-username: XXXXXXXXXXXXXXXXXX
mongo-root-password: XXXXXXXXXXXXXXXXXX
mongo-basic-auth-username: YWRtaW4K
mongo-basic-auth-password: YWRtaW4K