Vault에 저장된 스냅샷 에이전트 구성 사용
Vault에 저장된 스냅샷 에이전트 구성 사용
이 주제에서는 Consul Helm chart가 Vault에 저장된 스냅샷 에이전트 구성을 사용하도록 구성하는 방법을 설명해요. Vault에 시크릿과 정책을 저장하고, 인증 역할을 만든 뒤 Helm chart를 업데이트하는 과정을 거쳐요.
출처: 문서
본문
이 주제에서는 Consul Helm chart가 Vault에 저장된 스냅샷 에이전트 구성을 사용하도록 구성하는 방법을 설명합니다.
개요 (Overview)
Vault에 저장된 스냅샷 에이전트 구성을 사용하려면 Data Integration 섹션에 설명된 단계를 따르세요.
다음 단계를 한 번 완료하세요.
- 시크릿을 Vault에 저장합니다.
- 시크릿에 원하는 수준의 액세스를 승인하는 Vault 정책을 만듭니다.
클러스터의 각 데이터센터에 대해 다음 단계를 반복합니다.
- 정책을 액세스가 필요한 각 Consul on Kubernetes 서비스 계정에 연결하는 Vault Kubernetes 인증 역할을 만듭니다.
- Consul on Kubernetes Helm chart를 업데이트합니다.
사전 요구 사항 (Prerequisites)
Vault와 Consul on Kubernetes 사이의 데이터 통합을 설정하기 전에 다음 사전 요구 사항을 완료하세요.
- Vault as a Secrets Backend 문서의 Systems Integration 섹션의 단계를 읽고 완료합니다.
- Vault as a Secrets Backend 문서의 Data Integration Overview 섹션을 읽습니다.
Vault에 시크릿 저장
먼저 스냅샷 에이전트 구성을 Vault에 저장합니다.
$ vault kv put secret/consul/snapshot-agent-config key="<snapshot agent JSON config>"
Vault 정책 생성
다음으로 이 시크릿에 읽기 액세스를 허용하는 정책을 만들어야 합니다.
path 리소스에서 참조하는 시크릿 경로는 client.snapshotAgent.configSecret.secretName Helm 구성에서 구성할 값과 동일합니다(Update Consul on Kubernetes Helm chart 참조).
snapshot-agent-config-policy.hcl
path "secret/data/consul/snapshot-agent-config" {
capabilities = ["read"]
}
vault policy write CLI 명령을 실행하여 Vault 정책을 적용합니다.
$ vault policy write snapshot-agent-config-policy snapshot-agent-config-policy.hcl
Consul용 Vault 인증 역할 생성
다음으로 이 정책을 Consul 서버 Kubernetes 인증 역할에 추가합니다.
$ vault write auth/kubernetes/role/consul-server \
bound_service_account_names=<Consul server service account> \
bound_service_account_namespaces=<Consul installation namespace> \
policies=snapshot-agent-config-policy \
ttl=1h
예시에 없는 다른 정책이 Consul 서버 서비스 계정과 연결되어 있다면 그 정책들도 포함해야 합니다.
Consul 스냅샷 에이전트의 서비스 계정 이름을 찾으려면 Consul on Kubernetes values 파일로 다음 helm template 명령을 실행할 수 있습니다.
$ helm template --release-name ${RELEASE_NAME} -s templates/server-serviceaccount.yaml hashicorp/consul -f values.yaml
Consul on Kubernetes Helm chart 업데이트
이제 Vault를 구성했으니 Consul Helm chart가 Vault의 스냅샷 에이전트 구성을 사용하도록 구성할 수 있습니다.
values.yaml
global:
secretsBackend:
vault:
enabled: true
consulServerRole: consul-server
client:
snapshotAgent:
configSecret:
secretName: secret/data/consul/snapshot-agent-config
secretKey: key
client.snapshotAgent.configSecret.secretName은 Vault에 있는 시크릿의 경로입니다. Vault 정책에 포함한 경로와 동일해야 합니다. client.snapshotAgent.configSecret.secretKey는 시크릿 데이터 안의 키입니다. Vault에서 스냅샷 에이전트 구성 시크릿을 만들 때 전달한 키와 동일해야 합니다.