ㅣSecret은 암호, 토큰 또는 키와 같은 소량의 중요한 데이터를 저장하는 객체이다. 포드 명세 또는 컨테이너 이미지에 민감 정보가 포함되지 않도록 Secret을 이용해 관리할 수 있다.
ConfigMap과 비슷하지만 기밀 데이터를 보관하기 위한 객체라는 점에서 차이가 있다.
Secret 목록 확인
이름, Type, 저장된 데이터 수 등의 정보를 확인할 수 있다.
kubectl get secrets
Secret 상세 정보 확인
kubectl describe secrets <NAME>
# 예시
kubectl describe secrets default-token-8dk4h
Secret의 네임스페이스, 저장된 데이터 등을 확인할 수 있다.
Secret 생성
create 명령으로 생성할 수 있다.
kubectl create secret generic <NAME>
# --from-literal : 데이터를 문자열로 받음
# 예시
kubectl create secret generic db-secret \
--from-literal=DB_Host=sql01 \
--from-literal=DB_User=root \
--from-literal=DB_Password=password123
실행 결과
포드 환경 변수로 Secret 사용
Secret 내 모든 데이터를 컨테이너 환경 변수로 정의하고자 할 때에는 spec.containers 아래에 envFrom 필드를 추가한다.
기존 포드가 Secret을 사용하도록 수정할 때에는 포드 삭제 후 재생성이 필요한 것 같다.
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: "2021-11-15T11:04:48Z"
labels:
name: webapp-pod
name: webapp-pod
namespace: default
resourceVersion: "759"
uid: 18cc9e3e-d31c-49a5-b645-1b2b64f5426c
spec:
containers:
- image: kodekloud/simple-webapp-mysql
imagePullPolicy: Always
envFrom:
- secretRef:
name: db-secret