본문 바로가기

클라우드/Kubernetes(쿠버네티스)

[쿠버네티스] 시크릿

시크릿이란?

비밀번호, OAuth 토큰, SSH키 같은 민감한 정보들을 저장하는 용도로 사용한다.
컨테이너 안에 저장하지 않고 별도로 보관했다가 실제 파드를 실행할 때의 템플릿으로 컨테이너에 제공한다.

시크릿 만들기

  • 내장 시크릿
    • 쿠버네티스 클러스터 안에서 쿠버네티스 API에 접근할 때 사용
    • 클러스터 안에서 사용하는 ServiceAccount라는 계정을 생성하면 자동으로 관련 시크릿을 만든다.
    • 이 시크릿으로 ServiceAccount가 사용 권한을 갖는 API에 저근할 수 있다.
  • 사용자 정의 시크릿
    • 사용자가 만든 시크릿
    • kubeclt create secret 명령으로 만들 수 있고 다른 자원처럼 템플릿으로 만들 수도 있다.

시크릿 사용하기

  • 시크릿은 파드의 환경 변수나 볼륨을 이용한 파일 형식으로 사용할 수 있다.
  • 프라이빗 컨테이너 이미지를 가져올 때 시크릿을 사용할 수 있다.
  • 시크릿으로 TLS 인증서를 저장해 사용할 수 있다.

시크릿 데이터 용량 제한

  • 시크릿 데이터는 etcd에 암호화하지 않은 텍스트로 저장된다.
  • 이때 시크릿 데이터의 용량이 너무 크면 쿠버네티스의 kube-apiserver나 kubelet의 메모리 용량을 많이 차지한다.
  • 따라서 개별 시크릿 데이터의 최대 용량은 1MiB이다.
  • 크기가 작은 시크릿 데이터를 너무 많이 만들어도 같은 문제가 발생할 수 있으므로 전체 시크릿 데이터 용량에 제한을 두는 기능도 도입될 예정이다.
  • 누구가 etcd에 직접 접근한다면 시크릿 데이터의 내용을 확인할 수 있다.
  • etcd에는 이외에도 중요한 데이터가 많이 있으므로 중요한 서비스에 쿠버네티스를 사용 중이라면 etcd접근을 제한해야 한다.
  • 기본적으로 etcd를 실행할 때 etcd관련 명령을 사용하는 API 통신에 TLS인증이 적용되어 있으므로 인증서가 있는 사용자만 etcd에 접근해 관련 명령을 사용할 수 있다.
  • 그외에 etcd가 실행중인 마스터 자체에 접속해서 데이터에 접근하는 것을 막으려고 마스터에 접근할 수 있는 사용자들을 계정 기반이나 IP기반 접근 제어 등으로 제한하는 방법이 있다.
  • etcd에 저장되는 시크릿 데이터를 암호화할 수도 있다. 쿠버네티스 클러스터를 직접 설치해서 사용할 때 별도로 암호화 하는 옵션을 지정해야 한다.

'클라우드 > Kubernetes(쿠버네티스)' 카테고리의 다른 글

[kubernetes] Tekton  (0) 2021.07.25
[쿠버네티스] Helm  (0) 2021.07.08
[쿠버네티스] 시크릿  (0) 2021.06.11
[쿠버네티스] 컨피그맵  (0) 2021.06.09
[쿠버네티스] 레이블과 애너테이션  (0) 2021.06.09
[쿠버네티스] 인그레스  (0) 2021.06.08