From 05d44d2e519ece02e1c2043024130e65550c2cd7 Mon Sep 17 00:00:00 2001 From: hermes-agent Date: Thu, 17 Sep 2026 17:45:33 +0000 Subject: [PATCH] =?UTF-8?q?fix(vault):=20kubectl=20=D0=B1=D0=B5=D0=B7=20-i?= =?UTF-8?q?=20=D0=B8=20=D1=81=20<=20/dev/null=20=E2=80=94=20exec=20=D1=81?= =?UTF-8?q?=D1=8A=D0=B5=D0=B4=D0=B0=D0=BB=20stdin=20=D1=86=D0=B8=D0=BA?= =?UTF-8?q?=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vault/mod.just | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/vault/mod.just b/vault/mod.just index 464b751..67889cd 100644 --- a/vault/mod.just +++ b/vault/mod.just @@ -13,6 +13,10 @@ set default-script # кластеру, и смысл ручного unseal (PVC без ключей бесполезен) пропадёт. # Копии ключей держи в менеджере паролей и на бумаге: они показываются один раз # при `vault operator init`. +# +# kubectl зовём БЕЗ -i и всегда с < /dev/null: exec с -i подключает stdin +# контейнера к нашему stdin, а это stdin файла ключей в цикле ниже — после первого +# ключа цикл получал EOF и распечатывал Vault одной долей. keys_file := env('VAULT_UNSEAL_KEYS', clean(justfile_directory() + '/vault-unseal-keys')) vault_namespace := env('VAULT_NAMESPACE', 'security') vault_pod := env('VAULT_POD', 'vault-0') @@ -28,7 +32,7 @@ status: command -v "$cmd" > /dev/null || { echo "vault: не найден $cmd (активируй mise в каталоге репозитория)" >&2; exit 1; } done - kubectl -n "{{ vault_namespace }}" exec -i "{{ vault_pod }}" -- vault status || true + kubectl -n "{{ vault_namespace }}" exec "{{ vault_pod }}" -- vault status < /dev/null || true # Распечатать Vault ключами из файла. [doc('Распечатать Vault ключами из файла vault-unseal-keys')] @@ -45,7 +49,7 @@ unseal: command -v "$cmd" > /dev/null || { echo "vault: не найден $cmd (активируй mise в каталоге репозитория)" >&2; exit 1; } done - if ! kubectl -n "$ns" get pod "$pod" > /dev/null 2>&1; then + if ! kubectl -n "$ns" get pod "$pod" > /dev/null 2>&1 < /dev/null; then echo "vault: под $ns/$pod недоступен — Vault не запущен или kubeconfig не тот" >&2 exit 1 fi @@ -69,7 +73,7 @@ unseal: fi sealed() { - kubectl -n "$ns" exec -i "$pod" -- vault status -format=json 2> /dev/null | jq -r '.sealed | tostring' || true + kubectl -n "$ns" exec "$pod" -- vault status -format=json < /dev/null 2> /dev/null | jq -r '.sealed | tostring' || true } if [[ "$(sealed)" == "false" ]]; then @@ -84,7 +88,7 @@ unseal: used=$((used + 1)) echo "vault: отправляю долю $used" - kubectl -n "$ns" exec -i "$pod" -- vault operator unseal "$key" || true + kubectl -n "$ns" exec "$pod" -- vault operator unseal "$key" < /dev/null || true if [[ "$(sealed)" == "false" ]]; then echo "vault: распечатан, использовано долей: $used" @@ -97,4 +101,4 @@ unseal: exit 1 fi - kubectl -n "$ns" exec -i "$pod" -- vault status || true + kubectl -n "$ns" exec "$pod" -- vault status < /dev/null || true