파란하늘의 지식창고
반응형

ConfigMap

https://kubernetes.io/ko/docs/concepts/configuration/configmap/

key-value 쌍으로 이루어진 데이터를 저장하는데 사용하는 API Object이다.
pod는 volume에서 environment variables, command-line argument 로 configmap을 사용할 수 있다.
configmap은 암호화를 제공하지 않으므로 계정/비밀번호 같은 데이터는 secret을 사용하면 된다.

기본적인 구성은 다음과 같다.
일반적인 key/value 쌍으로 이루어진 데이터
key를 파일이름으로, value를 파일의 내용으로 구성할 수도 있다.

apiVersion: v1 
kind: ConfigMap 
metadata: 
  name: game-demo 
data: 
  # 속성과 비슷한 키; 각 키는 간단한 값으로 매핑됨 
  player_initial_lives: "3" 
  ui_properties_file_name: "user-interface.properties" 
  # 파일과 비슷한 키 
  game.properties: | 
    enemy.types=aliens,monsters 
    player.maximum-lives=5     
  user-interface.properties: | 
    color.good=purple 
    color.bad=yellow 
    allow.textmode=true

Secret

https://kubernetes.io/ko/docs/concepts/configuration/secret/

secret은 configMap과 사용이 거의 동일하며 차이는 민감한 데이터를 암호화 처리로 관리한다는 점이다.

내 경우 기존에 다음과 같이 mariadb의 password를 선언하였었다.

apiVersion: apps/v1 
kind: Deployment 
metadata: 
  name: mariadb-deployment 
  labels: 
    app: mariadb 
spec: 
  replicas: 1 
  selector: 
    matchLabels: 
      app: mariadb 
  template: 
    metadata: 
      labels: 
        app: mariadb 
    spec: 
      containers: 
      - name: mariadb 
        image: mariadb 
        ports: 
        - containerPort: 3306 
        env: 
        - name: MARIADB_ROOT_PASSWORD  
          value: "root" 
        args: ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"] 
        volumeMounts: 
        - name: mariadb-volume 
          mountPath: /var/lib/mysql 
      volumes: 
      - name: mariadb-volume 
        persistentVolumeClaim: 
          claimName: mariadb-pvc 

password를 secret으로 다음과 같이 선언하고

apiVersion: v1 
kind: Secret 
metadata: 
  name: mariadb-secret 
  labels: 
    app: mariadb-secret 
data: 
  mariadb-root-password: cm9vdA==

기존의 설정을 다음과 같이 변경하였다.

apiVersion: apps/v1 
kind: Deployment 
metadata: 
  name: mariadb-deployment 
  labels: 
    app: mariadb 
spec: 
  replicas: 1 
  selector: 
    matchLabels: 
      app: mariadb 
  template: 
    metadata: 
      labels: 
        app: mariadb 
    spec: 
      containers: 
      - name: mariadb 
        image: mariadb 
        ports: 
        - containerPort: 3306 
        env: 
        - name: MARIADB_ROOT_PASSWORD 
          valueFrom: 
            secretKeyRef: 
              key: mariadb-root-password 
              name: mariadb 
        args: ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"] 
        volumeMounts: 
        - name: mariadb-volume 
          mountPath: /var/lib/mysql 
      volumes: 
      - name: mariadb-volume 
        persistentVolumeClaim: 
          claimName: mariadb-pvc 

volume 설정을 persistentVolumeClaim으로 사용하게 되었다.

secret의 경우 단순히 base64로 인코딩하여 값을 사용한다.
저장된 secret 에 대한 읽기 쓰기를 제한하여 보안을 관리한다.

반응형
profile

파란하늘의 지식창고

@Bluesky_

도움이 되었다면 광고를 클릭해주세요