컨테이너화 플러그인

컨테이너화 플러그인

외부 플러그인은 Vault 인스턴스의 사용자와 환경 변수를 공유하는 서브프로세스로 기본 실행돼요. Linux에서 Vault 인스턴스를 관리하는 관리자는 외부 플러그인을 컨테이너에서 실행하도록 선택할 수 있어요. 플러그인을 컨테이너에서 실행하면 개별 플러그인 간, 그리고 플러그인과 Vault 간의 격리가 높아져요.

출처: 문서

본문

Vault는 다른 시스템과 통합을 지원하는 다양한 내장 플러그인을 제공해요. 예를 들어 플러그인으로 인증 서비스와 앱 신원 정보를 교환해 Vault 토큰을 받거나, 데이터베이스 자격 증명을 관리할 수 있어요. 외부 플러그인을 Vault 인스턴스에 등록해 Vault 서버의 기능을 확장할 수도 있어요.

시스템 요구 사항

  • Vault 인스턴스가 Linux에서 실행 중이어야 해요.
  • 환경에서 Vault가 Docker Engine API에 로컬로 접근할 수 있어야 해요. Vault는 Docker SDK를 사용해 컨테이너화 플러그인을 관리해요.
  • 유효한 컨테이너 런타임이 설치되어 있어야 해요. Vault는 기본적으로 runsc 런타임을 지정하므로 컨테이너 런타임으로 gVisor 설치를 권장해요.
  • 모든 플러그인 컨테이너 이미지를 로컬에 풀(pull)해서 사용할 수 있어야 해요. Vault는 현재 플러그인 등록 과정의 일부로 이미지 풀링을 지원하지 않아요.

플러그인 요구 사항

모든 플러그인은 컨테이너화되기 위해 다음과 같은 기본 요구 사항이 있어요.

  • 플러그인이 최소 v1.6.0의 HashiCorp go-plugin 라이브러리로 빌드되어야 해요.
  • 이미지 엔트리포인트가 플러그인 바이너리를 실행해야 해요.

일부 구성은 지원되는 구성에 나열된 대로 컨테이너 이미지에 대한 추가 요구 사항이 있어요.

지원되는 구성

Vault의 컨테이너화 플러그인은 다양한 구성과 호환돼요. 특히 다음과 같은 구성에서 테스트되었어요.

  • 기본 및 rootless Docker.
  • OCI 호환 런타임인 runsc와 runc.
  • root 및 non-root 사용자로 실행되는 플러그인 컨테이너 이미지.
  • mlock 비활성화 또는 활성화.

모든 조합이 동작하는 것은 아니며 일부는 추가 요구 사항이 있어 아래에 나열해요. 여러 헤딩과 일치하는 구성을 사용한다면 각 일치하는 헤딩의 요구 사항을 결합해야 해요.

runsc 런타임

  • runsc 런타임에 추가 --host-uds=create 플래그를 전달해야 해요.

rootless Docker와 runsc 런타임

  • runsc 런타임에 추가 --ignore-cgroups 플래그를 전달해야 해요. 참고: 이 구성에서는 Cgroup 한도가 현재 지원되지 않아요.

rootless Docker와 non-root 컨테이너 사용자

  • rootless가 활성화된 컨테이너 플러그인 런타임을 사용해야 해요.
  • 파일시스템이 Posix 1e ACL을 지원해야 해요(대부분의 최신 Linux 파일시스템에 기본 제공).
  • gVisor의 runsc 런타임에서만 지원돼요.

rootless Docker와 mlock 활성화

  • gVisor의 runsc 런타임에서만 지원돼요.

non-root 컨테이너 사용자와 mlock 활성화

  • 플러그인 바이너리에 IPC_LOCK capability를 설정해야 해요.

컨테이너 생명주기와 메타데이터

다른 외부 플러그인과 마찬가지로 Vault는 플러그인 컨테이너의 생명주기를 자동으로 관리해요. 플러그인이 대역 외(out of band)로 종료되면 Vault는 해당 플러그인이 처리해야 하는 요청을 처리하기 전에 재시작해요. Vault는 플러그인이 멀티플렉싱을 지원하면 여러 마운트가 같은 컨테이너로 서비스되도록 멀티플렉스해요.

Vault는 각 플러그인 컨테이너에 표준 메타데이터 집합으로 레이블을 지정해 컨테이너 소유자를 식별하는 데 도움을 줘요. 이 메타데이터에는 클러스터 ID, Vault 자체의 프로세스 ID, 플러그인의 이름·유형·버전이 포함돼요.

플러그인 런타임

플러그인 컨테이너에 대한 더 세밀한 제어가 필요한 사용자는 "플러그인 런타임" API로 더 세분화된 설정을 할 수 있어요. 자세한 내용은 vault plugin runtime CLI 문서를 참조하세요.

더 알아보기 (Learn more)