Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Managed Service for Kubernetes
  • Сопоставление с другими сервисами Yandex Cloud
  • Начало работы
    • Все руководства
    • Создание нового Kubernetes-проекта в Yandex Cloud
    • Создание кластера Kubernetes без доступа в интернет
    • Запуск рабочих нагрузок с GPU
    • Использование групп узлов c GPU без предустановленных драйверов
    • Установка Time-Slicing GPUs
    • Миграция ресурсов в другую зону доступности
    • Использование модулей Yandex Cloud в Terraform
    • Шифрование секретов в Managed Service for Kubernetes
      • Интеграция с Argo CD
      • Интеграция с Crossplane
      • Синхронизация с секретами Yandex Lockbox
      • Настройка Fluent Bit для работы с Cloud Logging
      • Настройка Gateway API
      • Настройка L7-балансировщика Application Load Balancer с помощью Ingress-контроллера
      • Настройка логирования для L7-балансировщика Application Load Balancer с помощью Ingress-контроллера
      • Создание L7-балансировщика с профилем безопасности Smart Web Security через Ingress-контроллер Application Load Balancer
      • Проверка состояния приложений в кластере Managed Service for Kubernetes с помощью L7-балансировщика Application Load Balancer
      • Использование Jaeger для трассировки запросов в Managed Service for YDB
      • Настройка Kyverno & Kyverno Policies
      • Использование Metrics Provider для трансляции метрик
      • Редактирование изображений для сайтов с помощью Thumbor
      • Использование Istio
      • Использование HashiCorp Vault для хранения секретов
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Обучающие курсы

В этой статье:

  • Необходимые платные ресурсы
  • Перед началом работы
  • Установите приложение Kyverno & Kyverno Policies
  • Проверьте работу политики для профиля baseline
  • Создайте собственную политику Kyverno policies и проверьте ее работу
  • Проверьте работу Kyverno & Kyverno Policies
  • Удалите созданные ресурсы
  1. Практические руководства
  2. Использование продуктов Cloud Marketplace
  3. Настройка Kyverno & Kyverno Policies

Настройка Kyverno & Kyverno Policies

Статья создана
Yandex Cloud
Улучшена
Dmitry A.
Обновлена 28 марта 2025 г.
  • Необходимые платные ресурсы
  • Перед началом работы
  • Установите приложение Kyverno & Kyverno Policies
  • Проверьте работу политики для профиля baseline
  • Создайте собственную политику Kyverno policies и проверьте ее работу
  • Проверьте работу Kyverno & Kyverno Policies
  • Удалите созданные ресурсы

Приложение Kyverno и его расширение Kyverno policies используются для управления политиками безопасности Kubernetes. Они представлены в Kyverno как ресурсы Kubernetes.

Чтобы интегрировать Kyverno & Kyverno Policies в Managed Service for Kubernetes:

  1. Установите приложение Kyverno & Kyverno Policies.
  2. Проверьте работу политики для профиля baseline.
  3. Создайте собственную политику Kyverno policies и проверьте ее работу.

Если созданные ресурсы вам больше не нужны, удалите их.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки описываемого решения входят:

  • Плата за кластер Managed Service for Kubernetes: использование мастера и исходящий трафик (см. тарифы Managed Service for Kubernetes).
  • Плата за узлы кластера (ВМ): использование вычислительных ресурсов, операционной системы и хранилища (см. тарифы Compute Cloud).
  • Плата за публичный IP-адрес, если он назначен узлам кластера (см. тарифы Virtual Private Cloud).

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

  1. Создайте кластер и группу узлов Managed Service for Kubernetes.

    Вручную
    Terraform
    1. Если у вас еще нет сети, создайте ее.

    2. Если у вас еще нет подсетей, создайте их в зонах доступности, где будут созданы кластер Kubernetes и группа узлов.

    3. Создайте группы безопасности для кластера Managed Service for Kubernetes и входящих в него групп узлов.

      Важно

      От настройки групп безопасности зависит работоспособность и доступность кластера, а также запущенных в нем сервисов и приложений.

    4. Создайте кластер Managed Service for Kubernetes и группу узлов любой подходящей конфигурации. При создании укажите группы безопасности, подготовленные ранее.

    1. Если у вас еще нет Terraform, установите его.

    2. Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.

    3. Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его.

    4. Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.

    5. Скачайте в ту же рабочую директорию файл конфигурации кластера k8s-cluster.tf. В файле описаны:

      • Сеть.

      • Подсеть.

      • Кластер Managed Service for Kubernetes.

      • Сервисный аккаунт, необходимый для работы кластера и группы узлов Managed Service for Kubernetes.

      • Группы безопасности, которые содержат необходимые правила для кластера Managed Service for Kubernetes и входящих в него групп узлов.

        Важно

        От настройки групп безопасности зависит работоспособность и доступность кластера, а также запущенных в нем сервисов и приложений.

    6. Укажите в файле конфигурации:

      • Идентификатор каталога.
      • Версию Kubernetes для кластера и групп узлов Managed Service for Kubernetes.
      • CIDR кластера Kubernetes.
      • Имя сервисного аккаунта. Оно должно быть уникальным в рамках каталога.
    7. Проверьте корректность файлов конфигурации Terraform с помощью команды:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

    8. Создайте необходимую инфраструктуру:

      1. Выполните команду для просмотра планируемых изменений:

        terraform plan
        

        Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

      2. Если вас устраивают планируемые изменения, внесите их:

        1. Выполните команду:

          terraform apply
          
        2. Подтвердите изменение ресурсов.

        3. Дождитесь завершения операции.

      В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления.

  2. Установите kubectl и настройте его на работу с созданным кластером.

