TIL

Secret

보안 주의 — 기본 상태는 “암호화 아님”

Uses for Secrets

Use case: dotfiles in a secret volume

Use case: 컨테이너 1개에만 Secret을 한정

Alternatives to Secrets

대안 용도
ServiceAccount + token 같은 클러스터 내 다른 앱에 클라이언트 인증할 때
외부 secret 관리 서비스 HTTPS로 Secret을 제공하는 third-party 도구 (Vault 등)
Custom signer + CertificateSigningRequest X.509 인증서 발급용 커스텀 signer 구현
Device plugin TPM 같은 노드-로컬 암호화 하드웨어를 특정 Pod에 노출

Types of Secret

Built-in Type 용도 필수 key
Opaque 임의의 사용자 정의 데이터 (기본값) 없음
kubernetes.io/service-account-token ServiceAccount 토큰 — (컨트롤러가 채움)
kubernetes.io/dockercfg ~/.dockercfg 직렬화 .dockercfg
kubernetes.io/dockerconfigjson ~/.docker/config.json 직렬화 .dockerconfigjson
kubernetes.io/basic-auth Basic 인증 자격 증명 username 또는 password 중 하나 이상
kubernetes.io/ssh-auth SSH 인증 자격 증명 ssh-privatekey
kubernetes.io/tls TLS 인증서 + 키 tls.crt, tls.key
bootstrap.kubernetes.io/token 노드 부트스트랩 토큰 token-id, token-secret

Opaque

ServiceAccount token

Docker config

kubectl create secret docker-registry my-secret \
  --docker-username=user \
  --docker-password=pass \
  --docker-server=my-registry.example:5000

Basic authentication

SSH authentication

TLS

Bootstrap token

key 설명 필수
token-id 6자리 랜덤 ID O
token-secret 16자리 랜덤 토큰 O
description 토큰 설명 X
expiration RFC3339 UTC 만료 시각 X
usage-bootstrap-<usage> 토큰의 추가 용도 boolean 플래그 X
auth-extra-groups system:bootstrappers 외 추가 인증 그룹 (쉼표 구분) X

Working with Secrets

생성

크기 제한

수정

Pod에서 Secret 사용

Optional Secrets

Volume으로 마운트

환경 변수로 사용

imagePullSecrets

static Pod 제한

Immutable Secrets

Information security for Secrets

전송·저장 보호

컨테이너 격리

RBAC 주의사항