Pull to refresh
241.68
FirstVDS
Виртуальные серверы в ДЦ в Москве

Начало работы с управлением политиками Kubernetes и Kyverno на платформе контейнеров OpenShift

Reading time6 min
Views3.6K
Original author: Jim Bugwadia
image

В этой статье речь пойдёт о том, как начать работу с Kyverno на платформе контейнеров OpenShift, с помощью которой можно повысить безопасность, легко внедрять передовые технологии и решать другие непростые задачи.

Red Hat® OpenShift — это широко распространённая контейнерная платформа на базе Kubernetes. По мере внедрения OpenShift разработчики часто сталкиваются с необходимостью автоматического обновления или создания конфигурации, а также обеспечения безопасности и внедрения передового подхода.

По сути, они стремятся создать необходимые защитные механизмы, чтобы разработчики могли продолжать использовать OpenShift без воздействия на другие приложения и без допущения уязвимостей в результате неправильной конфигурации. Для этой задачи идеально подходит Kyverno, нативный механизм политик Kubernetes, который часто используется для решения вышеупомянутых проблем. Дальше я расскажу о том, как начать работу с Kyverno на контейнерной платформе OpenShift.

Red Hat® OpenShift


Контейнерная платформа Red Hat® OpenShift — это ведущая в отрасли гибридная облачная платформа на базе контейнеров и Kubernetes. Использование контейнерной платформы OpenShift упрощает и ускоряет разработку, внедрение и управление жизненным циклом гибридного набора приложений, которые могут быть расположены в совершенно любом месте: в стационарной среде, в публичных облаках и в Edge. Контейнерная платформа OpenShift предназначена для обеспечения непрерывных нововведений и скорости в любом масштабе, помогая организациям быть готовыми к сегодняшнему дню и строить планы для завтрашнего.

Kyverno


Kyverno — идеальное решение для автоматизации, управления и обеспечения безопасности любой платформы на базе Kubernetes, включая контейнерную платформу OpenShift. Kyverno работает как динамический контроллер допуска в кластере. Он получает от kube-apiserver HTTP-обратные вызовы вебхуков с проверкой и изменением допусков и применяет соответствующие политики для получения результатов, которые обеспечивают соблюдение политик допуска или отклоняют запросы. Политики Kyverno написаны на родном для Kubernetes языке YAML, что значительно сокращает время обучения, необходимое для написания собственных политик. Политики Kyverno могут сопоставлять ресурсы, используя селекторы типа ресурса, имени и метки, чтобы инициировать такие действия, как проверка, изменение, генерация и верификация образа для подписи контейнеров и сертификации цепочки программного обеспечения.

Перед началом работы


Для того чтобы начать работу, вам потребуется следующее:

  • Установленная контейнерная платформа OpenShift версии 4.8 или выше.
  • Установленный Helm версии 3.2 (или выше) и настроенный для доступа к вашему кластеру OpenShift.
  • Установленный Kubectl и также настроенный для доступа к вашему кластеру OpenShift.

После того как вы подготовили все необходимые компоненты — приступайте к выполнению следующих шагов:

  • Установите Kyverno.
  • Установите политики Kyverno.
  • Просмотрите отчёт о нарушении политик.

Устанавливаем Kyverno


Для установки Kyverno вам понадобятся права администратора кластера. Последние инструкции по установке Kyverno можно найти здесь.

Сначала добавьте репозиторий Kyverno helm и обновите его:

helm repo add kyverno https://kyverno.github.io/kyverno/
helm repo update

Затем установите Kyverno на ваш кластер OpenShift. Обратите внимание, что пространство имён kyverno будет создано автоматически:

helm install kyverno kyverno/kyverno --namespace kyverno --create-namespace

После установки карты Helm проверьте, запущен ли под Kyverno.

kubectl get pods -n kyverno

Обратите внимание: в зависимости от размера вашего кластера OpenShift, то есть количества ресурсов в кластере, может потребоваться увеличить лимиты памяти и CPU для развёрнутого Kyverno. Также следует увеличить количество реплик до 2, чтобы Kyverno был развёрнут в режиме высокой доступности.
На кластерах OpenShift, если вы хотите предотвратить сканирование и проверку ресурсов в системных пространствах имён (те, что начинаются с openshift), можете обновить карту конфигурации Kyverno, включив в неё следующую запись:

webhooks: '[{"namespaceSelector":{"matchExpressions":[{"key":"openshift.io/run-level","operator":"NotIn",
    "values": ["0","1"]}]}}]'

Как только Kyverno pod будет запущен, он автоматически создаст необходимые вебхуки допуска. Вы также можете проверить CRD, которые установлены для Kyverno, с помощью этой команды:

