이 시나리오에서는 Kubernetes를 사용하여 비밀을 관리하는 방법을 배웁니다.
Kubernetes를 사용하면 환경 변수를 통해 또는 볼륨으로 포드에 탑재되는 비밀을 생성할 수 있습니다.
이를 통해 SSL 인증서 또는 비밀번호와 같은 비밀을 애플리케이션의 배포 아티팩트 내에 비밀번호를 저장하지 않고 안전한 방식으로 인프라 팀을 통해서만 관리할 수 있습니다.
Base64 문자열을 만들고 파일에서 사용할 변수로 저장할 수 있습니다.
username=$(echo -n "admin" | base64)
password=$(echo -n "a62fjbd37942dcs" | base64)
secret yaml
echo "apiVersion: v1
kind: Secret
metadata:
name: test-secret
type: Opaque
data:
username: $username
password: $password" >> secret.yaml
secret 생성하기
kubectl create -f secret.yaml
secret 확인하기
secret 환경변수를 정의한 포드 생성 yaml
SECRET_USERNAME, SECRET_PASSWORD 환경 변수에 name, key 데이터를 정의한다
apiVersion: v1
kind: Pod
metadata:
name: secret-env-pod
spec:
containers:
- name: mycontainer
image: alpine:latest
command: ["sleep", "9999"]
env:
- name: SECRET_USERNAME
valueFrom:
secretKeyRef:
name: test-secret
key: username
- name: SECRET_PASSWORD
valueFrom:
secretKeyRef:
name: test-secret
key: password
restartPolicy: Never
kubectl create -f secret-env.yaml
Pod가 시작되면 채워진 환경 변수를 출력합니다.
Kubernetes는 환경 변수를 채울 때 base64 값을 디코딩합니다.
정의한 원래 username/password 조합이 표시되어야 합니다.
이러한 변수는 이제 API, 데이터베이스 등에 액세스하는 데 사용할 수 있습니다.
포드 확인하기
secret을 메모리에 저장하기 위해 환경 변수를 사용하면 실수로 누출될 수 있습니다.
권장되는 접근 방식은 마운트를 볼륨으로 사용하는 것입니다.
volumes
volumeMounts
컨테이너를 정의할 때 생성된 볼륨을 특정 디렉토리에 마운트합니다.
애플리케이션은 이 경로에서 secret을 파일로 읽습니다.
apiVersion: v1
kind: Pod
metadata:
name: secret-vol-pod
spec:
volumes:
- name: secret-volume
secret:
secretName: test-secret
containers:
- name: test-container
image: alpine:latest
command: ["sleep", "9999"]
volumeMounts:
- name: secret-volume
mountPath: /etc/secret-volume
pod 생성하기
kubectl create -f secret-pod.yaml
/etc/secret-volume/username
/etc/secret-volume/password
'도커&쿠버네티스' 카테고리의 다른 글
[katakoda] Deploying from source onto Kubernetes (0) | 2022.04.03 |
---|---|
[katakoda] Deploy Docker Compose Files with Kompose (0) | 2022.04.02 |
[katakoda] Running Stateful Services on Kubernetes (0) | 2022.03.29 |
[katakoda] Liveness and Readiness Healthcheck 활성 및 준비 상태 점검 (0) | 2022.03.28 |
[katakoda] Networking Introduction (0) | 2022.03.22 |
댓글