
Kubernetes의 Secret은 민감한 정보를 안전하게 저장하고 관리할 수 있도록 설계된 리소스입니다. 비밀번호, API 키, 인증서와 같은 민감한 데이터를 저장할 때 사용합니다.
ConfigMap은 일반 텍스트로 저장되지만, Secret은 Base64로 인코딩되어 저장됩니다.
비밀번호, API 키와 같은 민감한 데이터를 다른 설정값과 분리하여 관리합니다.
Secret은 접근 권한을 세분화하여 보안성을 높일 수 있습니다.
기존 ConfigMap에서 민감한 값을 제거하고 Secret으로 대체합니다.
my-password를 시크릿으로 대체합니다.
spring-config.yaml
apiVersion: v1
kind: ConfigMap
# ConfigMap 기본 정보
metadata:
name: spring-config
# Key-Value 형식으로 설정값 저장
data:
my-account: artp123
spring-secret.yaml
apiVersion: v1
kind: Secret
# Secret 기본 정보
metadata:
name: spring-secret # Secret 이름
# Key-Value 형식으로 값 저장
stringData:
my-password: my-secret-password
apiVersion: apps/v1
kind: Deployment
metadata:
name: spring-deployment
spec:
replicas: 5
selector:
matchLabels:
app: backend-app
template:
metadata:
labels:
app: backend-app
spec:
containers:
- name: spring-container
image: spring-server
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
env:
- name: MY_ACCOUNT
valueFrom:
configMapKeyRef:
name: spring-config # ConfigMap에서 참조
key: my-account
- name: MY_PASSWORD
valueFrom:
secretKeyRef:
name: spring-secret # Secret에서 참조
key: my-password
configMapKeyRef: ConfigMap에서 Key를 참조합니다.secretKeyRef: Secret에서 Key를 참조합니다.$ kubectl apply -f spring-secret.yaml
$ kubectl apply -f spring-config.yaml
$ kubectl apply -f spring-deployment.yaml
$ kubectl rollout restart deployment spring-deployment
