17235aecdaa4d9d30f0b3876febee2aed22c43e1
Vault test
Настраиваем получение логопаса в под из внешнего vault-сервера
Общий порядок действий
- поднять vault сервер
- поднять heml-чарт
- настроить подключение из куба в vault
- добавить в vault тестовые секреты, запустить тестовый деплоймент и проверить что секреты получены
1. запуск vault в докере
./start.sh
export VAULT_ADDR=https://vault.domain.com
vault login
2. запуск heml-чарта
- прописываем в переменных адрес vault-сервера
- запускаем чарт
helm upgrade --install --create-namespace -n vault vault helm/vault
- если у вас версия куба 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
vault auth enable kubernetes
- подсмотреть имя у VAULT_HELM_SECRET_NAME=vault-token-xxxxx в кубе
TOKEN_REVIEW_JWT=$(kubectl get secret $VAULT_HELM_SECRET_NAME -n vault --output='go-template={{ .data.token }}' | base64 --decode)
KUBE_CA_CERT=$(kubectl config view --raw --minify --flatten --output='jsonpath={.clusters[].cluster.certificate-authority-data}' | base64 --decode)
KUBE_HOST=$(kubectl config view --raw --minify --flatten --output='jsonpath={.clusters[].cluster.server}')
- прописываем конфиг соединения
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"
- добавляем полиси доступа
vault policy write vault-test - <<EOF
path "kv/data/secret/vault-test" {
capabilities = ["read"]
}
EOF
- формируем роль доступа с куба в вольт
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. Запуск тестового деплоя
vault kv put kv/secret/vault-test username='vassiliy' password='password' database='testdb' psqlhost='psql-service'
vault kv get -format=json kv/secret/vault-test | jq ".data.data"
k apply -f k8s/vault-test.yaml
5. Add-ons
Description
Languages
Smarty
88.4%
Makefile
8.1%
Shell
3%
HCL
0.5%