![](/img/trans.png)
[英]How to connect mysql kubernetes container internally with nodejs k8s container?
[英]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 镜像
您也可以使用自定义化来实现这一点。
secretGenerator:
- name: my-secret
behavior: create
env: .env
envFrom:
- secretRef:
name: my-secret
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.