0

我正在尝试运行 gitea 1.8.3,它现在习惯于将生成的 JWT 令牌写入其自己的 app.ini 文件。以前 app.ini 文件可以从 ConfigMap 以只读方式挂载。现在我需要以某种方式用一些数据填充 app.ini 文件,但还要让应用程序写入该文件。

我正在尝试让 initContainer 写出安装在主应用程序中的配置。这在这里解释。当我使用 minishift 尝试该示例时,它告诉我由于安全限制,我无法安装 hostPath。我不想放松安全性,所以我试图将配置放入 PVC 中。这是脚本:

#!/bin/bash
cat | oc create -f  - <<EOF
---
apiVersion: "v1"
kind: "PersistentVolumeClaim"
metadata:
  name: "config-data-claim"
spec:
  accessModes:
    - "ReadWriteMany"
  resources:
    requests:
      storage: "1Gi"
---
apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
  - name: realworld
    image: docker.io/simonmassey/react-redux-realworld:v0.0.2
    env:
    - name: API_ROOT
      value: https://conduit.productionready.io/api
    volumeMounts:
    - mountPath: /data
      name: config-data-claim
  initContainers:
  - name: config-data
    image: busybox
    command: ["echo","-n","{'address':'10.0.1.192:2379/db'}", ">","/data/config"]
    volumeMounts:
    - mountPath: /data
      name: config-data-claim
  volumes:
  - name: config-data-claim
    persistentVolumeClaim:
      claimName: config-data-claim
EOF

这很好,但是当我使用 minishift Web 控制台进入 pod 中的终端并运行ls -al /datapvc 时,它是空的。控制台显示 initContainer 运行成功。

为什么 initContainer/data没有填充 pvc 文件夹?

我在跑步:

$ oc version
Client Version: version.Info{Major:"4", Minor:"1+", GitVersion:"v4.1.0+b4261e0", GitCommit:"b4261e07ed", GitTreeState:"clean", BuildDate:"2019-07-06T03:16:01Z", GoVersion:"go1.12.6", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"11+", GitVersion:"v1.11.0+d4cacc0", GitCommit:"d4cacc0", GitTreeState:"clean", BuildDate:"2019-08-30T20:25:39Z", GoVersion:"go1.10.8", Compiler:"gc", Platform:"linux/amd64"}

该服务器是运行 opensheft 3.11 的 minishift,其开头为:

brew cask install minishift
minishift start --vm-driver virtualbox --cpus 2 --memory 8GB --disk-size 100GB --profile helm211 --openshift-version v3.11.0
eval $(minishift oc-env)
4

0 回答 0