Установите приложение Kyverno & Kyverno PoliciesУстановите приложение Kyverno & Kyverno Policies

Установите приложение Kyverno & Kyverno Policies согласно инструкции со следующими настройками:

  • Pod Security Standard profile — baseline.
  • Validation failure action — enforce.

Профиль Pod Security Standard baseline уже содержит минимально ограничительную политику, которая предотвращает известные превышения привилегий.

Проверьте работу политики для профиля baselineПроверьте работу политики для профиля baseline

  • Создайте под nginx со стандартными параметрами:

    kubectl run nginx --image nginx
    

    Результат:

    pod/nginx created
    

    Такой под удовлетворяет требованиям правил политики для профиля baseline.

  • Создайте под nginx в привилегированном режиме:

    kubectl run nginx --image nginx --privileged=true
    

    Результат:

    Error from server: admission webhook "validate.kyverno.svc-fail" denied the request:
    
    policy Pod/default/nginx for resource violation:
    
    disallow-privileged-containers:
      privileged-containers: 'validation error: Privileged mode is disallowed. The fields
        spec.containers[*].securityContext.privileged and spec.initContainers[*].securityContext.privileged
        must be unset or set to `false`. rule privileged-containers failed at path /spec/containers/0/securityContext/privileged/'
    

    Правила политики для профиля baseline запрещают создание подов в привилегированном режиме.

Примечание

Несмотря на то, что политики предназначены для подов, Kyverno применяет их на все ресурсы, способные создавать поды.

Создайте собственную политику Kyverno policies и проверьте ее работуСоздайте собственную политику Kyverno policies и проверьте ее работу

  1. Создайте политику, которая будет требовать, чтобы все поды имели метку app.kubernetes.io/name:

    1. Сохраните спецификацию для создания объекта ClusterPolicy в YAML-файл с названием policy.yaml:

      apiVersion: kyverno.io/v1
      kind: ClusterPolicy
      metadata:
        name: require-labels
      spec:
        validationFailureAction: Enforce
        rules:
        - name: check-for-labels
          match:
            any:
            - resources:
                kinds:
                - Pod
          validate:
            message: "label 'app.kubernetes.io/name' is required"
            pattern:
              metadata:
                labels:
                  app.kubernetes.io/name: "?*"
      
    2. Выполните команду:

      kubectl apply -f policy.yaml
      

      Результат:

      clusterpolicy.kyverno.io/require-labels created
      
  2. (Опционально) Установите Policy Reporter в кластер Managed Service for Kubernetes, чтобы получить возможность сохранять и обрабатывать результаты срабатывания политики.

Проверьте работу Kyverno & Kyverno PoliciesПроверьте работу Kyverno & Kyverno Policies

  • Создайте под nginx без Kubernetes-метки app.kubernetes.io/name:

    kubectl run nginx --image nginx
    

    Результат:

    Error from server: admission webhook "validate.kyverno.svc-fail" denied the request:
    resource Pod/default/nginx was blocked due to the following policies
    
    require-labels:
      check-for-labels: 'validation error: label ''app.kubernetes.io/name'' is required.
        Rule check-for-labels failed at path /metadata/labels/app.kubernetes.io/name/'
    
  • Создайте под nginx с меткой app.kubernetes.io/name:

    kubectl run nginx --image nginx --labels app.kubernetes.io/name=nginx
    

    Результат:

    pod/nginx created
    

Удалите созданные ресурсыУдалите созданные ресурсы

Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:

Вручную
Terraform
  1. Удалите кластер Kubernetes.
  2. Удалите созданные подсети и сети.
  3. Удалите созданный сервисный аккаунт.
  1. В терминале перейдите в директорию с планом инфраструктуры.

    Важно

    Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.

  2. Удалите ресурсы:

    1. Выполните команду:

      terraform destroy
      
    2. Подтвердите удаление ресурсов и дождитесь завершения операции.

    Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.

Была ли статья полезна?

Предыдущая
Использование Jaeger для трассировки запросов в Managed Service for YDB
Следующая
Использование Metrics Provider для трансляции метрик
Проект Яндекса
© 2025 ООО «Яндекс.Облако»