shu*_*dim 1 kubernetes angular
我有一个用angular4编写的应用,正在生产环境和沙箱上运行,
我创建一个映像,然后在kubernetes上进行部署
我有一些与沙箱和生产环境不同的环境变量,目前我建立了两个不同的映像,一个用于沙箱,另一个用于生产:
下的环境src/envirnments:
环境产品
export const environment = {
production: true,
server_url: 'https://api.example.com/app/',
};
Run Code Online (Sandbox Code Playgroud)
environment.sandbox.ts
export const environment = {
production: false,
server_url: 'https://api-sandbox.example.com/app/',
};
Run Code Online (Sandbox Code Playgroud)
建筑形象:
生产:ng build --prod
沙箱:
ng build--prod --env=sandbox
现在,我该如何使用外部环境变量呢?像这样的东西applicatoion.getEnvirnment('server_url'),我不需要为每个环境创建图像吗?
这是我的deployment.yaml:
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
Run Code Online (Sandbox Code Playgroud)
这是我的dockerfile:
FROM nginx
COPY dist /usr/share/nginx/html
EXPOSE 80
EXPOSE 443
Run Code Online (Sandbox Code Playgroud)
建立图像:
ng build --prod --env=sandbox
docker build --rm -t ${REGISTRY}/${CONTAINER}:${TAG} .
Run Code Online (Sandbox Code Playgroud)
我将环境变量添加到部署中,我希望应用从那里获取值
或者,您可以从本地config json读取,然后使用卷,每个环境都有单独的配置映射,请参见
在src/assets/config配置json下,
在您的代码中,从配置文件中读取网址:
private getConfigJSONFile() {
return this.http.get("/assets/config/env-vars.json").map((res:any) => res.json())
}
Run Code Online (Sandbox Code Playgroud)
现在在kubernetes上创建配置:
这是配置文件:
configs / env-variables.json
{
"api_server_url": "https://api.example.com"
}
Run Code Online (Sandbox Code Playgroud)
创建配置
kubectl create configmap angular-env-vars --from-file=env-vars.json=configs/env-variables.json
Run Code Online (Sandbox Code Playgroud)
在部署中使用卷:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1282 次 |
| 最近记录: |