[Kubernetes]ConfigMap, Secret

ksp7331·2024년 2월 13일

ConfigMap, Secret

두 객체는 모두 Pod에 외부 변수를 추가해주는 기능을 가지고 있다. 두 객체의 차이점은 Secret은 데이터를 암호화해서 저장한다는 것이다. 데이터를 컨테이너에서 사용할 때 복호화한다.

kubectl 리소스명

ConfigMap

cm, configmap, configmaps

Secret

secret, secrets

사용방법

1. Literal

객체에 값을 직접 지정해서 configMap이나 secret을 만드는 방식이다.

config

data 속성의 값으로 key: value형태의 데이터를 지정한다. value에는 반드시 string값이 들어가야 한다.

Secret

config와 마찬가지로 key: value형태의 데이터를 지정한다. value값은 반드시 Base64로 인코딩된 값을 넣어야 한다.

apiVersion: v1
kind: ConfigMap
metadata:
  name: cm-01
data:
  user: dev
---
apiVersion: v1
kind: Secret
metadata:
  name: sec-01
data:
  Key: aGVsbG8=
---
apiVersion: v1
kind: Pod
metadata:
  name: pod-cm
  labels:
    type: web
spec:
  containers:
  - name: container
    image: ksp7331/sp-app:1.2
    envFrom:
    - configMapRef:
        name: cm-01
    - secretRef:
        name: sec-01

위와 같이 설정할 경우 pod-cm의 환경변수 값에 user=dev, Key=hello가 들어가게 된다.

2. File

파일을 이용해서 configMap이나 secret을 만드는 방식이다.

ConfigMap

kubectl create configmap 명령어로 configMap을 생성할 수 있다.

> echo "World" >> file-c.txt
> kubectl create configmap cm-file --from-file=./file-c.txt
> kubectl describe cm/cm-file
Name:         cm-file
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====

BinaryData
====
file-c.txt: 16 bytes

위와 같이 파일을 이용해 configMap을 만들면 파일 이름이 key이고 파일 내용이 value인 configMap이 만들어진다.

Secret

kubectl create secret generic 명령어로 secret을 생성할 수 있다.

> echo "Hello" >> file-s.txt
> kubectl create secret generic sec-file --from-file=./file-s.txt
> kubectl describe secret/sec-file
Name:         sec-file
Namespace:    default
Labels:       <none>
Annotations:  <none>

Type:  Opaque

Data
====
file-s.txt:  16 bytes

3. Volume Mount

configMap을 volume으로 mount해서 사용할 수 있다.

apiVersion: v1
kind: Pod
metadata:
  name: pod-mount
spec:
  containers:
  - name: container
    image: ksp7331/sp-app:1.1
    volumeMounts:
    - name: file-volume
      mountPath: /mount
  volumes:
  - name: file-volume
    configMap:
      name: cm-file

위와 같이 pod를 생성한 후 pod에 들어가보면 configMap을 만드는데 사용했던 파일이 있는것을 확인할 수 있다.

0개의 댓글