перед AKS, управляющими конфигурациями, специфичными для среды, используя (dotenv)
.env (например,. Эти значения
вводится во время сборки с помощью команд сборки NPM. "build-dev": "cross-env ENVIRONMENT=development quasar build",
"build-stg": "cross-env ENVIRONMENT=stage quasar build",
"build-prod": "cross-env ENVIRONMENT=production quasar build",
< /code>
Теперь мы переходим к развертыванию приложения в Azure Kubernetes Service (AKS), и мы хотели бы следовать наилучшей практике: < /p>
- varime, используемая среда. Kubernetes ConfigMaps или Secrets, вместо того, чтобы полагаться на файлы .ENV. Мы ищем чистый и безопасный способ передать переменные, специфичные для окружающей среды во время выполнения, без восстановления приложения для каждой среды. Process /Process.ENV как неопределенный. Включите значения конфигурации, такие как API_BASE_URL, APP_ENV, API_ENDPOINT, CLIVE_ID, TENENT_ID, REDIRECT_URL (для Azure AD) и т. Д. В среде выполнения с использованием Kubernetes-Cnive Вызов).
// Proxy to prefer process.env values; fallback to localConfig
const env = new Proxy({}, {
get: (_, key) => {
if (typeof process !== 'undefined' && process.env?.[key]) {
return process.env[key];
}
return localConfig[key];
}
});
module.exports = { env };
< /code>
Файл: Quasar.config.js < /p>
const { configure } = require("quasar/wrappers");
const { env } = require("./src/boot/env");
//HR Microfrontend configuration through Webpack Module federation
cfg.plugins.push(
new ModuleFederationPlugin({
name: "host-app",
filename: "remoteEntry.js",
exposes: {},
remotes: {
hrAppComponent: hrApp@${env.HR_UI}remoteEntry.js
},
shared: {
...dependencies
}
})
);
< /code>
Файл: authservice.js < /p>
import { env } from "src/boot/env";
export class AuthService {
msalConfig = {
auth: {
clientId: env.CLIENT_ID,
redirectUri: env.REDIRECT_URI,
postLogoutRedirectUri: env.REDIRECT_URI,
authority: https://login.microsoftonline.com/${env.TENANT_ID},
navigateToLoginRequestUrl: false
},
cache: {
cacheLocation: "localStorage"
}
};
}
< /code>
aks configmap (yaml) < /p>
apiVersion: v1
kind: ConfigMap
metadata:
name: quasar-env-config
data:
ENVIRONMENT: "stage"
CLIENT_ID: "xyz"
REDIRECT_URI: "xyz"
TENANT_ID: "xyz"
HR_UI: "https://example.com/"
< /code>
nginx config < /p>
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html;
try_files $uri $uri/ /index.html;
}
location ~* .html$ {
add_header Cache-Control "no-store";
}
location ~* .(?:ico|css|js|gif|jpe?g|png|woff2?|eot|ttf|svg)$ {
expires 6M;
add_header Cache-Control "public, max-age=15778463, immutable";
access_log off;
}
gzip on;
gzip_types text/plain text/css application/json application/javascript text/javascript;
}
< /code>
- Есть ли какая-либо известная проблема, в которой процесс. строится?
Подробнее здесь: https://stackoverflow.com/questions/796 ... ks-without
Мобильная версия