0

ASP.NET Core SPA 与 wwwroot/config/config.json 中的外部配置

config.json 的内容:

{
  "termsAndConditionsLink": "https://some-dev-url.with/legal/terms/"
}

当文件没有被 ConfigMap 覆盖时,它工作正常,我能够获取文件的全部内容。

curl https://dev-app.com/config/config.json
{
  "termsAndConditionsLink": "https://some-dev-url.with/legal/terms/"
}

当 ConfigMap 数据通过 Volume 挂载到该路径时,并不会全部返回。

curl https://dev-app.com/config/config.json
{
  "termsAndCon

该文件存在于 pod 中:

pwd
/app/wwwroot/config

ls -la
total 12
drwxrwxrwx 3 root root 4096 Nov 20 08:48 .
drwxr-xr-x 6 root root 4096 Nov 20 08:46 ..
drwxr-xr-x 2 root root 4096 Nov 20 08:48 ..2018_11_20_08_48_02.390652870
lrwxrwxrwx 1 root root   31 Nov 20 08:48 ..data ->         ..2018_11_20_08_48_02.390652870
lrwxrwxrwx 1 root root   18 Nov 20 08:48 config.json -> ..data/config.json

cat config.json
{
  "termsAndConditionsLink": "https://some-dev-url.with/legal/terms/"
}

配置映射.yaml

kind: ConfigMap
apiVersion: v1
metadata:
  name: my-config
data:
  config.json: |-
    {
      "termsAndConditionsLink": "https://some-dev-url.with/legal/terms/"
    }

部署.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: my-app
  labels:
    ...
spec:
  template:
    metadata:
      labels:
        ...
    spec:
      containers:
        ...
          volumeMounts:
            - name: my-volume
              mountPath: /app/wwwroot/config
      volumes:
        - name: my-volume
          configMap:
            name: my-config
4

1 回答 1

0

您是说/app/wwwroot/config从 ConfigMap 在该位置安装卷时目录中的任何其他文件都消失了吗?

您是否尝试过预计音量:

volumes:
  - name: my-volume
    projected:
      sources:
      - configMap:
          name: my-config

编辑:对于那些可能遇到此类问题并且不阅读帖子下方消息的人 - 在与@edbighead 交换消息后,另一个建议是subPath在部署中使用以使配置目录可写,因为 ConfigMap 卷挂载是读取的 -只要:

mountPath: /app/wwwroot/config/config.json 
subPath: config.json

这显然解决了问题

于 2018-11-21T21:53:25.910 回答