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
'Kubernetes' 카테고리의 다른 글
| [Kubernets] Secret 사용법 2가지(환경 변수로 설정, 볼륨으로 마운트) (0) | 2026.01.10 |
|---|---|
| [Kubernetes] TLS, Docker 레지스트리, Basic, SSH 시크릿 생성 (0) | 2026.01.10 |
| [Kubernetes] Secret 이해 (0) | 2026.01.07 |
| [Kubernetes] 파드에 환경 변수 주입하는 5가지 방법 (0) | 2026.01.07 |
| [Kubernetes] Ingress 이해 (0) | 2025.12.27 |
