KCA - Kyverno Certified Associate
Тестовий іспит | 90 хвилин | Прохідний бал: 75% | $250 USD | Запущено у 2024 році
Огляд
Розділ «Огляд»KCA (Kyverno Certified Associate) підтверджує ваші навички використання Kyverno для керування політиками Kubernetes. На відміну від CKA/CKS, які базуються на виконанні практичних завдань, KCA — це тестовий іспит (multiple-choice). Але нехай це не вводить вас в оману: запитання насичені сценаріями та вимагають вміння читати, писати й налагоджувати реальні YAML-політики Kyverno.
KubeDojo охоплює ~95% тем KCA через наші існуючі треки Platform Engineering та CKS, а також два спеціалізовані модулі KCA, що розглядають розширені політики, операції CLI та керування політиками.
Чому KCA це важливо: Kyverno — найпопулярніший YAML-орієнтований рушій політик в екосистемі Kubernetes. Оскільки організації переходять від підходу «розгортати швидко» до «розгортати безпечно», навички «політики як код» (policy-as-code) мають великий попит. KCA доводить, що ви можете забезпечувати управління (governance) без написання жодного рядка на Rego.
Модулі, специфічні для KCA
Розділ «Модулі, специфічні для KCA»Ці модулі охоплюють теми, що знаходяться між існуючим модулем KubeDojo про інструментарій Kyverno та вимогами іспиту KCA:
| # | Модуль | Тема | Охоплені домени |
|---|---|---|---|
| 1 | Модуль 1.1: Розширені політики Kyverno | verifyImages, вирази CEL, політики очищення, складні validate/mutate/generate | Домен 5 (32%) |
| 2 | Модуль 1.2: Операції Kyverno та CLI | kyverno apply/test/jp, винятки з політик, метрики, розгортання в режимі HA | Домени 2, 3, 6 (40%) |
Домени іспиту
Розділ «Домени іспиту»| Домен | Вага | Покриття KubeDojo |
|---|---|---|
| Основи Kyverno | 18% | Відмінне (модуль інструментарію Kyverno) |
| Встановлення, налаштування та оновлення | 18% | Добре (модуль Kyverno + модулі CKS) |
| Kyverno CLI | 12% | Відмінне (Модуль 1.2: Операції Kyverno та CLI — apply/test/jp) |
| Застосування політик | 10% | Відмінне (модулі Kyverno + OPA) |
| Написання політик | 32% | Відмінне (Модуль 1.1: Розширені політики Kyverno — CEL, verifyImages, cleanup) |
| Керування політиками | 10% | Відмінне (Модуль 1.2: Операції Kyverno та CLI — exceptions, metrics, HA) |
Домен 1: Основи Kyverno (18%)
Розділ «Домен 1: Основи Kyverno (18%)»Компетенції
Розділ «Компетенції»- Зрозуміти роль Kyverno як Kubernetes admission controller
- Типи політик: ClusterPolicy проти Policy (з обмеженням простору імен)
- Структура YAML політики Kyverno
- Як Kyverno інтегрується з Kubernetes API server через вебхуки (webhooks)
Шлях навчання KubeDojo
Розділ «Шлях навчання KubeDojo»Основний модуль:
| Модуль | Тема | Релевантність |
|---|---|---|
| Kyverno 4.7 | Архітектура, модель політик, validate/mutate/generate | Пряма |
| OPA & Gatekeeper 4.2 | Концепції рушіїв політик, шаблони admission control | Контекст |
Основи Kubernetes (admission controllers):
| Модуль | Тема | Релевантність |
|---|---|---|
| CKS Admission Controllers | ValidatingWebhookConfiguration, MutatingWebhookConfiguration | Пряма |
| CKS Pod Security Admission | Вбудований admission control, PSA проти рушіїв політик | Контекст |
| CKS API Server Security | Ланцюжок допуску (admission chain) API server | Контекст |
Ключові концепції для засвоєння
Розділ «Ключові концепції для засвоєння»- Потік admission webhook: API-запит -> мутуючі вебхуки -> валідуючі вебхуки -> збереження в etcd
- ClusterPolicy застосовується на рівні всього кластера; Policy має обмеження простору імен (однаковий синтаксис, різна область дії)
- Kyverno запускається як Deployment з кількома репліками, а не як DaemonSet
- Політики — це Kubernetes CRD, якими можна керувати через kubectl, GitOps, Helm як будь-яким іншим ресурсом
Домен 2: Встановлення, налаштування та оновлення (18%)
Розділ «Домен 2: Встановлення, налаштування та оновлення (18%)»Компетенції
Розділ «Компетенції»- Встановити Kyverno через Helm чарти
- Зрозуміти CRD Kyverno та їхній життєвий цикл
- Налаштувати RBAC для сервісних акаунтів (service accounts) Kyverno
- Застосувати шаблони розгортання високої доступності (HA)
- Оновити Kyverno між версіями
Шлях навчання KubeDojo
Розділ «Шлях навчання KubeDojo»Kyverno-специфічні:
| Модуль | Тема | Релевантність |
|---|---|---|
| Kyverno 4.7 | Встановлення, значення Helm (values), базове налаштування | Пряма |
Підтримуючі концепції Kubernetes:
| Модуль | Тема | Релевантність |
|---|---|---|
| CKS Kubernetes Upgrades | Стратегії оновлення, розбіжність версій (version skew) | Контекст |
| Helm & Kustomize | Шаблони встановлення, оновлення та відкату Helm | Пряма |
Ключові концепції для засвоєння
Розділ «Ключові концепції для засвоєння»- Встановлення через Helm:
helm install kyverno kyverno/kyverno -n kyverno --create-namespace - Режим HA: 3 репліки, pod anti-affinity, окремі контролери для вебхуків та фонових завдань
- CRD: ClusterPolicy, Policy, ClusterPolicyReport, PolicyReport, AdmissionReport, UpdateRequest
- RBAC: Kyverno потребує дозволів для спостереження (watch) та переліку (list) ресурсів, якими він керує
- Налаштування вебхука:
failurePolicy: FailпротиIgnore— критично для стабільності продакшену - Фільтри ресурсів: Виключення простору імен kyverno та системних ресурсів з оцінки політик
Домен 3: Kyverno CLI (12%)
Розділ «Домен 3: Kyverno CLI (12%)»Компетенції
Розділ «Компетенції»- Використовувати
kyverno applyдля офлайн-тестування політик на ресурсах - Використовувати
kyverno testдля юніт-тестування політик - Використовувати
kyverno jpдля налагодження виразів JMESPath - Інтегрувати Kyverno CLI в CI/CD конвеєри
Шлях навчання KubeDojo
Розділ «Шлях навчання KubeDojo»| Модуль | Тема | Релевантність |
|---|---|---|
| Kyverno 4.7 | Основи CLI, інтеграція в CI/CD | Часткова |
| Модуль 1.2: Операції Kyverno та CLI | kyverno apply/test/jp, винятки з політик, метрики, розгортання в режимі HA | Пряма |
| DevSecOps 4.3 | Безпека в CI/CD конвеєрах (шаблон policy-as-code) | Контекст |
| CKS Static Analysis | Концепції сканування перед розгортанням | Контекст |
Ключові концепції для засвоєння
Розділ «Ключові концепції для засвоєння»# Apply a policy against a resource (offline, no cluster needed)kyverno apply policy.yaml --resource deployment.yaml
# Run policy test suiteskyverno test ./tests/
# Debug JMESPath expressions (used in preconditions and variables)kyverno jp query "request.object.metadata.labels.app" -i resource.json
# CI/CD pipeline usage -- fail the build if policies are violatedkyverno apply policies/ --resource manifests/ --detailed-resultskyverno apply: Тестує політики на ресурсах без кластера. Важливо для підходу «shift-left».kyverno test: Запускає набори тестів, визначені в YAML. Кожен тест вказує політику, ресурс та очікуваний результат (pass/fail/skip).kyverno jp: Інтерактивний інструмент для запитів JMESPath. Безцінний для налагодження складних умов відповідності (match conditions).- Структура файлу тесту:
kyverno-test.yamlз полямиpolicies:,resources:таresults:.
Домен 4: Застосування політик (10%)
Розділ «Домен 4: Застосування політик (10%)»Компетенції
Розділ «Компетенції»- Використовувати блоки
matchтаexcludeдля вибору ресурсів - Таргетувати конкретні типи ресурсів (kinds), простори імен, мітки (labels) та анотації
- Застосовувати preconditions для умовного виконання політик
- Впорядковувати політики та вирішувати конфлікти
Шлях навчання KubeDojo
Розділ «Шлях навчання KubeDojo»| Модуль | Тема | Релевантність |
|---|---|---|
| Kyverno 4.7 | match/exclude, вибір ресурсів | Пряма |
| OPA & Gatekeeper 4.2 | Селектори обмежень (порівняння) | Контекст |
Ключові концепції для засвоєння
Розділ «Ключові концепції для засвоєння»# Match/Exclude patternsspec: rules: - name: require-labels match: any: - resources: kinds: - Pod namespaces: - production - staging selector: matchLabels: app.kubernetes.io/managed-by: helm exclude: any: - resources: namespaces: - kube-system - clusterRoles: - cluster-adminmatch.any= логіка АБО (відповідність будь-якій умові);match.all= логіка І (відповідність усім умовам)excludeмає пріоритет надmatch— завжди обробляється після match- Preconditions: Використовуйте вирази JMESPath для умовної логіки (
{{ request.object.metadata.annotations.\"skip-policy\" }}) - Фільтри ресурсів: Глобальні фільтри в Kyverno ConfigMap виключають ресурси з оцінки всіх політик
Домен 5: Написання політик (32%)
Розділ «Домен 5: Написання політик (32%)»Це найбільший домен. Він вимагає глибокої практичної підготовки.
Компетенції
Розділ «Компетенції»- Писати правила validate (заборона невідповідних ресурсів)
- Писати правила mutate (автоматичне виправлення ресурсів при допуску)
- Писати правила generate (автоматичне створення супутніх ресурсів)
- Писати правила verifyImages (забезпечення підписів образів та атестацій)
- Використовувати вирази CEL у політиках (альтернатива JMESPath у Kubernetes 1.30+)
- Писати політики очищення (cleanup) (видалення ресурсів за TTL)
Шлях навчання KubeDojo
Розділ «Шлях навчання KubeDojo»Добре висвітлено (validate, mutate, generate):
| Модуль | Тема | Релевантність |
|---|---|---|
| Kyverno 4.7 | Політики validate, mutate, generate з прикладами | Пряма |
| Модуль 1.1: Розширені політики Kyverno | verifyImages, вирази CEL, політики очищення, складні шаблони | Пряма |
| Security Mindset 4.1 | Чому дотримання політик це важливо | Контекст |
| Defense in Depth 4.2 | Багатошарова модель безпеки | Контекст |
Додаткова глибина (verifyImages, CEL, cleanup):
| Модуль | Тема | Релевантність |
|---|---|---|
| Supply Chain Security 4.4 | Cosign, підпис образів, атестації (контекст verifyImages) | Пряма |
| DevSecOps Supply Chain 4.4 | Теорія ланцюжка постачання, SLSA, SBOM | Контекст |
Ключові концепції для засвоєння
Розділ «Ключові концепції для засвоєння»Validate (заборона невідповідних ресурсів):
spec: validationFailureAction: Enforce # Enforce = блок, Audit = warn only rules: - name: require-resource-limits match: any: - resources: kinds: - Pod validate: message: "CPU and memory limits are required." pattern: spec: containers: - resources: limits: memory: "?*" cpu: "?*"Mutate (автоматичне виправлення при допуску):
spec: rules: - name: add-default-securitycontext match: any: - resources: kinds: - Pod mutate: patchStrategicMerge: spec: containers: - (name): "*" securityContext: runAsNonRoot: true readOnlyRootFilesystem: trueGenerate (автоматичне створення супутніх ресурсів):
spec: rules: - name: generate-networkpolicy match: any: - resources: kinds: - Namespace generate: kind: NetworkPolicy apiVersion: networking.k8s.io/v1 name: default-deny-ingress namespace: "{{request.object.metadata.name}}" data: spec: podSelector: {} policyTypes: - IngressverifyImages (забезпечення підписів образів) — розглядається в Модулі 1.1: Розширені політики Kyverno:
spec: rules: - name: verify-image-signature match: any: - resources: kinds: - Pod verifyImages: - imageReferences: - "ghcr.io/myorg/*" attestors: - entries: - keys: publicKeys: |- -----BEGIN PUBLIC KEY----- ... -----END PUBLIC KEY-----Вирази CEL (альтернатива JMESPath) — розглядається в Модулі 1.1: Розширені політики Kyverno:
spec: rules: - name: check-replicas-cel match: any: - resources: kinds: - Deployment validate: cel: expressions: - expression: "object.spec.replicas >= 2" message: "Deployments must have at least 2 replicas"Політики очищення (видалення на основі TTL) — розглядається в Модулі 1.1: Розширені політики Kyverno:
apiVersion: kyverno.io/v2beta1kind: ClusterCleanupPolicymetadata: name: cleanup-stale-podsspec: match: any: - resources: kinds: - Pod selector: matchLabels: environment: test conditions: any: - operator: Equals key: "{{ target.status.phase }}" value: Succeeded schedule: "*/30 * * * *"На чому зосередити увагу в цьому домені
Розділ «На чому зосередити увагу в цьому домені»- Попрактикуйтеся писати всі 4 типи політики (validate, mutate, generate, verifyImages) з нуля
- Зрозумійте різницю між
validationFailureAction: EnforceтаAudit— це часто перевіряється в тестах - Вивчіть основи JMESPath для підстановки змінних (
{{ request.object.* }}) - Вивчіть вирази CEL — Kyverno додав підтримку CEL як альтернативу валідації на основі шаблонів
- Зрозумійте політики очищення — видалення ресурсів за розкладом cron та умовами TTL
Домен 6: Керування політиками (10%)
Розділ «Домен 6: Керування політиками (10%)»Компетенції
Розділ «Компетенції»- Читати та інтерпретувати PolicyReports та ClusterPolicyReports
- Налаштовувати винятки з політик (PolicyExceptions) для легітимних обходів
- Моніторити Kyverno за допомогою метрик (Prometheus)
- Керувати життєвим циклом політик (міграція audit -> enforce)
Шлях навчання KubeDojo
Розділ «Шлях навчання KubeDojo»| Модуль | Тема | Релевантність |
|---|---|---|
| Kyverno 4.7 | Звіти про політики, режим аудиту | Пряма |
| Prometheus | Метрики Prometheus, ServiceMonitor | Контекст |
| SRE SLOs 1.2 | Вимірювання відповідності політикам як SLO | Контекст |
| DevSecOps Fundamentals 4.1 | Життєвий цикл policy-as-code | Контекст |
Ключові концепції для засвоєння
Розділ «Ключові концепції для засвоєння»PolicyReports:
# Перегляд результатів політик на рівні кластераkubectl get clusterpolicyreport -o wide
# Перегляд результатів на рівні простору іменkubectl get policyreport -n production -o wide
# Результати містять кількість pass/fail/warn/error/skipВинятки з політик (обхід для легітимних випадків):
apiVersion: kyverno.io/v2kind: PolicyExceptionmetadata: name: allow-privileged-cni namespace: kube-systemspec: exceptions: - policyName: disallow-privileged-containers ruleNames: - require-non-privileged match: any: - resources: kinds: - Pod namespaces: - kube-system names: - "calico-node-*"Метрики Kyverno (Prometheus):
kyverno_admission_requests_total— загальна кількість оброблених запитів допускуkyverno_policy_results_total— результати оцінки політик (pass/fail/error)kyverno_policy_execution_duration_seconds— затримка виконання політик- Усі метрики доступні на
:8000/metricsза замовчуванням
Шаблон міграції Audit -> Enforce:
- Розгорніть політику з
validationFailureAction: Audit - Відстежуйте PolicyReports на предмет порушень
- Виправте існуючі порушення або створіть PolicyExceptions
- Перемкніть на
validationFailureAction: Enforce - Моніторте метрики допуску для виявлення заблокованих запитів
Стратегія навчання
Розділ «Стратегія навчання»ШЛЯХ ПІДГОТОВКИ ДО KCA (рекомендований порядок)══════════════════════════════════════════════════════════════
Тиждень 1: Основи та архітектура (18%)├── Модуль Kyverno 4.7 у KubeDojo (почніть звідси)├── Модуль CKS Admission Controllers├── Модуль OPA & Gatekeeper (порівняння підходів)└── Встановіть Kyverno у кластері kind
Тиждень 2: Встановлення та основи політик (18% + 10%)├── Встановлення через Helm з кастомними values├── Налаштування режиму HA (3 репліки)├── Практика шаблонів match/exclude├── Напишіть 10+ політик validate з нуля└── Розгортання Kyverno через ArgoCD (шаблон GitOps)
Тиждень 3: Глибоке занурення у написання політик (32% — приділіть цьому найбільше часу!)├── Політики Mutate (patchStrategicMerge, patchesJson6902)├── Політики Generate (NetworkPolicy, ResourceQuota, LimitRange)├── verifyImages з Cosign (використовуйте модуль supply chain у KubeDojo)├── Вирази CEL (практика конвертації JMESPath -> CEL)├── Політики очищення (видалення на основі TTL через cron)└── Бібліотека політик Kyverno: вивчіть 20+ політик спільноти
Тиждень 4: CLI, керування та повторення (12% + 10%)├── Команди CLI kyverno apply / test / jp├── Написання наборів тестів kyverno-test.yaml├── PolicyReports та ClusterPolicyReports├── Винятки з політик для легітимних обходів├── Метрики Prometheus та дашборди Grafana└── Практичні питання іспиту, повторення слабких місцьПоради до іспиту
Розділ «Поради до іспиту»- Написання політик — це 32% іспиту — ви ПОВИННІ вміти писати політики validate, mutate, generate та verifyImages по пам’яті
- Знайте різницю між
EnforceтаAudit— ця відмінність зустрічається в багатьох запитаннях - JMESPath — ваш друг — практикуйте синтаксис змінних
{{ request.object.* }}, доки він не стане автоматичним - CEL — це нова тема, що перевіряється — іспит тестує підходи як з JMESPath, так і з CEL
- Винятки з політик (Policy exceptions) проти exclude — знайте, коли що використовувати (винятки для оперативних обходів; exclude для структурної фільтрації)
- Команди CLI — це легкі бали — запам’ятайте синтаксис
kyverno apply,kyverno testтаkyverno jp - Читайте бібліотеку політик — багато екзаменаційних питань є варіаціями стандартних політик спільноти: kyverno.io/policies
Аналіз прогалин
Розділ «Аналіз прогалин»Існуючі модулі KubeDojo разом із двома спеціалізованими модулями KCA тепер охоплюють ~95% навчальної програми KCA:
| Тема | Статус | Примітки |
|---|---|---|
| Політики verifyImages | Охоплено | Модуль 1.1: Розширені політики Kyverno — Cosign, атестації, перевірка образів |
| Вирази CEL у Kyverno | Охоплено | Модуль 1.1: Розширені політики Kyverno — вирази валідації CEL |
| Політики очищення (cleanup) | Охоплено | Модуль 1.1: Розширені політики Kyverno — ClusterCleanupPolicy, видалення за TTL |
| Глибоке занурення в Kyverno CLI | Охоплено | Модуль 1.2: Операції Kyverno та CLI — команди apply, test, jp |
| Винятки з політик | Охоплено | Модуль 1.2: Операції Kyverno та CLI — CRD PolicyException |
| Метрики Kyverno Prometheus | Охоплено | Модуль 1.2: Операції Kyverno та CLI — метрики допуску, результатів та виконання політик |
| Деталі розгортання HA | Охоплено | Модуль 1.2: Операції Kyverno та CLI — репліки, anti-affinity, налаштування вебхука |
Рекомендовані зовнішні ресурси
Розділ «Рекомендовані зовнішні ресурси»- Документація Kyverno: kyverno.io/docs — авторитетне джерело для всіх доменів
- Бібліотека політик Kyverno: kyverno.io/policies — 200+ готових політик для вивчення
- Kyverno playground: playground.kyverno.io — тестуйте політики в браузері без кластера
- Навчальна програма CNCF KCA: github.com/cncf/curriculum — офіційні цілі іспиту
Супутні сертифікації
Розділ «Супутні сертифікації»ШЛЯХ СЕРТИФІКАЦІЇ══════════════════════════════════════════════════════════════
Початковий рівень:├── KCNA (Cloud Native Associate) — основи K8s├── KCSA (Security Associate) — основи безпеки└── KCA (Kyverno Certified Associate) ← ВИ ТУТ
Професійний рівень:├── CKA (K8s Administrator) — експлуатація кластерів├── CKAD (K8s Developer) — розгортання застосунків├── CKS (K8s Security Specialist) — зміцнення безпеки└── CNPE (Platform Engineer) — платформа у масштабі
KCA природно поєднується з:├── CKS — KCA дає глибину в рушіях політик, CKS охоплює ширшу безпеку├── KCSA — KCA є практичним продовженням теорії KCSA└── CNPE — Policy-as-code є базовою навичкою проектування платформKCA унікальний серед сертифікацій CNCF, оскільки зосереджений на одному проекті (Kyverno), а не на широкій галузі. Це робить його більш спеціалізованим, але й глибшим — очікуйте детальних запитань про специфічні функції Kyverno, яких не було б у CKS.