Налаштування Kubernetes Cert-Manager для автоматичного керування TLS

Сертифікати спливають у найневдаліший момент, а ручне продовження тримається на пам’яті одного інженера. Ми налаштовуємо автоматичне керування TLS у кластері під ключ: випуск, продовження й перевірка відбуваються без участі команди. Такий підхід усуває цілий клас відмов, пов’язаних із простроченими сертифікатами.
Часті запитання

cert-manager у Kubernetes: чому TLS-сертифікати закінчуються

Продовження TLS-сертифікатів у кластері майже завжди налаштовано — і майже завжди ламається непомітно.

Сертифікат на вхідний трафік має обмежений термін дії, продовження йде фоновим процесом, і саме тому за ним ніхто не стежить: поки ланцюжок дійсний, метрики виглядають здоровими, помилок у логах немає.

Далі граничний термін минає мовчки. Застосунки працюють, деплой гаразд, але браузери та мобільні клієнти відмовляються від з'єднання — і це вже не збій одного сервісу, а відмова вхідного трафіку по всьому домену.

Клієнти з жорсткою перевіркою ланцюжка довіри падають з помилкою TLS, а ручний випуск сертифікатів у цей момент розтягується на години: потрібно встигнути випустити новий, покласти його в секрет і перезапустити поди.

Причин у такого сценарію зазвичай три.

Продовження налаштовано, але помилки перевірки володіння доменом ніхто не розбирає: запис для DNS-01 залишився попереднім, шлях для HTTP-01 закритий правилом маршрутизації або захистом від зовнішніх запитів — і контролер мовчки повторює спробу до самого дедлайну.

Ручний випуск сертифікатів залишає секрети з попередніми іменами та посилання на старий об'єкт, тому оновлений ланцюжок просто не потрапляє в под. А сповіщення про те, що термін закінчується, не прив'язане до жодного каналу оповіщення.

Ціна в цих дрібниць одна — недоступність сервісу в найневдаліший момент. Розбираємо, як це закривається і що має бути налаштовано до того, як граничний термін мине.

Що дає автоматичне керування сертифікатами в кластері

У кластері сертифікати перестають бути ручною задачею: кожен описується декларативно — об'єкт Certificate посилається на ClusterIssuer, а результат лягає в Secret, який читає інгрес.

Єдина точка керування означає, що випуск, зберігання та ротація задаються одним маніфестом, а не обходом панелей різних сервісів. Скорочення ручних операцій вимірюється кількістю кроків: новий домен — це коміт, а не заявка в чергу.

Автоматичне продовження сертифікатів зав'язане на залишковий термін дії: контролер бачить, що до закінчення залишилося менше заданої частки, і перевипускає сертифікат заздалегідь, оновлюючи Secret.

Інгрес-контролер підхоплює новий вміст без перезапуску подів, тому зниження часу простою — не «майже нуль», а рівно нуль: вікно продовження настільки широке, що обрив з'єднання не настає.

Головний ефект — усунений клас відмов. Прострочений сертифікат, забутий на тестовому стенді, wildcard, продовжений лише в одному середовищі, розсинхрон між кластерами — усе це перестає бути інцидентом і стає завданням контролера.

Передбачувана поведінка при масовому оновленні теж забезпечена: запити до центру сертифікації йдуть з обмеженням швидкості та повторами, тому хвиля перевипусків не перетворюється на відмову.

Залишається контроль: метрики щодо терміну дії, події при невдалій перевірці домену, алерт до настання критичної дати. Такий набір і є чек-лістом зрілості — продовження без людини, єдина точка керування, нуль ручних операцій і відсутність цілого класу інцидентів.

Режими роботи cert-manager у Kubernetes: порівняння підходів

<cite>cert-manager</cite> не випускає сертифікати сам — він описує джерело підпису через об'єкти Issuer або ClusterIssuer, а Certificate задає домени та термін дії.

Від вибору джерела залежать автоматична ротація, довіра на боці клієнтів і те, як проходить відкликання при компрометації ключа.

