configmap을 외부 파일에 연결하는 방법은 무엇입니까?

configmap을 외부 파일에 연결하는 방법은 무엇입니까?

이를 통해 외부 파일에 연결된 configmap을 생성할 수 있습니다.

kubectl create configmap database-config --from-file=database.properties

그러나 yaml을 편집하면 파일의 전체 내용이 거기에 덤프된 것으로 표시됩니다.

어쨌든 yaml의 파일을 가리켜 속성 파일을 configmap yaml과 동일한 폴더에 유지하고 다음을 사용하여 모든 yaml 폴더에 적용할 수 있습니까?

kubectl apply -f target_folder\

제안해주세요.

답변1

무엇 configmap인가요

ConfigMap은 기밀이 아닌 데이터를 키-값 쌍으로 저장하는 데 사용되는 API 개체입니다. 포드는 ConfigMap을 환경 변수, 명령줄 인수 또는 볼륨의 구성 파일로 사용할 수 있습니다.

ConfigMap을 사용하면 컨테이너 이미지에서 환경별 구성을 분리할 수 있으므로 애플리케이션을 쉽게 이식할 수 있습니다.

즉, configmap외부 파일(예: 사례)이나 다른 값에서 생성되면 API 서버는 모든 것이 올바른지 확인한 다음 etcd. 이는 또한 전체 맥락을 볼 edit때 이유를 설명합니다 . configmap이는 외부 소스가 아닌 configmap에서 읽기 때문에 발생합니다.etcd

이는 큰 파일 저장을 구성 맵이나 비밀로 저장하지 않는 것이 권장되지 않는 이유 중 하나이기도 합니다. 모든 클러스터의 개체가 etcd.

사용자 정의

configmap이는 동일한 디렉터리에 있는 파일을 기반으로 생성/구성 시 하나의 명령을 실행해야 하는 요구 사항을 달성하는 방법 중 하나입니다 . Kustomization 파일을 통해 Kubernetes 개체를 사용자 지정하는 독립 실행형 도구입니다.

나는 아이디어를 보여주기 위해 짧고 간단한 예를 만들었습니다.

$ tree
.
├── application.properties
└── kustomization.yaml
0 directories, 2 files

$ cat kustomization.yaml 
generatorOptions:
  disableNameSuffixHash: true # this flag is used to avoid creation of new configmap, instead it will be modified when file context is changed
configMapGenerator:
- name: application-config
  files:
  - application.properties

$ cat application.properties 
listen.url=localhost:9010
client.url=some_url:3000

이것을 테스트해 보세요. 이 명령은렌더링만configmap은 아직 생성되지 않습니다.

$ kubectl kustomize application.settings/
apiVersion: v1
data:
  application.properties: |
    listen.url=localhost:9010
    client.url=some_url:3000
kind: ConfigMap
metadata:
  name: application-config

마지막 단계는적용하다그것:

$ kubectl apply -k application.settings/
configmap/application-config created

$ kubectl get cm
NAME                 DATA   AGE
application-config   1      23s

위 명령에 대한 간단한 설명:

해당 리소스를 적용하려면 --kustomize 또는 -k 플래그와 함께 kubectl apply를 실행하세요.

관련 정보