Я пытался избежать, но на самом деле не было необходимости устанавливать определенные переменные env для React FE. Но я работаю над социальной аутентификацией, в частности с Azure AD, и теперь у меня есть вариант ее использования.
Я признаю, что AAD_TENANT_ID
и AAD_CLIENT_ID
не являются секретной или конфиденциальной информацией и будут скомпилированы в JS, но я пытаюсь сделать это по нескольким причинам:
- Мне стало проще управлять ключами разработки и производства из Key Vault...
- Наличие независимого от среды кода (т. е.
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?