Skip to main content

Secrets

Turaco에서 제공하는 백엔드 및 프론트엔드에 주입을 위한 Secret 리소스

Secrets는 쿠버네티스에 배포되는 리소스입니다. 컨테이너에 전달되는 데이터들은 일반적인 데이터이지만 보안이 유지되어야 하는 자격증명 및 개인 암호화 키와 같은 민감 정보도 포함됩니다. 이러한 정보를 보관하고 배포하기 위해 쿠버네티스의 Secret이라는 별도의 오브젝트를 제공합니다.

Secret은 "키-값" 쌍을 가진 맵이며 쿠버네티스의 ConfigMap과 유사하며 아래와 같은 방법으로 컨테이너에 전달할 수 있습니다.

  • 환경 변수를 통한 노출
  • 볼륨 파일을 통한 노출

Turaco에서는 각각의 방법에 따라 간단하게 설정하여 주입할 수 있는 방법을 제공합니다.

본 챕터에서는 Secret 컴포넌트에 대한 사용법을 설명합니다.


컴포넌트 배치

Secret 컴포넌트는 아키텍처 설계 화면 (이하 디자이너 화면)에서 좌측에 위치한 컴포넌트 목록에서 Configuration 카테고리에 있습니다.

  1. 설계화면 왼쪽 컴포넌트 리스트 화면에서 Secret 컴포넌트를 선택 후 디자이너 화면으로 드래그 & 드롭합니다.

컴포넌트배치

  1. 배치된 Secret 컴포넌트에 대한 이름과 설명을 입력 후 확인 버튼을 클릭합니다. 이름과 설명은 필수 입력값이며 입력하지 않으면 확인 버튼이 활성화되지 않습니다.
info

Secret 컴포넌트는 백엔드 및 프론트엔드 컴포넌트와 연동되어 동작하며 최소한 1개 이상의 대상 컴포넌트와 연결이 되어야 합니다. 설정이 완료되면 백엔드 및 프론트엔드 컴포넌트와 연결을 해야 대상 컴포넌트가 배포 되었을때 컨테이너의 환경 변수 및 볼륨으로 주입됩니다.


속성 설정

시크릿 타입 설정

Kubernetes의 Secret은 일반적인 사용 시나리오를 위해 몇가지 빌드인 타입을 제공합니다.Turaco에서 지원하는 시크릿 타입 정보는 아래를 참고하세요.

  • Opaque -> 임의의 사용자 정의 데이터
  • kubernetes.io/service-account-token -> 서비스 어카운트 토큰
  • kubernetes.io/dockercfg -> 직렬화 된(serialized) ~/.dockercfg 파일
  • kubernetes.io/dockerconfigjson -> 직렬화 된 ~/.docker/config.json 파일
  • kubernetes.io/basic-auth -> 기본 인증을 위한 자격 증명(credential)
  • kubernetes.io/ssh-auth -> SSH를 위한 자격 증명
  • kubernetes.io/tls -> TLS 클라이언트나 서버를 위한 데이터
  • bootstrap.kubernetes.io/token -> 부트스트랩 토큰 데이터

  1. Secret 컴포넌트를 선택 후 오른쪽에 나타나는 속성창에서 "시크릿 타입" 설정에서 드롭다운 메뉴를 선택합니다.

  2. 사용하고자 하는 시크릿 타입을 선택합니다.

참조 타입 설정

타입은 Secret가 컨테이너에 어떤 형태로 사용할 것인지 사용 타입을 지정합니다.

  1. 설정하고 있는 Secret이 컨테이너에 어떤 형태로 주입할 것인지 결정할 수 있습니다.
    드롭다운 메뉴를 클릭하면 선택 가능한 항목이 표시됩니다.

  2. 메뉴 중 사용하고자 하는 시크릿 타입을 선택합니다.

  • File -> 볼륨 마운트 방식의 파일 형태로 사용
  • Environment -> 컨테이너의 환경 변수 형태로 사용

데이터 형식 설정

쿠버네티스의 리소스에는 Data 와 stringData 의 두 가지 맵이 포함되어 있습니다. 두 가지 맵의 차이는 아래와 같습니다.

  • Data -> base64로 인코딩된 임의의 데이터를 기입하는 데 사용
  • stringData -> 편의를 위해 제공되며, 같은 데이터를 인코딩되지 않은 문자열 사용
info

Secret의 Data 및 stringData은 '영숫자', ' - ', ' _ ' 그리고 ' . ' 로 구성되어야 합니다.


  1. Secret의 데이터 타입을 선택합니다.
    드롭다운 메뉴를 클릭하면 선택 가능한 항목이 표시됩니다.

  2. 메뉴 중 사용하고자 하는 데이터 타입을 선택합니다.

  • Data -> Base64로 인코딩해서 사용
  • StringData -> Base64로 인코딩 되지 않은 문자열 사용

데이터 설정

'데이터 형식'까지 정의가 되었다면 이제 데이터를 설정해야 합니다. 데이터는 '키-값' 형태로 설정할 수 있으며, '+ADD' 버튼을 통해 여러개의 데이터를 설정할 수 있습니다.

데이터설정

  1. '+ADD' 버튼을 클릭하여 데이터 입력 항목을 추가합니다.드롭다운 메뉴를 클릭하면 선택 가능한 항목이 표시됩니다.
  2. 데이터 입력을 위한 추가적인 입력 항목이 표시됩니다.
  3. 추가 속성 입력부분에 키값을 입력합니다.
  4. 값 입력시 3가지 타입이 있습니다. 원하는 항목을 선택합니다.
  5. 추가적으로 다른 형식으로 값을 입력하시려면 드롭다운 메뉴을 선택합니다. 아래와 같은 3가지 타입을 선택할 수 있습니다.
  • Single-Line
  • Multi-Line(Folded block, >-)
  • Multi-Line(Literal block, |-)
  1. 값 항목에 원하는 내용을 입력합니다.

Secret의 경우, 컨테이너가 시작될때 해당 값을 참조합니다.
Secret이 정상적으로 설정되지 않으면 Secret을 주입하고자 하는 대상 컨테이너가 시작 중 'Pending' 상태로 될 수 있습니다.

Block-scalar 란?

Yaml 형식의 파일에 대한 Block Scalar 방식은 여기를 참고하세요.