我有一个用angular4编写的应用程序, 我在生产和沙箱上运行,
我创建了一个图像,然后在kubernetes上部署
我有一些与沙箱和生产不同的环境变量,目前我为沙箱和一个用于构建两个不同的图像 生产:
<form method='post' action='/employers/<%= employee.id %>/employeeRate'>
<div>Rate This Employee</div>
<i class="glyphicon glyphicon-thumbs-down"></i>
<input type='submit' id='one' value='1'>
<input type='submit' id='two' value='2'>
<input type='submit' id='three' value='3'>
<input type='submit' id='four' value='4'>
<input type='submit' id='five' value='5'>
<i class="glyphicon glyphicon-thumbs-up"></i>
</form>
下的环境:
environment.prod.ts
src/envirnments
environment.sandbox.ts
export const environment = {
production: true,
server_url: 'https://api.example.com/app/',
};
建立形象:
制作:export const environment = {
production: false,
server_url: 'https://api-sandbox.example.com/app/',
};
沙箱:
ng build --prod
现在,我该如何使用外部环境变量?
像ng build--prod --env=sandbox
这样的东西,像这样我不需要为每个环境创建一个图像?
这是我的applicatoion.getEnvirnment('server_url')
:
deployment.yaml
这是我的dockerfile:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: angular-web-app
namespace: production
spec:
replicas: 1
revisionHistoryLimit: 1
strategy:
type: RollingUpdate
template:
metadata:
labels:
app: angular-web-app
spec:
containers:
- name: angular-web-app
image: us.gcr.io/my-com/angular-web-app:06.01.2018
ports:
- containerPort: 80
env:
- name: SERVER_URL
value: https://api.example.com
构建图像:
FROM nginx
COPY dist /usr/share/nginx/html
EXPOSE 80
EXPOSE 443
我将环境变量添加到部署中,我希望应用程序从那里获取值
答案 0 :(得分:3)
另外你可以从本地配置json读取,然后使用卷, 为每个环境see
分配配置图src/assets/config
下的放置了配置json,
你的代码中的从配置文件中读取url:
private getConfigJSONFile() {
return this.http.get("/assets/config/env-vars.json").map((res:any) => res.json())
}
现在在kubernetes上创建配置:
这是配置文件:
<强> CONFIGS / ENV-variables.json 强>
{
"api_server_url": "https://api.example.com"
}
创建配置
kubectl create configmap angular-env-vars --from-file=env-vars.json=configs/env-variables.json
在部署中使用卷:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: angular-web-app
spec:
replicas: 1
revisionHistoryLimit: 1
strategy:
type: RollingUpdate
template:
metadata:
labels:
app: angular-web-app
spec:
containers:
- name: angular-web-app
image: us.gcr.io/my-com/angular-web-app:06.01.2018
volumeMounts:
- name: env-vars
mountPath: /usr/share/nginx/html/assets/config
ports:
- containerPort: 80
volumes:
- name: env-vars
configMap:
name: angular-env-vars