Режими спокійно комбінуються в одному кластері: публічні сертифікати — для зовнішніх сервісів, внутрішній центр — для трафіку між сервісами, самопідписані — лише на тимчасових контурах. Нижче чотири варіанти та обмеження кожного.

Варіант випуску Коли підходить Обмеження
Публічний центр сертифікації Зовнішні домени та клієнти, у яких немає корпоративного кореневого сертифіката Потрібна перевірка володіння доменом, є межі на кількість випусків, сертифікат потрапляє в публічні журнали
Внутрішній центр сертифікації організації Сервіси всередині мережі, взаємна автентифікація між сервісами Клієнтам потрібно довіряти кореневому сертифікату; потрібен регламент випуску та відкликання
Корпоративне сховище секретів Уже є централізоване сховище ключів і вимоги щодо аудиту доступу Потрібна синхронізація стану кластера та сховища, права видаються окремо
Самопідписані сертифікати Тестові та тимчасові контури, налагодження Браузери та зовнішні клієнти не довіряють; у продуктив такий сертифікат не переноситься

На практиці в одному кластері зазвичай живуть два-три режими: зовнішній контур на публічному центрі, внутрішній — на своєму, і окремий самопідписаний для перевірок.

Вибір фіксуємо в схемі емітентів і політиці ротації, щоб новий сервіс не тягнув сертифікат вручну, а відкликання займало хвилини, а не години.

Етапи впровадження автоматичного продовження сертифікатів

Автоматичне продовження ламається не на видачі сертифіката, а на краях: домен, який забули додати в опис, або приватний ключ в єдиному екземплярі.

Тому етапи впровадження вибудувані від інвентаризації до приймання — результат кожного кроку перевіряємо до того, як він потрапить у робочий контур. Вартість розраховується після аудиту. 1. Аудит конфігурації кластера.

Збираємо всі точки, де завершується захищене з'єднання, фіксуємо домени, терміни дії та місця зберігання ключів. На виході — реєстр з відповідальним за кожним записом. 2. Схема довіри.

Визначаємо центр сертифікації, порядок видачі проміжних сертифікатів і спосіб підтвердження володіння доменом. Окремо вирішуємо, де лежать ключі та як вони ротуються. 3. Налаштування випуску.

Описуємо сертифікати декларативно, прив'язуємо до доменів і задаємо вікно продовження із запасом — за 30 днів до закінчення залишається час розібрати збій без поспіху. 4. Перевірка продовження на копії контуру.

Примусово запускаємо цикл на тестовому середовищі: дивимося ланцюжок, порядок підміни сертифіката та поведінку сервісів, коли центр видачі недоступний. 5. Приймання.

Налаштовуємо спостереження за терміном дії та оповіщення заздалегідь, проганяємо повний цикл на робочому контурі в узгоджене вікно. 6. Передавання в експлуатацію. Віддаємо регламент продовження, схему розміщення ключів і список відповідальних за реакцію на оповіщення.

Далі продовження йде без ручних дій, а відмова видна раніше, ніж сертифікат закінчився.

Що залишається в команди після впровадження автоматизації

Автоматизація без документації створює залежність від того, хто її налаштовував: іде інженер — і випуск сертифікатів перетворюється на незрозумілу чорну скриньку.

Тому в передавання входить не лише робочий контур, а й набір артефактів, за якими чергова зміна та нові фахівці діють без нас.

  • Схема взаємодії — як заявка на домен перетворюється на готовий сертифікат: спосіб підтвердження володіння, місце зберігання ключів, зв'язок випуску з об'єктами маршрутизації. Діаграма плюс текстовий опис кожного кроку.
  • Документація щодо сертифікатів — опис усіх об'єктів, що випускаються: домени, типи (одиночний, wildcard, з кількома іменами), термін дії, відповідальний за домен, де сертифікат використовується.
  • Регламент продовження — за скільки днів до закінчення запускається продовження, що відбувається при невдалій спробі, кому надходить сповіщення і в якому порядку сертифікат випускається вручну.
  • Політики доступу — ролі та права: хто змінює налаштування випуску, хто читає секрети, у кого доступ до керування DNS-записами для підтвердження володіння.
  • Інструкції для чергової зміни — розбір типових відмов: прострочений сертифікат, помилка підтвердження домену, вичерпана квота в зовнішнього постачальника — із зазначенням, що перевіряти першим.
  • Моніторинг та оповіщення — дашборд щодо термінів життя сертифікатів і алерти на поріг, при якому ще залишається час на ручне втручання.
  • Процедура відкату — як повернути попередню конфігурацію випуску та як тимчасово вимкнути автоматизацію, не заваливши маршрутизацію.

