Skip to content

feat: 시크릿 관리를 External Secrets + AWS Secrets Manager로 전환 (#55)#56

Merged
eomkyeongmun merged 1 commit into
mainfrom
feat/#55-external-secrets
Jun 1, 2026
Merged

feat: 시크릿 관리를 External Secrets + AWS Secrets Manager로 전환 (#55)#56
eomkyeongmun merged 1 commit into
mainfrom
feat/#55-external-secrets

Conversation

@eomkyeongmun

Copy link
Copy Markdown
Contributor

closes #55

개요

K8s 시크릿(backend-secret, ai-secret)을 External Secrets Operator(ESO) + AWS Secrets Manager로 GitOps화한다. 비밀값은 git에 남지 않고 Secrets Manager에만 보관, ESO는 IRSA로 읽기 권한만 갖는다. (기존: 평문 secret.yaml은 gitignore되어 ArgoCD가 시크릿을 못 만들어 Pod 기동 실패하던 문제 해결)

변경

terraform

  • external-secrets.tf 신규
    • ESO용 IRSA 역할secretsmanager:GetSecretValue/DescribeSecret/ListSecretVersionIdsdgu-cap/*로 최소권한 스코프
    • External Secrets Operator Helm 설치 (차트 0.10.7 고정, installCRDs, 컨트롤러 SA에 role-arn 주입)

k8s (eks overlay 전용)

  • overlays/eks/secretstore/ClusterSecretStore(aws-secretsmanager), IRSA SA(jwt)로 인증
  • overlays/eks/backend/externalsecret.yaml, overlays/eks/ai/externalsecret.yamldgu-cap/backend, dgu-cap/ai에서 dataFrom.extract로 추출 → backend-secret/ai-secret 생성
  • 각 overlay kustomization.yaml에 ExternalSecret 추가
  • apps/secretstore.yaml — ClusterSecretStore용 ArgoCD App (sync-wave: -1로 ExternalSecret보다 선행)

문서

  • README.md — ESO 운영 가이드 추가, Secrets Manager 등록 예시, 기존 SealedSecrets는 (구) 표기

배포 후 운영자 작업 (필수)

ESO는 시크릿을 읽기만 한다. 값 등록은 직접:

aws secretsmanager create-secret --name dgu-cap/backend \
  --secret-string '{"SPRING_DATASOURCE_PASSWORD":"...","JWT_SECRET":"..."}'
aws secretsmanager create-secret --name dgu-cap/ai \
  --secret-string '{"OPENAI_API_KEY":"sk-..."}'

키 이름이 그대로 Pod 환경변수가 된다. 회전은 put-secret-value → ESO가 1h 내 자동 반영.

비고 / 범위

  • 로컬(kind) 은 Secrets Manager 미접근 → 기존 수동 kubectl create secret 유지(ExternalSecret은 eks overlay에만).
  • 기존 sealed-secrets 설치는 본 PR에서 제거하지 않음(후속 정리).
  • terraform fmt 통과, 매니페스트 YAML 검증 완료. (로컬에 kustomize/kubectl 없어 kustomize build 실검증은 클러스터 환경에서 권장)

🤖 Generated with Claude Code

- terraform/external-secrets.tf: ESO용 IRSA 역할(dgu-cap/* 시크릿 읽기 최소권한) + External Secrets Operator Helm 설치(차트 0.10.7 고정)
- k8s overlays/eks/secretstore: ClusterSecretStore(aws-secretsmanager) — IRSA SA(jwt)로 Secrets Manager 인증
- k8s overlays/eks/{backend,ai}: ExternalSecret로 dgu-cap/backend, dgu-cap/ai에서 추출해 backend-secret/ai-secret 생성
- k8s/apps/secretstore.yaml: ClusterSecretStore용 ArgoCD App (sync-wave -1로 ExternalSecret보다 선행)
- README: ESO 운영 가이드 추가, 기존 SealedSecrets는 (구) 표기

로컬(kind)은 Secrets Manager 미접근으로 기존 수동 방식 유지(eks overlay 전용).
실제 시크릿 등록은 운영자가 Secrets Manager에 직접 수행.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@eomkyeongmun eomkyeongmun merged commit db04468 into main Jun 1, 2026
1 check passed
@eomkyeongmun eomkyeongmun deleted the feat/#55-external-secrets branch June 1, 2026 03:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: 시크릿 관리를 External Secrets Operator + AWS Secrets Manager로 전환

1 participant