image.png
我们将创建一个基于node开发的web-server,mongo-express.用于与mongodb交互
我们将创建mongodb deployment,mongodb service. mongodb secret,mongo express deployment,
mongodb express service,mongo db configmap

mongo db secret

保存mongo db 密码
注意需要是将用户名和密码进行base64加密
type有多种类型,需要具体区分

  1. apiVersion: v1
  2. kind: Secret
  3. metadata:
  4. name: mongodb-secret
  5. type: Opaque
  6. data:
  7. mongo-root-username: dXNlcm5hbWU=
  8. mongo-root-password: cGFzc3dvcmQ=

mongo deployment and service

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongodb-deployment
  labels:
    app: mongodb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mongodb
  template:
    metadata:
      labels:
        app: mongodb
    spec:
      containers:
        - name: mongodb
          image: mongo
          ports:
            - containerPort: 27017
          env:
            - name: MONGO_INITDB_ROOT_USERNAME
              valueFrom:
                secretKeyRef:
                  name: mongodb-secret
                  key: mongo-root-username
            - name: MONGO_INITDB_ROOT_PASSWORD
              valueFrom:
                secretKeyRef:
                  key: mongo-root-password
                  name: mongodb-secret
---
apiVersion: v1
kind: Service
metadata:
  name: mongodb-service
spec:
  selector:
    app: mongodb
  ports:
    - port: 27017
      protocol: TCP
      targetPort: 27017

configmap

配置连接url

apiVersion: v1
kind: ConfigMap
metadata:
  name: mongo-configmap
data:
  database_url: mongodb-service

mongo-express

我们需要知道暴露端口
image.png

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongo-express-deployment
  labels:
    app: mongo-express
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:
                  key: mongo-root-username
                  name: mongodb-secret
            - name: ME_CONFIG_MONGODB_ADMINPASSWORD
              valueFrom:
                secretKeyRef:
                  key: mongo-root-password
                  name: mongodb-secret
            - name: ME_CONFIG_MONGODB_SERVER
              valueFrom:
                configMapKeyRef:
                  key: database_url
                  name: mongo-configmap
---
apiVersion: v1
kind: Service
metadata:
  name: mongo-express-service
spec:
  selector:
    app: mongo-express
  type: LoadBalancer
  ports:
    - port: 8081
      targetPort: 8081
      protocol: TCP
      nodePort: 30000

minikube将端口暴露出去

minikube service mongo-express-service

#