Vassiliy Yegorov a7c637fcac fix
2022-08-24 13:06:22 +07:00
fix
2022-07-29 11:15:49 +07:00
2022-08-24 13:01:06 +07:00
2022-08-23 17:15:45 +07:00
2022-08-23 17:15:45 +07:00
2022-07-27 22:37:33 +07:00
2022-07-28 00:51:41 +07:00
fix
2022-08-24 13:06:22 +07:00
fix
2022-07-28 01:01:40 +07:00
fix
2022-07-29 11:15:49 +07:00
fix
2022-07-31 13:10:57 +07:00
fix
2022-07-28 01:05:09 +07:00

Vault test

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

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

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

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

  1. ./start.sh
  2. export VAULT_ADDR=https://vault.domain.com
  3. vault login

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

  1. прописываем в переменных адрес vault-сервера
  2. запускаем чарт helm upgrade --install --create-namespace -n vault vault helm/vault
  3. если у вас версия куба 1.24 и выше, то создаем токен руками
cat > vault-secret.yaml <<EOF
apiVersion: v1
kind: Secret
metadata:
  name: vault-token-g955r
  annotations:
    kubernetes.io/service-account.name: vault
type: kubernetes.io/service-account-token
EOF

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

  1. vault auth enable kubernetes
  2. подсмотреть имя у VAULT_HELM_SECRET_NAME=vault-token-xxxxx в кубе
  3. TOKEN_REVIEW_JWT=$(kubectl get secret $VAULT_HELM_SECRET_NAME -n vault --output='go-template={{ .data.token }}' | base64 --decode)
  4. KUBE_CA_CERT=$(kubectl config view --raw --minify --flatten --output='jsonpath={.clusters[].cluster.certificate-authority-data}' | base64 --decode)
  5. KUBE_HOST=$(kubectl config view --raw --minify --flatten --output='jsonpath={.clusters[].cluster.server}')
  6. прописываем конфиг соединения
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 "kv/data/secret/vault-test" {
  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 kv put kv/secret/vault-test username='vassiliy' password='password' database='testdb' psqlhost='psql-service'
  2. vault kv get -format=json kv/secret/vault-test | jq ".data.data"
  3. k apply -f k8s/vault-test.yaml

5. Add-ons

  1. restore-root
Description
No description provided
Readme 190 KiB
Languages
Smarty 88.4%
Makefile 8.1%
Shell 3%
HCL 0.5%