VSO 즉시 업데이트

VSO 즉시 업데이트 (Instant updates)

Vault의 이벤트 알림을 구독해 VaultStaticSecret을 즉시 업데이트하는 방법을 다룹니다.

출처: 문서

본문

Vault Secrets Operator(VSO)는 Vault의 이벤트 알림을 구독해서 VaultStaticSecret에 대한 즉시 업데이트를 지원해요.

시작하기 전에

1단계: 이벤트 권한 설정

VaultAuth 역할과 연결된 정책에 다음 권한을 부여해요.

path "/" {
  capabilities = ["read", "list", "subscribe"]
  subscribe_event_types = ["*"]
}

path "sys/events/subscribe/kv*" {
  capabilities = ["read"]
}

팁: Vault 이벤트 알림 권한에 대한 자세한 내용은 Event Notifications Policies를 참고하세요.

2단계: VaultStaticSecret에서 즉시 업데이트 활성화

VaultStaticSecret 스펙에서 syncConfig.instantUpdates=true로 설정해요.

---
apiVersion: secrets.hashicorp.com/v1beta1
kind: VaultStaticSecret
metadata:
  namespace: vso-example
  name: vault-static-secret-v2
spec:
  vaultAuthRef: vault-auth
  mount: <MOUNT>
  type: kv-v2
  path: <PATH>
  version: 2
  refreshAfter: 1h
  destination:
    create: true
    name: static-secret2
  syncConfig:
    instantUpdates: true

디버깅 (Debugging)

VaultStaticSecret 리소스의 쿠버네티스 이벤트를 확인해 VSO가 Vault 이벤트 알림을 구독했는지 확인할 수 있어요.

예제: VSO가 시크릿에 대한 Vault 이벤트 알림을 구독한 경우

$ kubectl describe vaultstaticsecret vault-static-secret-v2 -n vso-example
...
Events:
  Type    Reason               Age              From               Message
  ----    ------               ----             ----               -------
  Normal  SecretSynced         2s               VaultStaticSecret  Secret synced
  Normal  EventWatcherStarted  2s (x2 over 2s)  VaultStaticSecret  Started watching events
  Normal  SecretRotated        2s               VaultStaticSecret  Secret synced

예제: VaultAuth 역할 정책에 필요한 이벤트 권한이 없는 경우

$ kubectl describe vaultstaticsecret vault-static-secret-v2 -n vso-example
...
Events:
  Type     Reason             Age   From               Message
  ----     ------             ----  ----               -------
  Normal   SecretSynced       2s    VaultStaticSecret  Secret synced
  Warning  EventWatcherError  2s    VaultStaticSecret  Error while watching events: 
   failed to connect to vault websocket: error returned when opening event stream
   web socket to wss://vault.vault.svc.cluster.local:8200/v1/sys/events/subscribe/kv%2A?json=true, 
   ensure VaultAuth role has correct permissions and Vault is Enterprise version 
   1.16 or above: {"errors":["1 error occurred:\n\t* permission denied\n\n"]}
  Normal   SecretRotated      2s    VaultStaticSecret  Secret synced

더 알아보기 (Learn more)