전공영역 공부 기록

Configmap From File

악분 2022. 10. 8. 09:00
반응형

 

configmap from file이란?

참고자료: https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#create-configmaps-from-directories

파일을 configmap으로 관리하는 방법입니다. 

 

언제 사용할까? 

파일을 쿠버네티스 노드 또는 서버에 저장하지 않고 쿠버네티스로 파일을 관리하고 싶을 때 사용합니다.

 

노드 또는 파일서버에 존재하는 파일을 마운트해서 사용하는 경우가 종종 있습니다. pod에서는 파일을 마운트해서 사용하려면 hostpath 또는 NFS 등 프로토콜을 사용해야 합니다. hostpath를 사용하면 nodeAffinity등 같은 스케쥴 설정이 필요합니다. NFS 등 프로토콜을 사용한다면 방화벽 설정 등이 필요하죠. 

 

단순히 파일을 pod에서 파일을 마운트해서 사용하기 위해 여러가지 설정이 필요한데요. configmap으로 파일을 관리하면 설정없이 바로 pod에서 파일을 마운트할 수 있습니다.

 

configmap으로 관리해야하는 파일 개수가 많으면 관리하기 힘든 단점이 있습니다. 그리고 실수로 configmap을 지우면 파일이 삭제되어 주의가 필요합니다.

 

Configm생성 방법

kubectl로 configmap을 생성할 때 파일을 입력으로 받을 수 있습니다. 실습을 위해 shell 스크립트 파일을 생성하겠습니다. 쉘스크립트는 helloworld를 출력하는 간단한 예제입니다.

#!/bin/sh

echo "helloworld"

 

kubectl create와 —from-file인자를 이용하여 helloworld.sh파일을 configmap으로 생성합니다.

kubectl create configmap helloworld --from-file=./helloworld.sh

 

kubectl describe로 configmap을 확인하면 Data필드에 helloworld.sh서브키가 생성되었습니다. 그리고 값은 helloworld.sh파일 내용이 있습니다.

kubectl describe configmap helloworld

 

kubectl edit으로 확인하면 예쁘게 볼 수 있습니다.

kubectl edit configmap helloworld

 

pod 마운트 예

configmap에 있는 파일은 pod에 마운트될 수 있습니다. 

apiVersion: v1
kind: Pod
metadata:
  name: busybox-test
  labels:
    name: busybox-test
spec:
  containers:
  - name: busybox-test
    image: busybox
    resources:
      limits:
        memory: "32Mi"
        cpu: "50m"
    command:
      - /bin/sh
      - /data/helloworld.sh
    volumeMounts:
      - mountPath: /data
        name: echo
  volumes:
    - name: echo
      configMap:
        name: helloworld

 

kubectl apply로 pod를 생성합니다.

kubectk apply -f pod.yaml

 

pod로그를 보면 쉘 스크립트가 성공적으로 마운트 되고 실행된 것을 확인 할 수 있습니다.

반응형