profile image

L o a d i n g . . .

시크릿 소개

컨피그맵과 매우 비슷하며, 컨피그맵과 같은 방식으로 사용 가능.
다음의 상황에서 사용

  • 환경변수로 시크릿 항목을 컨테이너에 전달
  • 시크릿 항목을 볼륨 파일로 노출

시크릿 유지 방법

  • 쿠버네티스는 시크릿에 접근해야 하는 파드가 실행되고 있는 노드에만 개별 시크릿을 배포해 시크릿을 안전하게 유지
  • 노드 자체적으로 시크릿을 항상 메모리에만 저장. 물리 저장소에 기록 X

컨피그맵과 시크릿 사용

  • 민감하지 않고, 일반 설정 데이터는 컨피그맵 사용
  • 본질적으로 민감한 데이터는 시크릿을 사용해 키 아래에 보관하는 것이 필요. 설정 파일이 민감한 데이터와 그렇지 않은 데이터를 모두가지고 있다면 해당 파일을 시크릿 안에 저장해야 한다.

기본 토큰 시크릿

모든 파드는 secret 볼륨이 자동으로 연결돼어 있다. 모든 실행 컨테이너는 마운트해서 갖고 잇는 시크릿이 있다.

kubectl get secrets 명령어로 default -token 시크릿을 찾을 수 있다.

$ kubectl get secrets
NAME                  TYPE                                  DATA      AGE
default-token-cfee9   kubernetes.io/service-account-token   3         39d

kubectl describe 명령어로 좀 더 자세히 알아보면 다음과 같다.

$ kubectl describe secrets
Name:        default-token-cfee9
Namespace:   default
Labels:      <none>
Annotations: kubernetes.io/service-account.name=default
             kubernetes.io/service-account.uid=cc04bb39-b53f-42010af00237
Type:        kubernetes.io/service-account-token

Data
====
ca.crt:      1139 bytes
namespace:   7 bytes
token:       eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...

이 시크릿을 가지고 있는 세 가지 항목(ca.crt, namespace, token)은 파드 안에서 쿠버네티스 API 서버와 통신할 때 필요한 모든 것을 가지고 있다.

kubectl describe pod 명령어로 secret 볼륨이 마운트된 것을 볼 수 있다.

Mounts:
  /var/run/secrets/kubernetes.io/serviceaccount from default-token-cfee9

기본적으로 default-token 시크릿은 모든 컨테이너에 마운트되지만, 파드 스펙 안에 있는 서비스 어카운트를 false를 지정하거나, auto-mountService-AccountToken 필드 값을 false로 지정해 비활성화가 가능하다고 한다.

default-token 시크릿은 자동으로 생성되어 각 파드에 자동으로 마운트.

 

컨피그맵과 시크릿 차이점

시크릿

  • 쿠버네티스는 시크릿에 접근해야 하는 파드가 실행되고 있는 노드에만 개별 시크릿을 배포해 시크릿을 안전하게 유지
  • 노드 자체적으로 시크릿을 항상 메모리에만 저장. 물리 저장소에 기록 X
  • 시크릿 항목의 내용은 Base64 인코딩 문자열로 표시된다. (그래서 일반 텍스트뿐만 아니라 바이너리 값도 담을 수 있다. Base64 인코딩은 바이너리 데이터를 일반 텍스트 형식인 YAML이나 JSON 안에 넣을 수 있다.)

컨피그맵

  • 컨피그맵 항목의 내용은 일반 텍스트의 내용으로 표시된다. 

참조

쿠버네티스 인 액션 7장(마르코 룩샤)

복사했습니다!