1 minute read

일지

특이 사항 없음

오늘의 할일

  • 220527 TIL 작성
  • Kubernetes 공부

주요 키워드

K8s

ConfigMap&Secrets

  • ConfigMap
  • Secrets

수업 정리

시크릿(Secret)

  • 컨피그맵과 유사한 키/값 저장소
  • 데이터를 조금 더 안전하게 보관하기 위한 용도
  • 특정 용도로 사용되는 시크릿 유형이 있음

시크릿 유형

  • generic: 일반적인 시크릿의 유형. 컨피그맵과 유사한 유형
    type: Opaque
  • docker-registry: 도커 로그인정보 저장
    type: kubernetes.io/dockerconfigjson
  • tls: TLS 암호화를 하기 위한 키 저장소
    type: kubernetes.io/tls
  • serviceAccount: 사용자가 임의로 지정할 수 있는 유형이 아님. 사용자 계정의 토큰 정보 저장
    type: kubernetes.io/service-account-token

시크릿 리소스 생성

  1. 명령어를 사용하는 방법
    kubectl create secret <시크릿이름> <값을 넣기="" 위한="" 내용="">
    • generic 타입의 시크릿 생성
      생성: kubectl create secret generic mysecret –from-literal=key1=value1
      확인1: kubectl describe secrets mysecret
      확인2: kubectl get secrets mysecret -o yaml
  2. 오브젝트 파일을 사용하는 방법
    시크릿으로 저장할 키의 값을 base4로 변환하여 입력
     apiVersion: v1
     kind: Secret
     metadata:
     name: my-credential
     data:
     ID: dXNlcg==
     PW: UEBzc3cwcmQ=
    

시크릿 데이터 사용

  1. 환경변수 형태로 사용 (개별 키)

     env:
     - name: ID
       valueFrom:
         secretKeyRef:
           name: <Secret이름>
           key: <Key이름>
    
     apiVersion: v1
     kind: Pod
     metadata:
       name: secret-env-pod
     spec:
       containers:
       - name: secret-env-container
         image: ubuntu
         command: ["sleep", "infinity"]
         env:
         - name: ID
           valueFrom:
             secretKeyRef:
               name: my-credential
               key: ID
         - name: PW
           valueFrom:
             secretKeyRef:
               name: my-credential
               key: PW
    
  2. 환경변수 사용 (전체 키)

     envFrom:
     - secretRef:
         name: <시크릿 이름>
    
     apiVersion: v1
     kind: Pod
     metadata:
     name: secret-env-pod
     spec:
     containers:
     - name: secret-env-container
         image: ubuntu
         command: ["sleep", "infinity"]
         envFrom:
         - secretRef:
             name: my-credential
    
  3. 시크릿을 볼륨으로 사용

     spec:
     containers:
         ...
         volumeMounts:
         - name: <볼륨이름>
         mountPath: <마운트위치>
     volumes:
     - name: <볼륨이름>
         secret:
         name: <시크릿이름>
    
     apiVersion: v1
     kind: Pod
     metadata:
     name: secret-volumemount-pod
     spec:
     containers:
     - name: test-container
         image: ubuntu
         command: ["sleep", "infinity"]
         volumeMounts:
         - name: mycredvol
         mountPath: /tmp
     volumes:
     - name: mycredvol
         secret:
         secretName: mycredfile
    

BASE64 Encoding

Byte: 8bit = 2^8 = 256
A-Z, a-z, 0-9, !@#$%^&*()<>?”;
ASCII = American Standard Code for Information Interchange
Byte단위로 글자를 표기 - 모든 Byte의 값을 글자로 표현하지 못함

BASE64

  • 2^6 만큼의 경우의 수를 가지는 단위로 글자를 표기
  • A-Z(26) + a-z(26) + 0-9(10) + ‘+’ + ‘/’ = 64개

000000(A)
000001(B)
000010(C)

111110(+)
111111(/)

01010101 11110000 10101010
→ 010101 011111 000010 101010

ABC → QUJD
$ echo -n ABC | base64

Categories:

Updated:

Leave a comment