Kubernetes env变量在sequelize-cli中不起作用

时间:2019-10-19 22:38:45

标签: kubernetes environment-variables sequelize.js skaffold

我正在尝试运行以下命令:

npx sequelize-cli db:migrate

sequelize-cli使用的./config/config.js文件包含以下内容:

module.exports = {
  username: process.env.PGUSER,
  host: process.env.PGHOST,
  database: process.env.PGDATABASE,
  password: process.env.PGPASSWORD,
  port: process.env.PGPORT,
};

如果您console.log()全部process.env.<var>,所有都回来了undefined

但是,如果进入Express应用程序所在的index.js并且console.log是同一事物,它将返回预期值。

在所有这些过程中,我让Kubernete与skaffold.yamlminikube一起运行。

是否有一种无需创建.env就可以运行这些命令的方式来使其正常工作的方法?

server-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: server-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      component: server
  template:
    metadata:
      labels:
        component: server
    spec:
      containers:
        - name: server
          image: sockpuppet/server
          ports:
            - containerPort: 5000
          env:
            - name: PGUSER
              value: postgres
            - name: PGHOST
              value: postgres-cluster-ip-service
            - name: PGPORT
              value: '5432'
            - name: PGDATABASE
              value: postgres
            - name: PGPASSWORD
              value: ''

1 个答案:

答案 0 :(得分:0)

好吧,这并不漂亮,但这是我能发现的最好的。希望有人有更好的答案...

由于这是一个deployment,由三个副本组成,因此它会产生三个吊舱。必须先获取ID:

kubectl get pod

一旦我可以执行以下操作:

kubectl exec -it server-deployment-84cf685559-gwkvt -- npx sequelize-cli db:migrate

那行得通,但有点混乱。

通过this link来提高效率,尤其是仅制作alias时:

kubectl exec -it $(kubectl get pods -o name | grep -m1 INSERT_DEPLOYMENT_NAME_HERE | cut -d'/' -f 2) INSERT_YOUR_COMMAND_HERE

kubectl exec -it $(kubectl get pods -o name | grep -m1 server-deployment | cut -d'/' -f 2) "npx sequelize-cli db:migrate"