VSO 즉시 업데이트
VSO 즉시 업데이트 (Instant updates)
Vault의 이벤트 알림을 구독해 VaultStaticSecret을 즉시 업데이트하는 방법을 다룹니다.
출처: 문서
본문
Vault Secrets Operator(VSO)는 Vault의 이벤트 알림을 구독해서 VaultStaticSecret에 대한 즉시 업데이트를 지원해요.
시작하기 전에
- Vault Secrets Operator가 설치되어 있어야 해요.
- Vault Enterprise 1.16.3 버전 이상을 사용해야 해요.
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