비밀을 사용하여 단일 파일을 마운트하는 것을 고려하고 있었지만 다른 모든 콘텐츠를 덮어 쓰는 디렉토리 만 마운트 할 수있는 것 같습니다. 디렉토리를 마운트하지 않고 단일 구성 파일을 공유하려면 어떻게해야합니까?
답변:
예를 들어 2 개의 구성 파일이 포함 된 구성 맵이 있습니다.
kubectl create configmap config --from-file <file1> --from-file <file2>
다음과 같은 subPath를 사용하여 단일 파일을 기존 디렉토리에 마운트 할 수 있습니다.
---
volumeMounts:
- name: "config"
mountPath: "/<existing folder>/<file1>"
subPath: "<file1>"
- name: "config"
mountPath: "/<existing folder>/<file2>"
subPath: "<file2>"
restartPolicy: Always
volumes:
- name: "config"
configMap:
name: "config"
---
여기에 전체 예
여기서 부터이 작업 예제로 시작 하겠습니다 . Kubernetes 1.3 이상을 사용하고 있는지 확인하십시오.
다음과 같이 ConfigMap을 생성하기 만하면됩니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: test-pd-plus-cfgmap
data:
file-from-cfgmap: file data
그런 다음 다음과 같이 포드를 만듭니다.
apiVersion: v1
kind: Pod
metadata:
name: test-pd-plus-cfgmap
spec:
containers:
- image: ubuntu
name: bash
stdin: true
stdinOnce: true
tty: true
volumeMounts:
- mountPath: /mnt
name: pd
- mountPath: /mnt/file-from-cfgmap
name: cfgmap
subPath: file-from-cfgmap
volumes:
- name: pd
gcePersistentDisk:
pdName: testdisk
- name: cfgmap
configMap:
name: test-pd-plus-cfgmap
현재 (v1.0, v1.1) 단일 구성 파일을 볼륨 마운트하는 방법이 없습니다. 비밀 구조는 자연스럽게 여러 비밀을 나타낼 수 있습니다. 즉, 디렉터리 여야합니다.
구성 개체를 얻을 때 단일 파일이 지원되어야합니다.
그동안 디렉토리를 마운트하고 이미지에서 심볼릭 링크를 만들 수 있습니까?
로깅을 향상시키기 위해 새 log4j2.xml 을 실행중인 배포에 마운트하려고한다고 가정 해 보겠습니다.
# Variables
k8s_namespace=xcs
deployment_name=orders-service
container_name=orders-service
container_working_dir=/opt/orders-service
# Create config map and patch deployment
kubectl -n ${k8s_namespace} create cm log4j \
--from-file=log4j2.xml=./log4j2.xml
kubectl -n ${k8s_namespace} patch deployment ${deployment_name} \
-p '{"spec":{"template":{"spec":{"volumes":[{"configMap":{"defaultMode": 420,"name": "log4j"},"name": "log4j"}]}}}}'
kubectl -n ${k8s_namespace} patch deployment ${deployment_name} \
-p '{"spec":{"template":{"spec":{"containers":[{"name": "'${container_name}'","volumeMounts": [{ "mountPath": "'${container_working_dir}'/log4j2.xml","name": "log4j","subPath": "log4j2.xml"}]}]}}}}'