Комплект збирається під ваш контур: імена об'єктів, адреси панелей і зони відповідальності підставляються ваші, а не залишаються прикладами з документації.

Кейс: як ми прибрали ручне продовження сертифікатів

Контекст: середовище розподілене — чотири контури (розробка, тест, передпродуктив, продуктив) і три регіони, близько 60 доменів і піддоменів, включно з підстановочними сертифікатами для внутрішніх сервісів.

Сертифікати оформлювалися вручну: інженер вів таблицю термінів, подавав заявки до центру сертифікації та розкладав файли по балансувальниках і контролерах.

За квартал набігало під 40 операцій, а закінчення одного сертифіката означало відмову зовнішнього інтерфейсу та помилки в клієнтів.

cert-manager поставили оператором у кластер і описали випуск декларативно: окреме джерело на кожне середовище, спільне — для доменів верхнього рівня.

Продовження стартує за 30 днів до закінчення, ключ оновлюється в тому самому просторі імен і підхоплюється без перезапуску застосунку. Окремо вивели метрику залишку терміну: попередження за 21 день, критичний алерт — за 7.

Що змінилося в цифрах

  • Планові ручні операції: близько 40 за квартал → 0.
  • Інциденти через прострочені сертифікати: 9 за рік → 0.
  • Випуск нового домену: 2-3 дні з погодженнями → 15-25 хвилин від правки маніфесту до готового сертифіката.
  • Помилки продовження (недоступна перевірка володіння доменом, роз'їхалися зони) раніше спливали в момент закінчення — тепер видно алертом за три тижні; частка успішних автопродовжень за рік — 100%.

Ручними залишилися лише зміна DNS-провайдера та разові винятки — вони описані в інструкції для чергового, розбір займає хвилини, а не години.

Що робити, якщо сертифікати вже видаються вручну?

Міграція на автоматизацію — це не перемикач, а послідовність. На першому етапі дві схеми співіснують: cert-manager у кластері не чіпає вже створені Secret, тому що зв'язок між описом Certificate і сховищем виникає лише за іменем і простором імен, які задаєте ви самі. Поки опису немає, ручні сертифікати продовжують працювати й продовжуються в попередньому порядку.

Перший крок — перевірка на неробочому просторі імен.

Випускаємо сертифікат на тестовий домен тим самим способом, яким потім будуть випускатися бойові: чи проходить підтвердження володіння доменом, чи потрапляє повний ланцюжок у Secret, чи підхоплює його вхідний контролер без перезапуску застосунків.

Так перевіряється не лише випуск, а й те, що ланцюжок довіри повний — інакше клієнти побачать попередження, яке не зловити всередині кластера.

Коли результат сходиться з очікуваним, описи переносяться на реальні домени по одному: спочатку менш навантажений контур, потім інші. Ручні сертифікати не видаляються — вони залишаються робочим відкатом, поки автоматично випущений не проживе повний цикл продовження.

Продовження — головне, заради чого все затівається. Автоматика оновлює Secret заздалегідь, до закінчення терміну, а застосунок читає новий файл без ручного втручання.

Якщо продовження зірвалося через недоступність центру сертифікації або змінені права, повернення до ручної видачі займає одну дію.

Окремо закриваються доступи: право оновлювати Secret і об'єкти описів, доступ до зони домену для підтвердження володіння, запас за кількістю запитів до центру сертифікації. Без цього автоматизація працює до першої зміни DNS або розширення прав — і знову перетворюється на ручну.

Технічні сумніви, які варто зняти до старту

До старту зазвичай спливають чотири питання: де випускати сертифікати, що робити із сервісами за межами кластера, як пройде перевірка володіння доменом і чи спрацює продовження без ручного втручання. Нижче — короткі відповіді, які знімають більшу частину сумнівів ще до робіт.

Зовнішній центр сертифікації чи внутрішній?

Зовнішній публічний центр беремо для всього, що бачать користувачі та зовнішні клієнти — браузери довіряють йому без додаткового налаштування.

Для внутрішніх сервісів розгортаємо власний центр сертифікації: кореневий сертифікат потрапляє в довірені сховища вузлів і клієнтських машин, а випуск іде всередині контуру без зовнішніх залежностей.

Змішана схема — норма: різні об'єкти випуску для зовнішнього та внутрішнього трафіку, щоб відмова зовнішнього центру не зачіпала службові зв'язки.

Що робити із сервісами поза кластером?

Сертифікати випускаються і для них: секрет із ключем і ланцюжком читає зовнішній балансувальник або зворотний проксі, або він забирає оновлення зі спільного сховища.

Критично інше — щоб після продовження секрет перечитався процесом, а не залишився в пам'яті до ручного перезапуску. Перевіряємо це на стенді: скорочуємо термін життя, чекаємо автоматичного оновлення й дивимося, чи підхопив новий сертифікат зовнішній споживач.

Як пройде перевірка володіння доменом?

Через веб-сервер — якщо домен указує на кластер і є куди покласти перевірочний файл.

Через DNS — якщо потрібні сертифікати на групу піддоменів одразу або публічного входу немає взагалі; тоді об'єкту випуску потрібні права на зміну записів у DNS-провайдера, і ми видаємо їх вузько, лише на потрібну зону. Для внутрішніх доменів перевірка володіння не потрібна.

Як переконатися, що продовження спрацює заздалегідь?

Продовження стартує помітно раніше закінчення, тому збій встигає потрапити в моніторинг, а не у звіт про аварію.

Ставимо оповіщення на вік сертифіката, на помилки випуску та на вичерпання спроб перевірки володіння, плюс контрольний прогін на тестовому контурі з укороченим терміном життя.

Далі питання лише в доступі до DNS і в резервному каналі перевірки — якщо основний провайдер недоступний.

Обговоримо вашу задачу та повернемося з планом

Щоб оцінка робіт спиралася на факти, а не на припущення, нам потрібен зріз вашої інфраструктури: як сертифікати випускаються зараз, де живуть ключі та що саме має потрапити під автоматизацію. Нижче — мінімальний набір даних, з якого збирається предметний план впровадження. Якщо чогось немає під рукою, розберемося на дзвінку та уточнимо в листуванні.

  • Склад контурів. Скільки кластерів Kubernetes, де вони розміщені (хмара, свої сервери, гібрид), скільки просторів імен і точок входу трафіку доводиться обслуговувати. Від цього залежить, чи потрібен один спільний центр випуску чи окремі на кожен контур.
  • Поточна схема випуску. Хто видає сертифікати сьогодні — вручну, скриптами чи зовнішнім сервісом; де зберігаються приватні ключі; які типи потрібні: одиночні домени, wildcard, внутрішні імена.
  • Список сервісів на периметрі. Домени та піддомени під автоматизацію з позначкою, які публічні, а які доступні лише з внутрішньої мережі. Це визначає спосіб підтвердження прав на домен і обсяг перевірок після перемикання.
  • Доступи та точки інтеграції. Як вносяться DNS-записи, хто керує зонами, чи є зовнішнє сховище секретів і як до нього підключаються робочі навантаження.
  • Обмеження за термінами. Жорсткі дати, вікна обслуговування, допустимість короткої перерви в TLS під час перемикання та вимоги аудиту до терміну життя ключів.
  • Минулий досвід. Що вже пробували, які були інциденти із закінченням сертифікатів і що саме не влаштувало в попередньому рішенні.

З цим набором ми фіксуємо склад робіт, порядок етапів, точки відкату та критерії приймання. Опишіть задачу у зручному форматі — повернемося з оцінкою та планом.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142