Я пытаюсь получить доступ к переменным среды во время выполнения в приложении Vue 3. Я использую vitejs для комплектации.
приложение развертывается на AKS, а значения хранятся как секреты Kubernetes.
Следовал инструкциям здесь и здесь
У меня есть файл .env, содержащий переменные env, которые я хочу раскрыть:
VITE_OKTA_CLIENT=$VITE_OKTA_CLIENT
VITE_OKTA_ISSUER=$VITE_OKTA_ISSUER
$VITE_OKTA_ISSUER - это переменная env в моем модуле k8s с фактическим значением.
и я пытаюсь использовать такие переменные:
import.meta.env.VITE_OKTA_CLIENT
import.meta.env.VITE_OKTA_ISSUER
значение из импорта не определено
вот как выглядит моя конфигурация vitejs:
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueI18n from '@intlify/vite-plugin-vue-i18n'
const path = require('path')
// https://vitejs.dev/config/
export default defineConfig({
resolve: {
alias: {
'@': path.resolve(__dirname, '/src'),
'@okta/okta-auth-js': '@okta/okta-auth-js/dist/okta-auth-js.umd.js'
}
},
optimizeDeps: {
include: [
'@vue/apollo-composable'
]
},
plugins: [
vue(),
vueI18n({
include: path.resolve(__dirname, './src/locales/**')
})
]
})
В моих файлах конфигурации Kubernetes я ссылаюсь на env следующим образом:
spec:
containers:
- name: webapp
env:
- name: VITE_ROUTER_BASE
value: /
- name: VITE_OKTA_CLIENT
valueFrom:
secretKeyRef:
name: testsecret
key: VITE_OKTA_CLIENT
- name: VITE_OKTA_ISSUER
valueFrom:
secretKeyRef:
name: testsecret
key: VITE_OKTA_ISSUER
В моей конфигурации чего-то не хватает? или есть лучший способ сделать это?
Возможно это? stackoverflow.com/questions/66389043/…





Переменные среды статически заменяются во время производственной сборки, поэтому использование «переменных среды выполнения» невозможно с файлами
.env. Технически вы можете создать свое приложение в контейнере, где вы настроите env, а затем развернете результат. Однако значения будут встроены в приложение, поэтому они не должны содержать никакой конфиденциальной информации, но я предполагаю, что это не так, исходя из вашей конфигурации k8s.