init
This commit is contained in:
96
04-generation/01-configmaps-secrets/README.md
Normal file
96
04-generation/01-configmaps-secrets/README.md
Normal file
@@ -0,0 +1,96 @@
|
||||
# Урок 4.1 — Автоматическое создание ConfigMaps и Secrets
|
||||
|
||||
## Файлы
|
||||
|
||||
| Файл | Триггер | Что создаёт |
|
||||
|------|---------|-------------|
|
||||
| `generate-namespace-config.yaml` | Namespace | ConfigMap с мета-данными namespace |
|
||||
| `generate-default-networkpolicy.yaml` | Namespace | NetworkPolicy deny-all |
|
||||
| `generate-resource-quota.yaml` | Namespace | ResourceQuota по tier |
|
||||
| `quota-defaults-configmap.yaml` | — | ConfigMap с квотами (нужен заранее) |
|
||||
| `clone-registry-secret.yaml` | Namespace | Копия registry Secret |
|
||||
| `generate-developer-rolebinding.yaml` | Namespace+label | RoleBinding для команды |
|
||||
| `developer-clusterrole.yaml` | — | ClusterRole developer (нужна заранее) |
|
||||
|
||||
## Подготовка (применить до политик)
|
||||
|
||||
```bash
|
||||
# 1. Создать ConfigMap с квотами
|
||||
kubectl apply -f quota-defaults-configmap.yaml
|
||||
|
||||
# 2. Создать ClusterRole developer
|
||||
kubectl apply -f developer-clusterrole.yaml
|
||||
|
||||
# 3. Создать мастер-секрет для registry (замените данные на реальные)
|
||||
kubectl create secret docker-registry registry-credentials-master \
|
||||
--docker-server=registry.company.com \
|
||||
--docker-username=robot-account \
|
||||
--docker-password=your-token \
|
||||
--namespace=kyverno
|
||||
|
||||
# 4. Применить все политики
|
||||
kubectl apply -f generate-namespace-config.yaml
|
||||
kubectl apply -f generate-default-networkpolicy.yaml
|
||||
kubectl apply -f generate-resource-quota.yaml
|
||||
kubectl apply -f clone-registry-secret.yaml
|
||||
kubectl apply -f generate-developer-rolebinding.yaml
|
||||
```
|
||||
|
||||
## Тест: создать namespace и проверить генерацию
|
||||
|
||||
```bash
|
||||
# Создать тестовый namespace
|
||||
kubectl create namespace test-team \
|
||||
--dry-run=client -o yaml | \
|
||||
kubectl apply -f -
|
||||
|
||||
kubectl label namespace test-team \
|
||||
team=platform \
|
||||
tier=standard \
|
||||
environment=staging
|
||||
|
||||
# Подождать ~5 секунд для генерации, затем проверить
|
||||
kubectl get configmap,networkpolicy,resourcequota,rolebinding \
|
||||
-n test-team
|
||||
|
||||
# Детали сгенерированных ресурсов
|
||||
kubectl get configmap namespace-config -n test-team -o yaml
|
||||
kubectl get networkpolicy default-deny-all -n test-team -o yaml
|
||||
kubectl get resourcequota default-quota -n test-team -o yaml
|
||||
```
|
||||
|
||||
## Тест synchronize — защита от случайного удаления
|
||||
|
||||
```bash
|
||||
# Удалить NetworkPolicy вручную
|
||||
kubectl delete networkpolicy default-deny-all -n test-team
|
||||
|
||||
# Kyverno восстановит её через несколько секунд
|
||||
sleep 10
|
||||
kubectl get networkpolicy -n test-team
|
||||
# default-deny-all снова присутствует
|
||||
```
|
||||
|
||||
## Тест cascade delete
|
||||
|
||||
```bash
|
||||
# Удалить namespace — все сгенерированные ресурсы удалятся вместе с ним
|
||||
kubectl delete namespace test-team
|
||||
|
||||
# Проверить что ресурсы не зависли
|
||||
kubectl get generaterequests -n kyverno
|
||||
```
|
||||
|
||||
## Мониторинг GenerateRequests
|
||||
|
||||
```bash
|
||||
# Просмотр очереди генерации
|
||||
kubectl get generaterequests -n kyverno -o wide
|
||||
|
||||
# Детали при ошибке
|
||||
kubectl describe generaterequests -n kyverno | grep -A 20 "Status:"
|
||||
|
||||
# Метрики генерации
|
||||
kubectl port-forward -n kyverno svc/kyverno-svc-metrics 8000:8000 &
|
||||
curl -s http://localhost:8000/metrics | grep kyverno_generate
|
||||
```
|
||||
Reference in New Issue
Block a user