VSO CSI 드라이버

VSO CSI 드라이버 (VSO CSI driver)

CSI 드라이버로 쿠버네티스 시크릿을 거치지 않고 파드에 시크릿을 직접 마운트하는 방법을 다룹니다.

출처: 문서

본문

Enterprise에요. 적절한 Vault Enterprise 라이선스가 필요합니다.

Vault Secrets Operator는 Vault 시크릿을 네이티브 쿠버네티스 시크릿으로 클러스터에 저장할 수 있게 해 주지만, 시크릿을 보호된 시크릿으로 쿠버네티스 파드에 직접 제공하려면 Vault Secrets Operator CSI 드라이버를 설치해야 해요.

CSI 드라이버는 파드 볼륨 라이프사이클에 연결되어, 애플리케이션이 Vault의 시크릿 데이터를 임시 볼륨(ephemeral volumes)으로 컨테이너에 직접 마운트해서 받게 해 줍니다. 이 임시 볼륨은 애플리케이션 파드 자체와 같은 라이프사이클을 가져요.

시크릿 정보는 새로 요청하는 파드가 온라인 상태가 되거나, 요청한 파드의 컨테이너가 크래시하거나 종료될 때마다 갱신됩니다.

Vault Secrets Operator CSI 드라이버는 다음을 지원해요.

  • 여러 플러그인의 여러 시크릿 동기화. 지원 플러그인:
  • 애플리케이션 파드와 Vault 사이의 인증을 위한 신뢰된 오케스트레이터(trusted orchestrator) 로서, response-wrapped AppRole 시크릿 ID의 자동 생성과 마운트.
  • Helm 기반 설치.
  • 시크릿 데이터 변환.

Vault Secrets Operator CSI 드라이버가 지원하지 않는 것:

보호된 시크릿을 Vault Secrets Operator 인스턴스와 함께 사용하려면 Vault Secrets Operator CSI 드라이버 설정 가이드를 참고하세요.

시크릿 흐름: 기존 VSO vs CSI 드라이버

기존 워크플로에서는 Vault Secrets Operator가 Vault 시크릿을 etcd에 저장된 쿠버네티스 시크릿으로 캐시하고, VaultStaticSecret이나 VaultDynamicSecret 같은 커스텀 리소스의 변경을 감시해요. 리소스 정의가 바뀌면 Vault Secrets Operator가 연결된 쿠버네티스 시크릿의 시크릿 데이터를 새 정보로 덮어씁니다.

CSI 드라이버 워크플로에서는 Vault Secrets Operator가 시크릿을 쿠버네티스 시크릿으로 캐시하지 않기 때문에 etcd에 시크릿을 저장하지 않아요. 대신 드라이버는 CSISecrets라는 커스텀 리소스(CR)의 변경을 감시합니다. CSISecrets 리소스에는 가져올 시크릿의 선언적 목록과, 지정된 파드만 그 시크릿을 마운트할 수 있게 하는 접근 제어 구성이 들어 있어요. 승인된 파드가 CSISecrets 리소스를 볼륨 마운트로 참조하며 시작되면, Vault Secrets Operator CSI 드라이버는 파드의 모든 참조 컨테이너에 연결된 시크릿으로 그 볼륨을 채웁니다.

파드는 CSISecrets 리소스의 모든 시크릿이 구성된 경로(예: /var/run/csi-secrets)에 개별 파일로 마운트된 상태로 시작해요. 드라이버는 각 파일을 vaultStaticSecrets 또는 vaultAppRoleSecretIDs 목록에서의 위치를 나타내는 숫자(0부터 시작)로 인덱싱합니다. 예를 들어 static_secret_0_secret, static_secret_1_secret, ..., static_secret_N_secret, 또는 app_role_N_wrap_info.json처럼요.

더 알아보기 (Learn more)