본문 바로가기
  • 오늘처럼
소프트웨어 아키텍처/Kubernetes

[Kubernetes] 1-19. Secret 생성 후 파드에 마운트 하기

by bluefriday 2022. 5. 10.
반응형

 

Secret 을 생성하고 해당 Secret을 사용하는 파드를 생성한 후에 파드에서 secret 정보를 확인한다. 상세 조건은 다음과 같다.

  • Secret
    • name : secret1
    •  
  • Secret
    • name : secret2
    • 하단의 특정 값을 환경변수로 지정
      • user=user1
      • pass=1234
  • Pod
    • name : secret-pod
    • secret1 사용 : Readonly 모드로 /tmp/secret1 경로에 마운트
    • secret2 사용 :  APP_USER (user=user1 사용), APP_PASS (pass=1234 사용)

 


먼저 test-namespace를 생성한다.

kubectl create ns test-namespace

 

yaml 파일을 통해 1번째 Secret 을 생성한다.

apiVersion: v1
data:
  halt: IyEgL2Jpbi9zaAo...
kind: Secret
metadata:
  name: secret1
  namespace: test-namespace
  ---
  
  ### Secret 생성
  kubectl apply -f secret1.yaml

 

kubectl 명령어를 사용해 2번째 Secret 을 생성한다.

kubectl create secret -n test-namespace generic secret2 --from-literal=user=user1 --from-literal=pass=1234

 

다음으로, secret 을 사용하는 파드를 생성한다.

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: secret-pod
  name: secret-pod
  namespace: test-namespace
spec:
  tolerations:
  - effect: NoSchedule
    key: node-role.kubernetes.io/master
  containers:
  - args:
    - sh
    - -c
    - sleep 1d
    image: busybox:1.31.1
    name: secret-pod
    resources: {}
    env:
    - name: APP_USER
      valueFrom:
        secretKeyRef:
          name: secret2
          key: user
    - name: APP_PASS
      valueFrom:
        secretKeyRef:
          name: secret2
          key: pass
    volumeMounts:
    - name: secret1
      mountPath: /tmp/secret1
      readOnly: true
  dnsPolicy: ClusterFirst
  restartPolicy: Always
  volumes:
  - name: secret1
    secret:
      secretName: secret1

 

구동된 파드의 정보를 조회하여 secret이 정상적으로 mount 된 것을 확인한다.

kubectl exec -n test-namespace secret-pod -- env | grep APP
APP_PASS=1234
APP_USER=user1

kubectl exec -n test-namespace secret-pod -- find /tmp/secret1
/tmp/secret1
/tmp/secret1/..data
/tmp/secret1/halt
/tmp/secret1/..2019_12_08_12_15_39.463036797
/tmp/secret1/..2019_12_08_12_15_39.463036797/halt


kubectl exec -n test-namespace secret-pod -- cat /tmp/secret1/halt
#! /bin/sh
### BEGIN INIT INFO
# Provides:          halt
# Required-Start:
# Required-Stop:
# Default-Start:
# Default-Stop:      0
# Short-Description: Execute the halt command.
# Description:
...

댓글