DevOps/Kubernetes

[ 쿠버네티스 입문: 90가지 예제로 배우는 컨테이너 관리 자동화 표준 ] Chapter11. 시크릿

noahkim_ 2021. 7. 21. 22:59

11.1 시크릿 만들기

 

  • 내장 시크릿
    쿠버네티스 클러스터 안에서 쿠버네티스 API에 접근 시 사용됨
    (serviceAccount 계정의 비밀번호 역할로 쓰임)
  • 사용자 정의 시크릿
    사용자가 만든 시크릿
  1. 명령으로 시크릿 만들기

    ‘Kubectl create secret’
    ‘kubectl create secret generic “시크릿 이름” ‘
    (—from-literal=키=값)

    ' kubectl create secret docker-registry(시크릿타입) private-reg-cred(이름) --docker-username=(dock_user)
    --docker-password=(dock_password) --docker-server=(myprivateregistry.com:5000) --docker-email=(dock_user@myprivateregistry.com) '

  2. 템플릿으로 시크릿 만들기

  • .type
    Opaque : 키-값 형식(기본값). 임의의 데이터 설정 가능
    kubernetes.io/dockerconfigjson : 도커 저장소 인증 정보 저장
    kubernetes.io/tls : TLS 인증서를 저장함
  • .data.username .data.password 필드 값을 base64 문자 인코딩 값을 설정해야

11.2 시크릿 사용하기

 

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

spec.containers[].env[] 부분에서

  • .name 필드 값으로 SECERT_USERNAME 환경변수 사용.
    값은 참조형태(valueFrom)로 얻게 되는데 .secretKeyRef로 알맞은 시크릿 이름과 키값을 건네서 값을 얻어온다

    2. 볼륨 형식으로 파드에 시크릿 제공하기

 

  • spec.containers[].volumeMounts[] : 참조할 볼륨 설정
  • spec.volumes[] : 사용할 볼륨 이름과 secret필드 값으로 시크릿 이름을 적어주어 시크릿값을 가져옴

    볼륨에는 해당 시크릿 값이 디렉터리 형태로 들어있음

 

     3. 프라이빗 컨테이너 이미지를 가져올 때 시크릿 사용하기

 

프라이빗 컨에티너 이미지를 가져오려면 인증 정보가 필요

인증 정보를 시크릿에서 저장한 후 사용함.

 

도커 컨테이너 이미지 저장소용 시크릿을 만드는 ‘docker-registy’ 타입 제공

.type : kubernetes.io/dockerconfigjson 으로 생성됨

 

  • spec.containers[].image : 값으로 private한 이미지를 사용하도록 설정함
  • spec.imagePullSecrets[].name: 이미지 pulling에 사용될 시크릿 이름 

 

    4. 시크릿으로 TLS 인증서를 저장해 사용하기

 

HTTPS 인증서를 저장하는 용도로 시크릿을 사용 할 수 있음.

‘ kubectl create secret tls “시크릿이름” —key “키값” —cert “인증서” ‘