From 2b70c0692d8c89f665fdab54408f1402039f7897 Mon Sep 17 00:00:00 2001 From: "Zimin A.N." Date: Wed, 6 May 2026 00:24:29 +0300 Subject: [PATCH] =?UTF-8?q?fix(projection-writer):=20=D0=BE=D1=82=D0=BA?= =?UTF-8?q?=D0=BB=D1=8E=D1=87=D0=B8=D1=82=D1=8C=20spring-cloud-vault=20kv?= =?UTF-8?q?=20source?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit projection-writer крашится в bootstrap на 403 при чтении secret/data/ordinis/cuod/k8s — путь которого нет ни в одной из vault-policies (ordinis-app/read-api/projection-writer). Сами секреты приходят через Vault Agent injector в env-переменные ещё до старта JVM, поэтому spring-cloud-vault как config source избыточен. writer и read-api ту же 403 получают, но Spring Cloud Vault лог-warning'ом переваривает. У projection-writer почему-то фатально (возможно из-за ROTATE-mode на secret lease + redis-зависимости в bootstrap chain). Не лезу в эту разницу — просто отключаю kv совсем. Если когда-то понадобится использовать vault как config source — добавить читать secret/data/ordinis/cuod/k8s в политики или сменить application-name на ordinis-projection-writer + создать отдельный путь. --- .../src/main/resources/application.yml | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/ordinis-projection-writer/src/main/resources/application.yml b/ordinis-projection-writer/src/main/resources/application.yml index 0c12dcb..90f7b8d 100644 --- a/ordinis-projection-writer/src/main/resources/application.yml +++ b/ordinis-projection-writer/src/main/resources/application.yml @@ -100,21 +100,19 @@ spring: on-profile: k8s import: - "configserver:${SPRING_CLOUD_CONFIG_URI:http://config-server.ordinis-staging:8888}" - - "vault://" cloud: config: enabled: true + # Spring Cloud Vault как config source отключён намеренно: креды (postgres, + # kafka, redis) приходят через Vault Agent injector в env-переменные ещё + # до старта JVM. Если включить kv-source с application-name=ordinis/cuod, + # Spring пытается читать secret/data/ordinis/cuod/k8s — путь для которого + # ни одна из ролей (ordinis-app/read-api/projection-writer) не имеет + # capabilities=read, и projection-writer падает на этом 403 в bootstrap. + # writer/read-api тот же 403 ловят, но молча проглатывают (бin Lifecycle + # отличается). Чистый путь — не использовать kv-source совсем. vault: - enabled: true - uri: ${VAULT_URI:http://vault.config:8200} - authentication: KUBERNETES - kubernetes: - role: ordinis-projection-writer - service-account-token-file: /var/run/secrets/kubernetes.io/serviceaccount/token - kv: - enabled: true - backend: secret - application-name: ordinis/cuod + enabled: false datasource: url: jdbc:postgresql://${ORDINIS_PG_HOST}:${ORDINIS_PG_PORT:5432}/${ORDINIS_PG_DB:ordinis} username: ${ORDINIS_PG_USER}