개발/Infra

(인강복습) 쿠버네티스 어나더 클래스 Sprint 1 - Application 기능으로 이해하기 - Configmap, Secret

희묭 2025. 4. 10. 14:19
반응형

App에 외부변수 및 암호화된 데이를 주입

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: anotherclass-123
  name: api-tester-1231-properties
  labels:
    part-of: k8s-anotherclass
    component: backend-server
    name: api-tester
    instance: api-tester-1231
    version: 1.0.0
    managed-by: dashboard
data:
  spring_profiles_active: "dev"
  application_role: "ALL"
  postgresql_filepath: "/usr/src/myapp/datasource/postgresql-info.yaml"
---
apiVersion: v1
kind: Secret
metadata:
  namespace: anotherclass-123
  name: api-tester-1231-postgresql
  labels:
    part-of: k8s-anotherclass
    component: backend-server
    name: api-tester
    instance: api-tester-1231
    version: 1.0.0
    managed-by: dashboard
stringData:
  postgresql-info.yaml: |
    driver-class-name: "org.postgresql.Driver"
    url: "jdbc:postgresql://postgresql:5431"
    username: "dev"
    password: "dev123"

data.spring_profiles_active = 어느환경인지 설정

data.application_role = 역활

postgresql_filepath = Secret 데이터로 연결할 파일경로

java -Dspring.profiles.active=${spring_profiles.active} 와 같이 Args적용

Secret : Base64로 저장, 복호화가능해서 보안적으로는 큰의미없음

  • Configmap 에 중요정보를 넣어서써도 무관 그러나 환경변수를 로그에 찍거나 의도치않게 노출가능하기에 사용은 지양해야함

환경변수로 주입하냐 볼륨으로 주입하냐의 차이는

환경변수로 주입시 파드를 삭제하고 다시 만들어야적용이되지만 볼륨연결은 그럴필요가 없다

영역파괴의 주범인 Configmap > 커뮤니케이션이 중요

이름때문에 너무 기대가컸던 Secret

  • 타입에 맞는 키가있음 (opaque, docker-registry, tls)
  • 쿠버 권한을 잘관리하면 클러스터내에서 관리해도 문제없음
  • 자체암호화 : 이러면 configmap 에서 써도됨
  • 서드파티 : 예) vault
반응형