Files
vault/README.md
Vassiliy Yegorov c3ba7baa48 init
2022-07-27 22:37:33 +07:00

2.3 KiB
Raw Blame History

Vault test

Настраиваем получение логопаса в под из внешнего vault-сервера

Общий порядок действий

  1. поднять vault сервер
  2. поднять heml-чарт
  3. настроить подключение из куба в vault
  4. добавить в vault тестовые секреты, запустить тестовый деплоймент и проверить что секреты получены

1. запуск vault в докере

  1. docker compose up -d

2. запуск heml-чарта

  1. прописываем в переменных адрес vault-сервера
  2. запускаем чарт helm upgrade --install --create-namespace -n vault vault helm/vault

3. подключение из куба в vault

  1. vault auth enable kubernetes
  2. TOKEN_REVIEW_JWT=$(kubectl get secret $VAULT_HELM_SECRET_NAME -n vault --output='go-template={{ .data.token }}' | base64 --decode)
  3. KUBE_CA_CERT=$(kubectl config view --raw --minify --flatten --output='jsonpath={.clusters[].cluster.certificate-authority-data}' | base64 --decode)
  4. KUBE_HOST=$(kubectl config view --raw --minify --flatten --output='jsonpath={.clusters[].cluster.server}')
  5. прописываем конфиг соединения
vault write auth/kubernetes/config \
     token_reviewer_jwt="$TOKEN_REVIEW_JWT" \
     kubernetes_host="$KUBE_HOST" \
     kubernetes_ca_cert="$KUBE_CA_CERT" \
     issuer="https://kubernetes.default.svc.cluster.local"
  1. добавляем полиси доступа
vault policy write vault-test - <<EOF
path "secret/data/vault-test/config" {
  capabilities = ["read"]
}
EOF
  1. формируем роль доступа с куба в вольт
vault write auth/kubernetes/role/vault-test \
     bound_service_account_names=sa-vault \
     bound_service_account_namespaces=vault-test \
     policies=vault-test \
     ttl=24h

4. Запуск тестового деплоя

  1. vault login root
  2. vault kv put secret/vault-test/config username='vassiliy' password='password' database='testdb' psqlhost='psql-service'
  3. vault kv get -format=json secret/vault-test/config | jq ".data.data"
  4. k apply -f vault-test.yaml