Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/yandex-cloud-examples/yc-mk8s-nodes-certificate-updater

Обновление сертификатов на рабочих узлах Managed Service for Kubernetes (MK8S) с помощью DaemonSet.
https://github.com/yandex-cloud-examples/yc-mk8s-nodes-certificate-updater

certificate-updater kubernetes mk8s yandex-cloud yandexcloud

Last synced: 3 months ago
JSON representation

Обновление сертификатов на рабочих узлах Managed Service for Kubernetes (MK8S) с помощью DaemonSet.

Awesome Lists containing this project

README

        

# 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
```
2) Создать простой 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.

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

4) Создать daemonSet:
```
kubectl apply -f certificate-updater-ds.yaml
```
Далее можно отслеживать состояние daemonSet-а: в случае когда произойдет обновление сертификатов, то перезагрузятся процессы dockerd и containerd.

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

При помощи:

```kubectl get secret crt -o yaml```

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