Kubernetes

Secret 관련 명령어

비번변경 2021. 11. 24. 21:33

ㅣSecret은 암호, 토큰 또는 키와 같은 소량의 중요한 데이터를 저장하는 객체이다. 포드 명세 또는 컨테이너 이미지에 민감 정보가 포함되지 않도록 Secret을 이용해 관리할 수 있다.

ConfigMap과 비슷하지만 기밀 데이터를 보관하기 위한 객체라는 점에서 차이가 있다.

 

Secret 목록 확인

이름, Type, 저장된 데이터 수 등의 정보를 확인할 수 있다.

kubectl get secrets

kubectl get secrets

 

Secret 상세 정보 확인

kubectl describe secrets <NAME>

# 예시
kubectl describe secrets default-token-8dk4h

kubectl describe secrets &lt;NAME&gt;

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

 

실행 결과

kubectl create secret generic &lt;NAME&gt;

 

포드 환경 변수로 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