민감한 정보들을 저장하는 용도로 사용
컨테이너 안에 저장하지 않고 별도로 보관했다가 실제 파드를 실행할 때의 템플릿으로 컨테이너에 제공
시크릿
txt 파일 만들고 kubectl create secret 명령 사용
$ kubectl create secret generic user-pass-secret --from-file=./username.txt --from-file=./password.txt
base64로 인코딩
apiVersion: v1
kind: Secret
metadata:
name: user-pass-yaml
type: Opaque
data:
username: dXNlcm5hbWu=
password: cGfzc3dvcmQ=
base64 문자 인코딩 값을 넣어야 함
$ echo -n "username" | base64
$ echo -n "password" | base64
deployment-secret01.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: secretapp
labels:
app: secretapp
spec:
replicas: 1
selector:
matchLabels:
app: secretapp
template:
metadata:
labels:
app: secretapp
spec:
containers:
- name: testapp
image: arisu1000/simple-container-app:latest
ports:
- containerPort: 8080
env:
- name: SECRET_USERNAME
valueFrom:
secretKeyRef:
name: user-pass-yaml
key: username
- name: SECRET_PASSWORD
valueFrom:
secretKeyRef:
name: user-pass-yaml
key: password
---
apiVersion: v1
kind: Service
metadata:
labels:
app: secretapp
name: secretapp-svc
namespace: default
spec:
ports:
- nodePort: 30900
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: secretapp
type: NodePort