kubectl get crds |grep kyverno

Устанавливаем политики Kyverno


Теперь, когда Kyverno установлен, вы можете заняться установкой политик. При первой установке рекомендуется настроить их на работу в режиме «аудита», чтобы ни один из запросов на подключение к кластеру OpenShift не был заблокирован. Вы можете узнать, настроена ли политика на «аудит», просто проверив свойство validationFailureAction в манифесте политики.

Для установки типовых политик используйте команду:

helm install kyverno-policies kyverno/kyverno-policies --namespace kyverno

Далее вы можете убедиться, установились ли политики, с помощью команды:

kubectl get clusterpolicies

Результат вывода команды должен будет выглядеть следующим образом:

NAME                             BACKGROUND   ACTION   READY
deny-privilege-escalation        true         audit    true
disallow-add-capabilities        true         audit    true
disallow-host-namespaces         true         audit    true
disallow-host-path               true         audit    true
disallow-host-ports              true         audit    true
disallow-privileged-containers   true         audit    true
disallow-selinux                 true         audit    true
require-default-proc-mount       true         audit    true
require-non-root-groups          true         audit    true
require-run-as-non-root          true         audit    true
restrict-apparmor-profiles       true         audit    true
restrict-seccomp                 true         audit    true
restrict-sysctls                 true         audit    true
restrict-volume-types            true         audit    true

Обратите внимание, что состояние политики READY означает, что она готова обрабатывать любые входящие запросы или выполнять фоновые задачи.

Просматриваем отчёт о нарушении политик


Как только политики будут установлены и готовы, они должны начать генерировать ошибки нарушения политик. Нарушения политик можно просмотреть, получив отчёты о политиках. Чтобы получить отчёты о политиках для всех пространств имён, используйте команду:

kubectl get policyreports -A

Чтобы получить информацию о нарушении политик в масштабе кластера, выполните команду:

kubectl get clusterpolicyreports

Вы также можете просмотреть подробные результаты анализа политик с помощью команды: kubectl describe.

Устраняем проблемы и неполадки


Под Kyverno постоянно сбоит и крашится


Проверьте, не вызван ли сбой тем, что под не получает достаточно памяти. Увеличьте лимит памяти.

Не применяются политики


Проверьте, правильно ли созданы проверяющий и мутирующий вебхуки:

kubectl get validatingwebhookconfigurations,mutatingwebhookconfigurations

Вы должны увидеть следующее:

NAME                                                                                                  WEBHOOKS   AGE
validatingwebhookconfiguration.admissionregistration.k8s.io/kyverno-policy-validating-webhook-cfg     1          46m
validatingwebhookconfiguration.admissionregistration.k8s.io/kyverno-resource-validating-webhook-cfg   1          46m
validatingwebhookconfiguration.admissionregistration.k8s.io/autoscaling.openshift.io                  2          17d
validatingwebhookconfiguration.admissionregistration.k8s.io/multus.openshift.io                       1          17d


NAME                                                                                              WEBHOOKS   AGE
mutatingwebhookconfiguration.admissionregistration.k8s.io/kyverno-policy-mutating-webhook-cfg     1          46m
mutatingwebhookconfiguration.admissionregistration.k8s.io/kyverno-resource-mutating-webhook-cfg   1          46m
mutatingwebhookconfiguration.admissionregistration.k8s.io/kyverno-verify-mutating-webhook-cfg     1          46m

Также проверьте, правильно ли настроена служба Kyverno:

kubectl get services -n kyverno

Вы должны увидеть следующее:

NAME                  TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
kyverno-svc           ClusterIP   172.30.97.254    <none>        443/TCP    13d
kyverno-svc-metrics   ClusterIP   172.30.110.252   <none>        8000/TCP   13d

Для устранения прочих неисправностей ознакомьтесь с документацией Kyverno.

Подводим итоги


Как видите, начать использовать Kyverno на кластере OpenShift очень просто. После установки Kyverno и применения политик вы можете сразу начать учиться писать собственные политики для вашего проекта. Инсталляция OpenShift включает в себя несколько настраиваемых определений ресурсов, поэтому в случае, если вам необходимо валидировать какие-либо кастомные ресурсы, можно просто прописать соответствующую политику Kyverno. Вы также можете найти несколько политик, которые созданы сообществом Kyverno, и применить их к своим кластерам.


НЛО прилетело и оставило здесь промокод для читателей нашего блога:

15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.
Tags:
Hubs:
Total votes 6: ↑6 and ↓0+6
Comments0

Articles

Information

Website
firstvds.ru
Registered
Founded
Employees
51–100 employees
Location
Россия
Representative
FirstJohn