[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-mikroservisy-kak-organizovat-konfiguratsiyu-mikroservisov":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},827,"kak-organizovat-konfiguratsiyu-mikroservisov",23,"mikroservisy","Микросервисы","🔗","Как организовать конфигурацию микросервисов?","Централизованная конфигурация позволяет управлять настройками всех микросервисов из одного места и менять их без переразвёртывания. Основные инструменты: Spring Cloud Config, Consul KV, HashiCorp Vault, Kubernetes ConfigMaps.\n\n\u003Cdetails>\u003Csummary>Spring Cloud Config Server\u003C\u002Fsummary>\n\n```java\n@SpringBootApplication\n@EnableConfigServer\npublic class ConfigServerApplication {\n    public static void main(String[] args) {\n        SpringApplication.run(ConfigServerApplication.class, args);\n    }\n}\n```\n\n```yaml\n# Config Server — application.yml\nspring:\n  cloud:\n    config:\n      server:\n        git:\n          uri: https:\u002F\u002Fgit.bank.ru\u002Fconfig-repo\n          default-label: main\n          search-paths: '{application}'\n```\n\n```yaml\n# Клиент (payment-service) — application.yml\nspring:\n  config:\n    import: configserver:http:\u002F\u002Fconfig-server:8888\n  application:\n    name: payment-service\n```\n\nКонфигурационные файлы хранятся в Git-репозитории:\n```\nconfig-repo\u002F\n├── application.yml           # Общие настройки\n├── payment-service.yml       # Настройки payment-service\n├── payment-service-prod.yml  # Настройки для production\n└── customer-service.yml      # Настройки customer-service\n```\n\n\u003C\u002Fdetails>\n\n### Consul KV Store\n\n```yaml\nspring:\n  cloud:\n    consul:\n      config:\n        enabled: true\n        format: YAML\n        prefix: config\n        default-context: application\n```\n\n### HashiCorp Vault -- для секретов\n\nVault предназначен для безопасного хранения секретов (пароли БД, API-ключи, сертификаты).\n\n\u003Cdetails>\u003Csummary>Конфигурация Vault\u003C\u002Fsummary>\n\n```yaml\nspring:\n  cloud:\n    vault:\n      uri: https:\u002F\u002Fvault.bank.ru:8200\n      authentication: APPROLE\n      app-role:\n        role-id: ${VAULT_ROLE_ID}\n        secret-id: ${VAULT_SECRET_ID}\n      kv:\n        enabled: true\n        backend: secret\n        default-context: payment-service\n```\n\n```java\n\u002F\u002F Секреты автоматически инжектируются в Environment\n@Value(\"${database.password}\")\nprivate String dbPassword; \u002F\u002F Получен из Vault\n```\n\n\u003C\u002Fdetails>\n\n### Kubernetes ConfigMaps и Secrets\n\n```yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: payment-service-config\ndata:\n  application.yml: |\n    payment:\n      max-amount: 1000000\n      currency: RUB\n```\n\n### Динамическое обновление конфигурации (без перезапуска)\n\n```java\n@RefreshScope\n@RestController\npublic class PaymentController {\n\n    @Value(\"${payment.max-amount}\")\n    private BigDecimal maxAmount; \u002F\u002F Обновится при POST \u002Factuator\u002Frefresh\n}\n```\n\nДля массового обновления используется Spring Cloud Bus с Kafka\u002FRabbitMQ — один POST-запрос обновляет конфигурацию всех экземпляров сервиса.\n\n> **На собеседовании:** упомяните три уровня: конфигурация (Config Server), секреты (Vault), динамическое обновление (@RefreshScope). Частая ошибка — хранить секреты в Git-репозитории конфигурации вместо Vault.","","middle",[15],"microservices",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":20,"featuredSnippetReady":23},"Как организовать деплой микросервисов? — Gymterview","Развёртывание микросервисов требует зрелых CI\u002FCD практик и стратегий, минимизирующих риски. Основные стратегии: Blue-Green, Canary и Rolling Update.","Развёртывание микросервисов требует зрелых CI\u002FCD практик и стратегий, минимизирующих риски. Основные стратегии: Blue-Gre",[15,13],true]