Secret 리소스의 타입 중에 Opaque 타입은 일반적인 스키마리스 시크릿을 위한 타입이다. 시크릿 리소스 하나에는 여러 key-value 값들이 저장될 수 있다. 하나의 시크릿에 저장 가능한 사이즈는 1MB 까지이다.

생성하는 4가지 방법을 설명한다.

 

1. 매니페스트에서 생성

일반적인 리소스 생성 방식과 동일하게 kubectl apply -f <매니페스트파일명> 또는 kubectl create -f <매니페스트파일명> --save-config 으로 생성하는 방식이다. 아래 매니페스트는 username, password 를 시크릿으로 생성한다.

apiVersion: v1
kind: Secret
metadata:
  name: sample-db-auth
type: Opaque
data:
  username: cm9vdA== # root
  password: cm9vdHBhc3N3b3Jk # rootpassword

하지만 시크릿 값이 base64 로 되어있어야 한다는 번거로움이 있다. 일반 텍스트로 작성하려면 아래와 같이 data 대신 stringData 항목을 설정한다.

apiVersion: v1
kind: Secret
metadata:
  name: sample-db-auth-nobase64
type: Opaque
stringData:
  username: root
  password: rootpassword

아래 커맨드로 생성 후 조회해보자

$ kubectl create -f sample-db-auth-nobase64.yaml --save-config

$ kubectl get secrets sample-db-auth-nobase64 -o json | jq '.data'
{
  "password": "cm9vdHBhc3N3b3Jk",
  "username": "cm9vdA=="
}

$ kubectl get secrets sample-db-auth-nobase64 -o json | jq -r '.data.username' | base64 --decode
root

 

2. 리터럴 값을 전달하여 생성

kubectl 커맨드로 시크릿을 생성하되, --from-literal 옵션으로 직접 시크릿 key-value 쌍을 전달하는 방식이다. 아래처럼 생성한다.

$ kubectl create secret generic --save-config sample-db-auth \
  --from-literal=username=root --from-literal=password=rootpassword

 

3. envfile 기반 생성

kubectl 커맨드로 시크릿을 생성하되, --from-env-file 옵션으로 시크릿 key-value 쌍들이 정의된 파일을 지정하는 방식이다. Docker 에서 --env-file 옵션을 사용하여 컨테이너를 기동하는 경우에는 그대로 시크릿 이관이 가능하다. 아래처럼 생성한다.

# env-secret.txt 파일의 내용
username=root
password=rootpassword

# 생성 커맨드
$ kubectl create secret generic --save-config sample-db-auth \
  --from-env-file=./env-secret.txt

 

4. 파일의 내용을 value 로 생성

kubectl 커맨드로 시크릿을 생성하되, --from-file 옵션으로 시크릿 key-value 로 사용될 파일들을 지정하는 방식이다. 파일명이 key 가 되고, 파일 내용이 value 가 되기 때문에 아래 내용에 주의한다.

  • 파일명에 확장자를 붙이지 않는다.
  • 파일 내용에 개행이 붙지 않게 한다.

만약 파일명 대신 다른 key 를 사용하고자 한다면 --from-file=<사용할key>=<파일명> 형식으로 입력한다. 파일 내용에 개행이 붙지 않게 하려면 printf 나 echo -n 옵션으로 출력하여 리다이렉션 하면 된다. 아래 커맨드처럼 입력하여 생성한다.

$ printf "root" > ./username
$ printf "rootpassword" > ./password
$ kubectl create secret generic --save-config sample-db-auth \
  --from-file=./username --from-file=./password

 

블로그 이미지

망원동똑똑이

프로그래밍 지식을 자유롭게 모아두는 곳입니다.

,