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은 제거합니다.