Secret

Yu Sang Min·2025년 5월 13일

K8S

목록 보기
31/32

📌 Secret

  • 컨테이너가 사용하는 password, auth token, ssh key 와 같은 중요한 정보를 저장하고 민감한 구성정보를 base64로 인코딩 해서 한 곳에 모아 관리

❓ConfigMap 과 차이점은?

  • configMap: 컨테이너 구성 정보 한 곳에 모아 관리
  • 민감하지 않은 설정 파일은 configMap 사용, 민감한 데이터 secret 사용

🖥️ Secret 데이터 전달 방법

  • Command-line Argument
  • Environment Variable
  • Volume Mount

Secret 만들기

$ kubectl create secret <Available Commands> name [flags] [options]

💡Available Commands

  • docker-registry : Create a secret for use with a Docker registry
  • generic : Create a secret from a local file, directory or literal value
  • tls : Create a TLS secret
    👉 각 Available Commands에 따라 옵션으로 넣어야 하는 값이 달라진다.
# Secret 조회 명령어

$ kubectl get secret

📡 타입
Opaque : 임의의 사용자 정의 데이터
kubernetes.io/service-account-token : 서비스 어카운트 토큰
kubernetes.io/dockercfg : 직렬화된(serialized) ~/.dockercfg 파일
kubernetes.io/dockerconfigjson : 직렬화된 ~/.docker/config.json 파일
kubernetes.io/basic-auth : 기본 인증을 위한 자격 증명(credential)
kubernetes.io/ssh-auth : SSH를 위한 자격 증명
kubernetes.io/tls : TLS 클라이언트나 서버를 위한 데이터
bootstrap.kubernetes.io/token : 부트스트랩 토큰 데이터


Secret 으로인해 base64로 인코딩된 데이터는 Pod로 전달될때는 평문으로 전달된다!

$ kubectl create secret generic ttabae-secret --from-literal=INTERVAL=2 --from-file=./genid-web-config/ 

📋 절차

  1. 먼저 Secret (또는 configMap)을 만들고
  2. Pod 생성시 yaml 파일 또는 command-line으로 적용시킨다. (환경변수)
    (위 절차는 secret에 등록된 key-value의 일부또는 전체를 적용시키는 것)
  • secret을 volume mount로 전달할 수 도 있다.

🪣 Secret 데이터 용량 제한

  • Secret etcd에 암호화 하지 않은 텍스트로 저장되므로 secret value가 커지면 메모리 용량을 많이 사용하게 됨
  • secret의 최대 크기는 1MB

결론:

  • configMap과 동일 하며 사용방법도 비슷하다, 때문에 자세한 명령어는 이전 글 참조
  • Pod 생성시 만들어진 Secret을 환경변수로 전달하는 방법과 Volume Mount로 전달하는 방법 모두 숙지 할것
profile
React, Node.js, AWS, Git, Github, Github Action, Docker, K8S

0개의 댓글