Kubernetes Object: ConfigMap & Secret

bo-yoon·2021년 9월 15일
0

kubernetes

목록 보기
7/10

ConfigMap 이란?

쿠버네티스 설정 정보를 저장하는 리소스

기본 base

인자

쿠버네티스 컨테이너를 정의할 때, ENTRYPOINT 와 CMD 둘 다 재정의 할 수 있다.

kind: Pod
spec:
  containers:
  - image: some/image
    command: ["/bin/command"]
    args: ["arg1","arg2","arg3"]
  • 여기서 command 는 컨테이너 안에서 실행되는 실행파일
  • args 는 실행파일에 전달되는 인자를 의미

환경변수

환경 변수는 파드 레벨이 아닌 컨테이너 레벨로 정의한다. 그래서 아래 파드 yaml 파일 처럼 환경 변수를 컨테이너 정의해 포하해서 전달한다.

apiVersion: v1
kind: Pod
metadata:
  name: fortune2s
spec:
  containers:
  - image: luksa/fortune:env
    env:
    - name: INTERVAL
      value: "30"
    name: html-generator

또한 다음과 같이 변수 값에서 다른 환경 변수를 참조 가능하다.

env:
- name: FIRST_VAR
  value: "foo"
- name: SECOND_VAR
  value: "$(FIRST_VAR)bar"

이렇게 되면 "$(FIRST_VAR)bar" 는 foobar 로 읽힌다

하지만 이것은 개발로 치면 하드코딩이다. 값을 가져오는 것 자체는 효율적이지만 운영과 개발 등 나눠져 있는 환경을 위해 서로 분리된 파드 정의가 필요하다

그럴때 사용하는 것이 Configmap 이다



configmap

쿠버네티스에서는 설정 옵션을 컨피그맵이란 설정을 키벨류로 구성된 맵형 오브젝트로 분리할 수 있다.

애플리케이션 컨테이너가 포함되어 있는 파드는 컨피그맵을 이름으로 참조하기 때문에 각 환경에 맞는 설정을 사용할 수 있다.

configmap을 생성하고 사용하는 방법은 여러가지가 있다

configmap 생성 방법

첫번째는 우리에게 익숙한 kubectl 명령어를 사용해 변수를 넣어 configmap 을 생성하는 것이다

kubectl create configmap sample-config --from-literal=sleep-interval=25

위의 명령어를 사용하면 sleep-interval=25 라는 변수가 생성된다

여러개의 키벨류를 넣고 싶으면 아래처럼 해주면 된다

kubectl create configmap sample-config --from-literal=sleep-interval=25 --from-literal=mystate=sleeping

또한 yaml 파일 기반으로 생성할 수도 있다

kubectl get configmap sample-config -o yaml > sample-config.yaml 로 yaml 파일을 추출한 뒤

삭제하고(kubectl delete -f) 생성(kubectl create -f) 해보자

apiVersion: v1
data:
  sleep-interval: "25"
kind: ConfigMap
metadata:
  creationTimestamp: "2021-09-15T13:25:53Z"
  name: sample-config
  namespace: default
  resourceVersion: "1694720"
  uid: 2e02fc38-92a8-4d4b-b5d4-5ff61e0e524f

또한 이렇게 일일히 값을 줄 수도 있지만 파일을 참조하게 하여 바라보게 컨피그맵을 생성할 수 있다.

kubectl create configmap sample-file-config --from-file=file.conf

이러면 명령어를 실행한 디렉토리에서 file.conf 를 찾아서 적용한다

또는 디렉토리의 모든 파일도 아래의 명령어로 가져와 적용할 수 있다

kubectl create configmap my-config --from-file=/path/to/dir

위의 두개의 옵션을 섞어쓸 수도 있다

profile
개발 로그 🍎 🍎 🍎

0개의 댓글