Skip to content

Latest commit

 

History

History
49 lines (35 loc) · 2.87 KB

File metadata and controls

49 lines (35 loc) · 2.87 KB

DaemonSet для обновления сертификатов на нодах Managed K8s

Описание

DaemonSet будет выполнять следующее:

  1. При помощи bash скрипта постояннo проверять наличие нужных CA сертификатов на нодах.
  2. В случае, если их нет, копировать их из секрета и обновлять сертификаты.
  3. Перезагружать containerd и dockerd.
  4. Отключать блокировку ноды после обновления сертификатов

DaemonSet работает с нодами, использующими Docker runtime и Containerd runtime.

Как запустить в общем случае

Для корректной работы необходимо при создании нод группы в консоли, yc или terraform добавить taint-политики узла для блокировки ноды до окончания процесса обновления сертификатов.

Taint-политики узла: state=certificate-updater:NoSchedule
  1. Создать namespace для работы daemonSet-а в целях изоляции его работы:
kubectl apply -f certificate-updater-ns.yaml
  1. Создать простой secret с несколькими файлами внутри при помощи kubectl с указанием нескольких источников в рамках ранее созданного namespace:
kubectl create secret generic crt --from-file=num1.crt --from-file=num2.crt --from-file=num3.crt --from-file=num4.crt --from-file=num5.crt --namespace="certificate-updater"

Важно, что daemonSet ссылается на сертификат с именем crt.

  1. Создать service account для работы daemonSet-а для снятия блокировки нод:
kubectl apply -f certificate-updater-sa.yaml
  1. Создать daemonSet:
kubectl apply -f certificate-updater-ds.yaml

Далее можно отслеживать состояние daemonSet-а: в случае когда произойдет обновление сертификатов, то перезагрузятся процессы dockerd и containerd.

Обновление сертификатов

При помощи:

kubectl get secret crt -o yaml

Мы можем получить практически готовую для переиспользования конфигурацию. Для добавления данных в секрет как есть стоит предварительно кодировать файл при помощи команды base64 и дописывать соотвествующее содержимое в yaml и применять заново.