init
This commit is contained in:
128
05-variables/03-templates/README.md
Normal file
128
05-variables/03-templates/README.md
Normal file
@@ -0,0 +1,128 @@
|
||||
# Урок 5.3 — Переиспользуемые шаблоны политик (Helm Chart)
|
||||
|
||||
## Структура
|
||||
|
||||
```
|
||||
kyverno-policies/
|
||||
├── Chart.yaml
|
||||
├── values.yaml # дефолтные значения
|
||||
├── values-staging.yaml # overrides для staging
|
||||
├── values-production.yaml # overrides для production
|
||||
├── templates/
|
||||
│ ├── require-resource-limits.yaml
|
||||
│ ├── disallow-privileged.yaml
|
||||
│ ├── require-labels.yaml
|
||||
│ └── generate-networkpolicy.yaml
|
||||
└── tests/
|
||||
├── kyverno-test.yaml
|
||||
└── resources/
|
||||
├── pod-compliant.yaml
|
||||
├── pod-no-limits.yaml
|
||||
├── pod-privileged.yaml
|
||||
└── deployment-no-labels.yaml
|
||||
```
|
||||
|
||||
## Запуск тестов (без кластера)
|
||||
|
||||
```bash
|
||||
cd kyverno-policies
|
||||
|
||||
# Сгенерировать манифесты из шаблонов и протестировать
|
||||
helm template . -f values.yaml | \
|
||||
kyverno apply - --resource tests/resources/ --table
|
||||
|
||||
# Запустить встроенные kyverno тесты
|
||||
# (сначала нужно отрендерить шаблоны в обычные YAML)
|
||||
helm template . -f values.yaml --output-dir /tmp/rendered-policies
|
||||
|
||||
kyverno test tests/ \
|
||||
--policy-report \
|
||||
--detailed-results
|
||||
```
|
||||
|
||||
## Деплой в кластер
|
||||
|
||||
```bash
|
||||
# Staging — всё в Audit
|
||||
helm upgrade --install kyverno-policies . \
|
||||
--namespace kyverno \
|
||||
--create-namespace \
|
||||
-f values-staging.yaml
|
||||
|
||||
# Production — Enforce
|
||||
helm upgrade --install kyverno-policies . \
|
||||
--namespace kyverno \
|
||||
--create-namespace \
|
||||
-f values-production.yaml
|
||||
|
||||
# Проверить задеплоенные политики
|
||||
kubectl get clusterpolicies -l helm.sh/chart=kyverno-policies-1.0.0
|
||||
|
||||
# Rollback если что-то пошло не так
|
||||
helm rollback kyverno-policies 1 -n kyverno
|
||||
```
|
||||
|
||||
## PolicyException — управляемые исключения
|
||||
|
||||
```bash
|
||||
# Применить временное исключение для legacy-сервиса
|
||||
kubectl apply -f - <<EOF
|
||||
apiVersion: kyverno.io/v2beta1
|
||||
kind: PolicyException
|
||||
metadata:
|
||||
name: legacy-app-exception
|
||||
namespace: production
|
||||
annotations:
|
||||
exception.company.com/expires: "2025-03-01"
|
||||
exception.company.com/reason: "Migration in progress — JIRA-1234"
|
||||
exception.company.com/approved-by: "platform-team"
|
||||
spec:
|
||||
exceptions:
|
||||
- policyName: require-resource-limits
|
||||
ruleNames:
|
||||
- check-container-limits
|
||||
match:
|
||||
resources:
|
||||
kinds:
|
||||
- Pod
|
||||
namespaces:
|
||||
- production
|
||||
names:
|
||||
- legacy-app-*
|
||||
EOF
|
||||
|
||||
# Посмотреть все активные исключения
|
||||
kubectl get policyexceptions -A
|
||||
```
|
||||
|
||||
## CI/CD для Helm chart политик
|
||||
|
||||
```bash
|
||||
# Линтинг
|
||||
helm lint . -f values.yaml
|
||||
helm lint . -f values-production.yaml
|
||||
|
||||
# Dry-run деплой
|
||||
helm upgrade --install kyverno-policies . \
|
||||
--namespace kyverno \
|
||||
-f values-production.yaml \
|
||||
--dry-run
|
||||
|
||||
# diff перед применением (требует helm-diff plugin)
|
||||
helm plugin install https://github.com/databus23/helm-diff
|
||||
helm diff upgrade kyverno-policies . \
|
||||
--namespace kyverno \
|
||||
-f values-production.yaml
|
||||
```
|
||||
|
||||
## Версионирование изменений
|
||||
|
||||
```yaml
|
||||
# При изменении политики — обновляйте версию в Chart.yaml
|
||||
# и добавляйте запись в аннотацию политики:
|
||||
annotations:
|
||||
policies.kyverno.io/version: "1.1.0"
|
||||
policies.kyverno.io/changelog: |
|
||||
1.1.0: Добавлена проверка ephemeral containers
|
||||
1.0.0: Начальная версия
|
||||
```
|
||||
Reference in New Issue
Block a user