Print
카테고리: [ Cloud Computing & MSA ]
조회수: 37256

1. 개요

시크릿은 패스워드, 토큰, OAuth, 개인 암호화키 등 민감 정보를 저장하는 용도로 사용한다. 즉 컨테이너 내부에 저장하지 않고 어딘가에 두었다가 실행시점에 컨테이너에 주입한다.


2. 특징

configMap과 비교되는 경우가 있는데 민감하지 않은 데이터는 configMap 리소스를 사용하면 된다.


3. 종류

3.1. 내장 시크릿

쿠버네티스 내부에서 API에 접근 시 사용한다.

클러스터 내부에 ServiceAccount 계정을 생성하면 자동으로 관련 시크릿이 만들어진다. 이 시크릿들을 이용하여 해당 ServiceAccount가 권한을 가진 API에 접근할 수 있게 된다.

3.2. 사용자 시크릿

사용자가 만든 시크릿이다. kubectl create secret 명령어로 만들거나 yaml 파일을 통해서도 만들 수 있다.


4. 사용

4.1. 일반

시크릿은 파드에 환경변수로 제공하거나 볼륨을 통해 파일 형식으로 제공한다.

4.2. docker pull 시 시크릿 사용

Private registry의 이미지를 사용하기 위해서는 인증정보가 필요하다.

kubectl create secret docker-registry dockersecret 명령으로 생성할 수 있다.

4.3. Ingress TLS 적용을 위한 시크릿 생성

kubectl create secret tls 명령으로 생성하거나 yaml 파일 형태로 생성하여 사용한다. (kubectl create -f secret.yaml)

apiVersion: v1
data:
  tls.crt: base64 encoded cert
  tls.key: base64 encoded key
kind: Secret
metadata:
  name: example-tls
type: Opaque

4.4. 네임스페이스 사이에 시크릿 복사

SECRET=mysecret
NS1=ns1
NS2=ns2
kubectl get secret $SECRET --namespace=$NS1 -oyaml | grep -v namespace | kubectl apply --namespace=$NS2 -f -