Hoe Agent-Lab Vault gebruikt
Agent-Lab gebruikt HashiCorp Vault voor
veilig beheer van secrets: API-sleutels, database-inloggegevens en andere gevoelige waarden
staan in Vault, niet in de database of in omgevingsbestanden. Tijdens het opstarten van de applicatie
maakt de actieve ConfigSource verbinding met
Vault en laadt de configuratiepayload; Integraties slaan
verwijzingen op in de database, terwijl de gevoelige waarden op aanvraag uit Vault worden
opgehaald.
Vault inrichten
Voor lokale ontwikkeling bevatten de Compose-stacks een Vault-server met een
ontwikkelconfiguratie (UI op http://localhost:8200, inlogtoken
dev-only-token). Zie De applicatie uitvoeren.
Richt voor productie de instantie in met de Terraform-module
terraform/08_vault-instance/ uit de deploymenthandleiding — inclusief de
init + unseal-reeks:
kubectl --namespace vault exec vault-0 -- vault operator init \
-key-shares=1 \
-key-threshold=1 \
-format=json > cluster-keys.json
export VAULT_UNSEAL_KEY=$(jq -r ".unseal_keys_b64[]" cluster-keys.json)
kubectl --namespace vault exec vault-0 -- vault operator unseal $VAULT_UNSEAL_KEYDe secret-payload provisionen
VaultConfigSource leest één KV-v2-secret — mount secret, pad
app_secrets — en koppelt het aan de
configuratiesleutels van de applicatie. De sleutels van de payload
staan in de Configuratiereferentie;
schrijf de payload eenmalig weg met de Vault CLI:
vault kv put secret/app_secrets \
api_base_url="https://<agent_lab_fqdn>" \
cdp_url="http://<cdp_host>:9222" \
auth_enabled="true" \
auth_url="https://<auth_fqdn>" \
auth_realm="<realm_name>" \
auth_client_id="<client_name>" \
auth_client_secret="<client_secret>" \
broker_url="redis://:<password>@<redis_host>:6379/0" \
db_url="postgresql://<user>:<pass>@<db_host>:5432/agent_lab" \
db_vectors="postgresql://<user>:<pass>@<db_host>:5432/agent_lab_vectors" \
db_checkpoints="postgresql://<user>:<pass>@<db_host>:5432/agent_lab_checkpoints"Als de app geen statisch VAULT_TOKEN kan (of mag) gebruiken, schakelt de standaardbron
automatisch over op KubernetesVaultConfigSource zodra VAULT_K8S_ROLE is ingesteld
— die authenticeert met het geprojecteerde ServiceAccount-token van de pod, zodat er geen statisch token
hoeft te worden geprovisioned of geroteerd.
Productie
In lijn met onze cloud-native principes raden we de
Vault Kubernetes HA-setup aan.
De Terraform-module 15_agent-lab-dependencies/ koppelt de runtime-inloggegevens; de
app pikt alles op bij het opstarten via
het configuratiecontract.