我正在尝试运行 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 /data
pvc 时,它是空的。控制台显示 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)