민감한 정보들을 저장하는 용도로 사용

컨테이너 안에 저장하지 않고 별도로 보관했다가 실제 파드를 실행할 때의 템플릿으로 컨테이너에 제공

11.1 시크릿 만들기

시크릿

11.1.1 명령으로 시크릿 만들기

txt 파일 만들고 kubectl create secret 명령 사용

Untitled

$ kubectl create secret generic user-pass-secret --from-file=./username.txt --from-file=./password.txt

Untitled

base64로 인코딩

11.1.2 template으로 시크릿 만들기

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

11.2 시크릿 사용하기

11.2.1 파드의 환경 변수로 시크릿 사용하기

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