繁体   English   中英

如何在 K8S 中正确定义 MERN 堆栈容器的变量?

[英]How to correctly define variables for a container of MERN stack in K8S?

我正在尝试在 kubernetes mern 应用程序中运行( https://github.com/ibrahima92/fullstack-typescript-mern-todo/ )。 我有一个客户端和一个服务器容器,我需要在后端替换 url 客户端的路径,所以我在后端代码中定义了变量,但它们不会替换清单文件中的变量值。 容器内部有变量,但后端不使用它们。 我尝试了这样的选项 1. ${FRONT_URL}、${process.env.FRONT_URL}、process.env.FRONT_URL。 如果我直接在后端代码中插入带有端口号的服务 URL,那么一切正常。 如何正确定义容器中的变量?

我需要将 http://localhost:${PORT} 替换为来自 K8S 的服务 url,并且需要对 ${MONGO_URL} 做同样的事情

import express, { Express } from 'express'
import mongoose from 'mongoose'
import cors from 'cors'
import todoRoutes from './routes'

const app: Express = express()

const PORT: string | number = process.env.PORT || 4000

app.use(cors())
app.use(todoRoutes)

const uri: string = `mongodb://${MONGO_URL}?retryWrites=true&w=majority`
const options = { useNewUrlParser: true, useUnifiedTopology: true }
mongoose.set('useFindAndModify', false)

mongoose
    .connect(uri, options)
    .then(() =>
        app.listen(PORT, () =>
            console.log(`Server running on http://localhost:${PORT}`)
        )
    )
    .catch((error) => {
        throw error
    })

显现

apiVersion: apps/v1
kind: Deployment
metadata:
  name: todo-server-app-deploy
spec:
  replicas: 1
  selector:
    matchLabels:
      app: todo-server-app
  template:
    metadata:
      labels:
        app: todo-server-app
    spec:
      containers:
        - image: repo/todo-server-app:24
          name: container1
          ports:
          - containerPort: 4000
          env:
            - name: FRONT_URL 
              value: a1ecab155236d4c7fba8b0c6a1b6ad2b-549550669.us-east-1.elb.amazonaws.com:80
            - name: MONGO_URL
              value: todo-mongo-service:27017
          imagePullPolicy: IfNotPresent
              



你可以创建一个配置映射,给你的容器运行时变量,或者,使用ENV构建你自己的 docker 镜像

您也可以使用自定义化来实现这一点。

  • 定制化.yml
secretGenerator: 
   - name: my-secret 
     behavior: create 
     env: .env
  • 部署.yml

envFrom: 
- secretRef: 
  name: my-secret

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM