Переменные Kubernetes env не работают в sequelize-cli - PullRequest
1 голос
/ 20 октября 2019

Я пытаюсь запустить следующую команду:

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.

Однако, если перейти в index.js, где находится приложение Express и console.log то же самое, он вернется с ожидаемыми значениями.

У меня Kubernete работает с skaffold.yaml и minikube во время всего этого.

Есть ли способ заставить это работать без создания .env только для запуска этих команд?

server-deploy.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 голосов
/ 20 октября 2019

Ну, это не красиво, но это лучшее, что я могу понять. Надеюсь, у кого-то есть лучший ответ ...

Так как это deployment, который состоит из трех реплик, он производит три модуля. Сначала нужно получить идентификатор:

kubectl get pod

Как только я получу это, я могу сделать следующее:

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

Это работает, но немного грязно.

Наткнулся на эту ссылку , которая будет более эффективной, особенно если просто сделать 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" 
...