﻿# Установка Kyverno

> [HTML Version](install-kyverno.html)

Kyverno — это инструмент для управления политиками безопасности в Kubernetes. С его помощью вы можете задавать правила для приложений и ресурсов кластера и автоматически проверять их соблюдение.

Например, можно:

- настроить использование Docker-образов только от доверенных реестров;

- проверить подлинность и целостность Docker-образов перед развёртыванием с помощью цифровых подписей;

- запретить запуск контейнеров с повышенными привилегиями;

- ограничить доступ контейнеров к файловой системе узлов кластера;

- изолировать сетевой трафик между окружениями разных компаний;

- добавлять пользовательские сертификаты CA в контейнеры ELMA365.

Установка Kyverno состоит из двух этапов:

1. [Установка сервиса Kyverno](#download-helm-chart).

2. [Установка политик безопасности Kyverno](#enable-policies).

## Этап 1. Установка сервиса Kyverno



### Шаг 1. Скачивание Helm-чарта и конфигурационного файла

Для установки через интернет получите конфигурационный файл **values-kyverno.yaml**, выполнив команду:

````
helm repo add elma365 https://charts.elma365.tech  
helm repo update  
helm show values elma365/kyverno > values-kyverno.yaml

````
Получение конфигурационного файла для установки в закрытом контуре без доступа в интернет

1. На компьютере с доступом в интернет скачайте образы ELMA365 и загрузите их в локальный реестр образов, выполнив следующую команду:

````
helm repo add elma365 https://charts.elma365.tech  
helm repo update  
helm pull elma365/kyverno

````
Подробнее об этом читайте в статье [«Загрузка образов ELMA365»](downloadin-images-elma365.md).

2. Полученный архив чарта **kyverno-X.Y.Z.tgz** скопируйте на сервер, где будет производиться установка.

3. Распакуйте этот чарт и скопируйте конфигурационный файл по умолчанию **values.yaml** в **values-kyverno.yaml**:

````
tar -xf kyverno-X.Y.Z.tgz  
cp kyverno/values.yaml values-kyverno.yaml
````

````


### Шаг 2. Установка чарта Kyverno с помощью Helm в Kubernetes-кластер

Выполните установку чарта Kyverno в пространство имён, созданное заранее. В данной статье — значение `kyverno`.

Для установки через интернет:

````
helm upgrade --install kyverno elma365/kyverno -f values-kyverno.yaml -n kyverno --create-namespace 

````
Для офлайн-установки без доступа в интернет:

````
helm upgrade --install kyverno ./kyverno -f values-kyverno.yaml -n kyverno --create-namespace

````
Заполнение параметров подключения к приватному registry для установки в закрытом контуре без доступа в интернет

  
Для подключения к приватному **registry** нужно:

1. Скачать образы ELMA365 и загрузить их в локальный реестр образов. Подробнее об этом читайте в статье [«Загрузка образов ELMA365»](downloadin-images-elma365.md).

2. Задать адрес и путь для параметров `kyverno.image.repository`, `kyverno.initImage.repository` и `kyverno.cleanupController.image.repository`.

3. Указать наименование секрета с правами доступа к приватному **registry** в параметрах `kyverno.image.pullSecrets` и `kyverno.cleanupController.image.pullSecrets`. Секрет должен быть создан вручную и зашифрован в Base64.

````
\# Настройки kyverno  
kyverno:  
...  
  # Параметры подключения к приватному registry  
  image:  
\# адрес и путь для приватного registry  
    repository: registry.example.com/kyverno/kyverno  
    tag: v1.9.0  
\# секрет с правами доступа к приватному registry должен быть создан вручную, зашифрованный в Base64  
    pullSecrets:  
      - myRegistryKeySecretName  
  initImage:  
\# адрес и путь для приватного registry  
    repository: registry.example.com/kyverno/kyvernopre  
    tag: v1.9.0  
  cleanupController:  
    image:  
\# адрес и путь для приватного registry  
      repository: registry.example.com/kyverno/cleanup-controller  
      tag: v1.9.0  
\# секрет с правами доступа к приватному registry должен быть создан вручную, зашифрованный в Base64  
      pullSecrets:  
        - myRegistryKeySecretName

````
  
Где:

- формат \[OBJECT\]:

	- адрес — \[OBJECT\];

	- путь — \[OBJECT\];

- формат \[OBJECT\]:

	- адрес — \[OBJECT\];

	- путь — \[OBJECT\];

- формат \[OBJECT\]:

	- адрес — \[OBJECT\];

	- путь — \[OBJECT\].

## Этап 2. Установка политик безопасности Kyverno 

Политики безопасности поставляются в виде отдельного Helm-чарта **kyverno-policies**.

### Шаг 1. Скачивание Helm-чарта политик безопасности

Для установки через интернет скачайте конфигурационный файл **values-policies.yaml**:

````
helm show values elma365/kyverno-policies > values-policies.yaml

````
Получение конфигурационного файла для установки в закрытом контуре без доступа в интернет

1. На компьютере с доступом в интернет скачайте образы ELMA365 и загрузите их в локальный реестр образов, выполнив следующую команду:

````
helm repo add elma365 https://charts.elma365.tech  
helm repo update  
helm pull elma365/kyverno-policies

````
Подробнее об этом читайте в статье [«Загрузка образов ELMA365»](downloadin-images-elma365.md).

2. Полученный архив чарта **kyverno-policies-X.Y.Z.tgz** скопируйте на сервер, где будет производиться установка.

3. Распакуйте этот чарт и скопируйте конфигурационный файл по умолчанию **values.yaml** в **values-policies.yaml**:

````
tar -xf kyverno-policies-X.Y.Z.tgz  
cp kyverno-policies/values.yaml values-policies.yaml

````


### Шаг 2. Настройка политик безопасности

В конфигурационном файле **values-policies.yaml** включите необходимые политики и настройте их.

В таблице ниже вы можете ознакомиться с доступными политиками и перейти к их описанию.

| | |
|------|------|
| **Название** | **Назначение** |
| [Политика добавления пользовательских сертификатов CA в контейнеры ELMA365](ca-certificates-adding-policy.md) | Настроить автоматическое подключение тома с пользовательским сертификатом корневого CA к контейнерам ELMA365 с определённой меткой |
| [Политика проверки подписей Docker-образов](docker-image-verification-policy.md) | Проверить криптографические подписи Cosign для Docker-образов, чтобы подтвердить их подлинность и целостность перед развёртыванием |
| [Политика ограничения реестров образов](kyverno-restrict-images.md) | Настроить запуск контейнеров только с образами из утверждённых реестров |
| [Политика сетевой изоляции компаний](kyverno-network-policy.md) | Ограничить сетевой трафик между компаниями с разными окружениями (**Dev**, **Stage**, **Prod**), сохраняя разрешённое взаимодействие с системными сервисами кластера |
| [Политика запрета привилегированных контейнеров](kyverno-disallow-privileged-containers.md) | Запретить запуск контейнеров, запрашивающих права суперпользователя на узле, чтобы снизить риск выдачи избыточных прав контейнеру  |
| [Политика запрета монтирования узловых директорий](kyverno-disallow-hostpath.md) | Запретить контейнерам подключаться к файловой системе узла кластера  |


### Шаг 3. Установка чарта политик безопасности Kyverno

После настройки политик безопасности в файле **values-policies.yaml** установите чарт политик в пространство имён **kyverno**:

- для установки через интернет:

````
helm upgrade --install kyverno-policies elma365/kyverno-policies -f values-policies.yaml -n kyverno --create-namespace

- ````
для офлайн-установки без доступа в интернет:

````
helm upgrade --install kyverno-policies ./kyverno-policies -f values-policies.yaml -n kyverno --create-namespace

````
