파일 업로드
  1. base64hub
  2. 웹·토큰 도구
  3. Kubernetes Secret 디코더

kubectl YAML용 Kubernetes Secret 디코더

kubectl get secret NAME -o yaml(또는 JSON)의 Secret을 붙여넣으면 모든 data: 값이 표로 디코딩되므로, 키마다 base64 --decode에 파이프할 필요가 없습니다.

무료 가입 없음, 제한 없음 로컬 업로드 없음 모든 키 한 번에 디코딩, 여러 문서 YAML도 지원 업데이트 2026. 10. 27.

브라우저에서 처리됩니다. 이 페이지는 데이터를 어디로도 보낼 수 없습니다 – 확인 방법

Kubernetes Secret을 디코딩하는 방법

  1. kubectl get secret app-db -n shop -o yaml을 실행하고 출력을 상자에 붙여넣으세요. -o json의 JSON도 됩니다.
  2. 표에 각 키와 디코딩된 값, 크기가 나열되고 복사와 Base64 복사 버튼이 있습니다.
  3. 출력 창에는 같은 Secret을 값이 일반 텍스트인 stringData로 다시 쓴 결과가 있습니다. 바이너리 값은 data에 남습니다.
  4. 반대 작업은 Secret 생성으로 바꾸세요. KEY=value 줄을 넣으면 Base64 data가 든 Secret이 나옵니다.

입력은 kubectl get secrets -o yaml의 List, ---로 구분한 여러 문서, Helm으로 렌더링한 매니페스트, .dockerconfigjson만 있는 것, 또는 Base64 값 하나여도 됩니다.

예시: kubectl이 주는 것과 그 의미

apiVersion: v1
data:
  DATABASE_URL: cG9zdGdyZXM6Ly9hcHA6czNjcjN0LVBhNTVAZGI6NTQzMi9zaG9w
  DB_PASSWORD: czNjcjN0LVBhNTUK
  DB_USER: YXBw
kind: Secret
metadata:
  name: app-db
  namespace: shop
type: Opaque
키디코딩된 값크기
DATABASE_URLpostgres://app:s3cr3t-Pa55@db:5432/shop39 B
DB_PASSWORDs3cr3t-Pa55와 줄 바꿈12 B
DB_USERapp3 B

비밀번호는 11자인데 값은 12바이트입니다. 누군가 echo 's3cr3t-Pa55' | base64로 만들었고, 끝의 줄 바꿈 때문에 데이터베이스 로그인이 실패하게 됩니다. 줄 바꿈이 없는 Base64는 czNjcjN0LVBhNTU=입니다.

디코더가 알아보는 것

  • kubernetes.io/tls Secret의 tls.crt와 tls.key 같은 PEM 인증서와 키를 표시합니다. 인증서에는 만료와 SAN을 확인할 수 있는 인증서 디코더 링크가 붙습니다.
  • JSON 값은 보기 좋게 정렬합니다.
  • Java 키스토어 같은 바이너리 값에는 파일 형식, hex 미리보기, 다운로드 버튼이 붙습니다.
  • .dockerconfigjson과 .dockercfg 값은 레지스트리, 사용자 이름, 비밀번호로 나누고 auth를 디코딩합니다. 이 작업이 주목적이라면 .dockerconfigjson 디코더를 쓰세요.

kubectl 한 줄 명령

값 하나. jsonpath 안에서는 키 이름의 점을 이스케이프하세요.

kubectl get secret app-db -o jsonpath='{.data.DB_PASSWORD}' | base64 --decode
kubectl get secret app-tls -o jsonpath='{.data.tls\.crt}' | base64 --decode

모든 값. kubectl 내장 템플릿 함수 base64decode나 jq를 씁니다.

kubectl get secret app-db -o go-template='{{range $k, $v := .data}}{{$k}}={{$v | base64decode}}{{"\n"}}{{end}}'
kubectl get secret app-db -o json | jq '.data | map_values(@base64d)'

줄 바꿈 함정 없이 Secret 만들기:

kubectl create secret generic app-db --from-literal=DB_PASSWORD='s3cr3t-Pa55' --dry-run=client -o yaml

더 많은 셸 예시는 Bash Base64 페이지에 있습니다.

한계와 자주 생기는 문제

  • “이 입력에서 data 또는 stringData가 있는 Secret을 찾지 못했습니다”: 붙여넣은 것이 아마 Deployment나 ConfigMap입니다. ConfigMap 값은 일반 텍스트라 디코딩할 필요가 없습니다.
  • 크기: Secret은 전체 1 MiB로 제한됩니다. Secret 생성은 적용하기 전에 이 제한, 키 이름, DNS 형식의 이름을 확인합니다.
  • YAML 기능: kubectl, Helm, Kustomize가 만드는 것은 블록 스칼라와 여러 문서를 포함해 모두 읽습니다. 앵커, 별칭, 병합 키는 지원하지 않습니다.
  • Helm 릴리스 Secret(sh.helm.release.v1.*)은 Base64 data 값 안에 gzip 데이터의 Base64가 또 들어 있습니다. 바깥 계층을 여기서 디코딩한 뒤 gzip Base64 디코더를 사용하세요.

자주 묻는 질문

kubectl로 Kubernetes Secret을 디코딩하려면 어떻게 하나요?

키 하나라면 kubectl get secret app-db -o jsonpath='{.data.DB_PASSWORD}' | base64 --decode입니다. 모든 키를 한 번에 보려면 -o yaml 출력을 여기에 붙여넣거나, 이 페이지의 go-template이나 jq 한 줄 명령을 쓰세요.

Kubernetes Secret은 암호화되어 있나요?

data 필드는 Base64일 뿐이라 읽기 권한이 있는 누구나 되돌릴 수 있습니다. etcd의 저장 시 암호화는 별도의 클러스터 설정이며, Secret을 누가 읽을 수 있는지는 RBAC가 결정합니다. 인코딩과 암호화의 차이를 참고하세요.

디코딩한 시크릿 끝에 줄 바꿈이 붙는 이유는 무엇인가요?

값을 echo -n 대신 echo로 만들어서 줄 바꿈까지 인코딩되었습니다. 그러면 Base64가 K, o=, Cg==로 끝나는 경우가 많습니다. printf '%s' value | base64나 kubectl create secret --from-literal로 다시 만드세요.

data와 stringData의 차이는 무엇인가요?

data는 Base64 값을 담고, stringData는 API 서버가 쓰기 시점에 대신 인코딩해 주는 일반 텍스트를 받습니다. 읽을 때는 항상 data가 나옵니다. 여기의 출력 창은 Secret을 stringData로 다시 써 주므로 편집해서 다시 적용할 수 있습니다.