Kubernetes:Secret
env 파일 적용 방법
.env
파일을 Secret 으로 변환:
Secret 생성 확인
Secret을 Pod에 반영
Secret을 Pod의 환경 변수로 주입하여 사용합니다. Pod 또는 Deployment 정의 파일에서 envFrom 필드를 사용하여 Secret을 환경 변수로 노출할 수 있습니다.
Pod YAML 파일 작성
아래 예시는 my-secret을 Pod의 환경 변수로 주입하는 방법을 보여줍니다:
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: my-container
image: my-image
envFrom:
- secretRef:
name: my-secret
Deployment YAML 파일 작성
아래 예시는 Deployment에서 Secret을 사용하는 방법을 보여줍니다:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: my-image
envFrom:
- secretRef:
name: my-secret
Secret을 파일로 마운트
Secret을 환경 변수로 주입하는 대신, 파일로 마운트하여 사용할 수도 있습니다.
Pod YAML 파일 작성
아래 예시는 Secret을 볼륨으로 마운트하는 방법을 보여줍니다:
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: my-container
image: my-image
volumeMounts:
- name: secret-volume
mountPath: /etc/secrets
readOnly: true
volumes:
- name: secret-volume
secret:
secretName: my-secret
Secret 업데이트 및 재반영
Secret을 업데이트하려면 .env
파일을 수정한 후, Secret을 다시 생성하거나 업데이트합니다. 이전 Secret을 삭제하고 새로 생성하는 방법도 있습니다.
Deployment를 사용 중이라면 Secret 업데이트 후 롤아웃을 재시작해야 변경 사항이 반영됩니다.
모범 사례
- 권한 제어: Secret에 대한 접근 권한을 적절히 제어합니다. RBAC 정책을 설정하여 민감한 정보에 대한 접근을 제한합니다.
- 환경 분리: 개발, 스테이징, 프로덕션 환경별로 Secret을 분리하여 관리합니다. 환경별로 다른 Secret을 사용해 보안성을 높입니다.
- 암호화: Kubernetes에서 Secret은 기본적으로 etcd에 암호화되어 저장됩니다. 추가적으로 Vault 등 외부 시스템을 사용하여 Secret을 관리하면 보안성을 높일 수 있습니다.
- 주기적인 감사: 정기적으로 Secret을 감사하고 관리 상태를 점검합니다. 만료된 정보나 더 이상 사용되지 않는 Secret은 제거합니다.