在图像上使用服务器环境变量

时间:2018-03-25 10:52:58

标签: angular kubernetes

我有一个用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

我将环境变量添加到部署中,我希望应用程序从那里获取值

1 个答案:

答案 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