Web/Kubernetes

Kubernetes Secret

tose33 2024. 1. 8. 15:42

https://subicura.com/k8s/guide/secret.html#secret-%E1%84%86%E1%85%A1%E1%86%AB%E1%84%83%E1%85%B3%E1%86%AF%E1%84%80%E1%85%B5

 

Secret

쿠버네티스에서 비밀번호, SSH 인증, TLS Secret과 같은 보안 정보를 관리하는 방법을 알아봅니다.

subicura.com

 

 

Secret

  • Secret은 ConfigMap과 거의 같다
  • 다른 점은 데이터가 base64로 저장된다
  • 하지만 base64는 암호화가 아니고 쉽게 복호화 가능하다

애초에 Secret은 암호화를 위해 설계된 것이 아니라 쿠버네티스 내에서 실행되는 애플리케이션에서 쉽게 사용할 수 있는 방식으로 민감한 정보를 인코딩하기 위해 설계되었다고 한다.

 

만약 정말로 암호화가 필요하다면 다른 외부 솔루션을 사용해야 한다.

 

 

Secret 만들기

두 개의 텍스트 파일 생성

 

# secret 생성
kubectl create secret generic db-user-pass --from-file=./username.txt --from-file=./password.txt

 

db-user-pass 라는 이름의 secret 생성 

 

secret 생성

 

-o 옵션으로 보기

 

-o yaml 로 보면 base64로 인코딩된 password,username 이 보인다

 

 

설정한 Secret을 환경변수로 연결

apiVersion: v1
kind: Pod
metadata:
  name: alpine-env
spec:
  containers:
    - name: alpine
      image: alpine
      command: ["sleep"]
      args: ["100000"]
      env: # 환경변수 
        - name: DB_USERNAME
          valueFrom:
            secretKeyRef: # Secret 사용
              name: db-user-pass
              key: username.txt
        - name: DB_PASSWORD
          valueFrom:
            secretKeyRef:
              name: db-user-pass
              key: password.txt

 

보면 ConfigMap 사용과 거의 같다는 것을 알 수 있다.