Post

03 ConfigMap/Secret

03 ConfigMap/Secret

1. 환경변수

1. 환경변수

  • 환경변수로 등록한 값을 설정하는 것
  • 스프링부트에서 @Value로 값을 획득하는 것들
    1
    2
    
     @Value("${MY_PASSWORD:default}")
     private String myPassword;
    

2. deployment yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  ~~~~~~
   template:
     metadata:
       labels:
        app: backend-app
     spec:
       containers:
         - name: spring-container
           image: spring-server
           imagePullPolicy: IfNotPresent 
           ports:
            - containerPort: 8080
           env: # 환경변수 등록 
            - name: MY_ACCOUNT
              value: ACCOOUNT value
            - name: MY_PASSWORD
              value: pwd1234

2. ConfingMap

1. ConfingMap

  • Spring Boot에서는 설정값을 application.yml / Nest.js에서도 설정값을 .env 으로 관리
  • 쿠버네티스에서 변수를 관리하는 역할을 가진 오브젝트를 컨피그맵(ConfigMap)이라고 함.
  • 기존 Deployment로 환경변수를 설정하게 되면 local/dev/sit/prd등 환경에서 고정값을 사용하게됨.
  • 따라서 별도 파일에서 환경에 맞게 분리 사용함.

2.사용

1.configMap 파일 생성

  • 파일명 고정값 X
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    apiVersion: v1
    kind: ConfigMap
      
    # ConfigMap 기본 정보
    metadata:
      name: spring-config # ConfigMap 이름
      
      # Key, Value 형식으로 설정값 저장
    data:
      my-account: accountValue
      my-password: password123
    

2. 도커파일 변동사항

1
2
3
4
5
6
7
8
9
10
11
12
13
 ~~~~
 # 기존 환경변수 입력한 곳
  env:
   - name: MY_ACCOUNT
     valueFrom:
       configMapKeyRef:
         name: spring-config # ConfigMap의 이름 / 생성한 configMap에서 metadata -> name 설정한 값
         key: my-account # ConfigMap에 설정되어 있는 Key값
    - name: MY_PASSWORD
      valueFrom:
        configMapKeyRef:
          name: spring-config
          key: my-password

3. config 등록

1
  kubectl apply -f spring-config.yaml

3. Secret

1. Secret

  • 시크릿(Secret)은 컨피그맵(ConfigMap)과 비슷하게 환경 변수를 분리해서 관리하는 오브젝트
  • 시크릿(Secret)은 비밀번호와 같이 보안적으로 중요한 값을 관리하기 위한 오브젝트

2. 사용

1. sercret 파일 생성

  • 파일명 고정값 X ``` apiVersion: v1 kind: Secret # Secret 기본 정보

metadata: name: spring-secret # Secret 이름

1
2
3
# Key, Value 형식으로 값 저장
stringData:
  my-password: my-secret-password   ```

2. 도커파일 변동사항

1
2
3
4
5
6
7
8
9
10
11
12
13
 ~~~~
 # 기존 환경변수 입력한 곳
  env:
   - name: MY_ACCOUNT
     valueFrom:
       configMapKeyRef: # 기존 config 방식
         name: spring-config 
         key: my-account 
    - name: MY_PASSWORD
      valueFrom:
       secretKeyRef:  # sercret 방식
          name: spring-secret
          key: my-password

3. secret 등록

1
   kubectl apply -f spring-secret.yam
This post is licensed under CC BY 4.0 by the author.