Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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.
- Host: GitHub
- URL: https://github.com/yandex-cloud-examples/yc-mk8s-nodes-certificate-updater
- Owner: yandex-cloud-examples
- License: apache-2.0
- Created: 2024-03-08T08:59:47.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2024-12-02T14:42:01.000Z (3 months ago)
- Last Synced: 2024-12-02T15:42:00.249Z (3 months ago)
- Topics: certificate-updater, kubernetes, mk8s, yandex-cloud, yandexcloud
- Homepage:
- Size: 5.86 KB
- Stars: 2
- Watchers: 10
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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 и применять заново.