[英]How to put a whole directory and its subdirectories with a ConfigMap in a Kubernetes Pod on a multi-node cluster?
問題
例如:
我們需要將這些文件一次(在啟動時)放入 Pod。
據我所知,我只能在一個目錄級別中創建所有文件的一個 ConfigMap,並且我必須重新創建結構。
例如
kubectl create configmap style-files --from-file=.
在我們上面的示例中,此命令只會為 xml 文件創建一個 ConfigMap。
預期行為
行為類似於 ConfigMap,但能夠創建單個 ConfigMap,其中包含當前目錄中的所有文件和子目錄中的所有文件,同時保留文件夾結構。
問題
是否有一些針對我的用例的概念或者我必須使用 ConfigMaps?
您可以在集群內可訪問的位置提供存檔文件(fe s3 存儲或簡單的 http 服務器)並使用配置 map 配置正確的 ZE6B391A8D2C4D45902A2Z3A8B6585703 以下載文件。 要下載和解壓縮存檔,您可以使用與卷掛載相結合的 init 容器。
有關初始化容器的更多信息: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
我建議使用 configmaps,但由於 configmaps 是平面的,因此您可能需要使用其中兩個和兩個掛載來重新創建層次結構。
使用 XML 將一個安裝到/your/path/
,將另一個包含 CSS 的安裝到/your/path/layout
。
可能需要巧妙地使用subpath
鍵來避免第一個cm
覆蓋第二個nd 。
目錄中的示例文件:
.
├── test21.css
├── test22.css
├── test2.xml
└── test.xml
Create configmap:
kubectl create configmap example --from-file=./
示例配置圖:
apiVersion: v1
data:
test.xml: |
test1
test1
test2.xml: |
test2
test2
test21.css: |
test21
test21
test22.css: |
test22
test22
kind: ConfigMap
具有投影 ConfigMap 鍵的卷的示例 pod:
apiVersion: v1
kind: Pod
metadata:
name: busy
spec:
containers:
- name: busybox
image: k8s.gcr.io/busybox
command: ["/bin/sh"]
args: ["-c", "sleep 200"]
volumeMounts:
- mountPath: /test
name: data1
volumes:
- name: data1
configMap:
name: example
items:
- key: test.xml
path: test.xml
- key: test2.xml
path: test2.xml
- key: test21.css
path: layout/test21.css
- key: test22.css
path: layout/test22.css
筆記:
您可以基於每個文件將密鑰投射到特定路徑和特定權限。
您可以使用 投影卷將此示例與不同的源(如秘密和配置映射)結合起來:投影卷將多個現有卷源映射到同一目錄中。
apiVersion: v1
kind: Pod
metadata:
name: busy
spec:
containers:
- name: busybox
image: k8s.gcr.io/busybox
command: ["/bin/sh"]
args: ["-c", "sleep 200"]
volumeMounts:
- mountPath: /test
name: data1
volumes:
- name: data1
projected:
sources:
- configMap:
name: example
items:
- key: test.xml
path: test.xml
- key: test2.xml
path: test2.xml
- key: test21.css
path: layout/test21.css
- key: test22.css
path: layout/test22.css
另一種方法是使用 zip/jar 文件作為 configmap(configmap 支持二進制文件),因此在安裝后可以將其解壓縮到容器內的所需路徑,或使用 init 容器准備適當的文件夾結構或使用重新填充的數據構建圖像。
資源:
希望這有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.