Arhn - архитектура программирования

секреты kubectl недоступны в модулях приложения React

Я пытался избежать, но на самом деле не было необходимости устанавливать определенные переменные env для React FE. Но я работаю над социальной аутентификацией, в частности с Azure AD, и теперь у меня есть вариант ее использования.

Я признаю, что AAD_TENANT_ID и AAD_CLIENT_ID не являются секретной или конфиденциальной информацией и будут скомпилированы в JS, но я пытаюсь сделать это по нескольким причинам:

  1. Мне стало проще управлять ключами разработки и производства из Key Vault...
  2. Наличие независимого от среды кода (т. е. process.env.AAD_TENANT_ID будет работать независимо от того, является ли он dev или prod).

Но это не работает.

Проблема, с которой я сталкиваюсь, заключается в том, что переменные env недоступны в process.env, несмотря на следующее:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: admin-v2-deployment-dev
  namespace: dev
spec:
  replicas: 1
  revisionHistoryLimit: 5
  selector:
    matchLabels:
      component: admin-v2
  template:
    metadata:
      labels:
        component: admin-v2
    spec:
      containers:
        - name: admin-v2
          image: admin-v2
          ports:
            - containerPort: 4001
          env:
            - name: AAD_CLIENT_ID
              valueFrom:
                secretKeyRef:
                  name: app-dev-secrets
                  key: AAD_CLIENT_ID
            - name: AAD_TENANT_ID
              valueFrom:
                secretKeyRef:
                  name: app-dev-secrets
                  key: AAD_TENANT_ID
---
apiVersion: v1
kind: Service
metadata:
  name: admin-v2-cluster-ip-service-dev
  namespace: dev
spec:
  type: ClusterIP
  selector:
    component: admin-v2
  ports:
    - port: 4001
      targetPort: 4001

Когда я делаю следующее в любом месте кода, он возвращается undefined:

console.log(process.env.AAD_CLIENT_ID);
console.log(process.env.AAD_TENANT_ID);

Значения определенно есть, когда я проверяю секреты в пространстве имен и в самом поде:

    Environment:
      AAD_CLIENT_ID:  <set to the key 'AAD_CLIENT_ID' in secret 'app-dev-secrets'>  Optional: false
      AAD_TENANT_ID:  <set to the key 'AAD_TENANT_ID' in secret 'app-dev-secrets'>  Optional: false

Так как же поместить секреты kubectl в React Pods?


  • Ваше реагирующее приложение обслуживается node.js? Получаете ли вы другие переменные среды? 21.03.2021
  • Для dev он использует npm start в Dockerfile.dev. Использование npm build для производства в Dockerfile и nignx для обслуживания статических активов. Серверная часть — это Django/DRF, но не обслуживает FE. 21.03.2021
  • react работает в браузере, вы не сможете получить там среду из модуля. 22.03.2021

Ответы:


1

Я предполагаю, что вы используете приложение create-react-app для React FE. Вы должны убедиться, что ваши переменные среды начинаются с REACT_APP_, иначе они будут игнорироваться внутри приложения. Согласно документации приложения create-реагировать

Note: You must create custom environment variables beginning with REACT_APP_.
Any other variables except NODE_ENV will be ignored to avoid accidentally 
exposing a private key on the machine that could have the same name. 

Источник — https://create-react-app.dev/docs/adding-custom-environment-variables/

22.03.2021
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..