githubixx.cni
ansible-role-cni
Ansible-рол для установки CNI - Container Network Interface. CNI (Интерфейс сети контейнеров), проект Фонда облачных вычислений, включает спецификацию и библиотеки для написания плагинов, которые настраивают сетевые интерфейсы в контейнерах Linux, а также множество поддерживаемых плагинов. CNI отвечает только за сетевое подключение контейнеров и освобождение выделенных ресурсов при удалении контейнера. Из-за этого фокуса CNI имеет широкий спектр поддержки, а спецификация проста в реализации.
История изменений
История изменений:
Смотрите полный CHANGELOG
Недавние изменения:
0.7.0+1.4.0
- добавлена поддержка Ubuntu
24.04
0.6.0+1.4.0
- обновлена версия
cni_version
до1.4.0
0.5.1+1.3.0
- изменен режим директории для распаковки
- добавлен подкаталог к значению
cni_tmp_directory
, чтобы избежать изменения прав родительской директории. Еслиcni_tmp_directory
был установлен на/tmp
, операцияunarchive
меняла режим этой директории. Добавление статического подкаталога кcni_tmp_directory
решает эту проблему.
0.5.0+1.3.0
- обновлена версия
cni_version
до1.3.0
- добавлен шаг проверки Molecule
- убрана поддержка Ubuntu
18.04
(достигнут конец поддержки) - добавлена поддержка Ubuntu
22.04
- добавлены бинарные файлы
dummy
иtap
CNI - переименован сценарий Molecule
kvm
вdefault
/ перемещены параметрыmemory
иcpus
в коробки
Переменные роли
# Версия плагина CNI
cni_version: "1.4.0"
# Директория для бинарных файлов CNI
cni_bin_directory: "/opt/cni/bin"
# Директория для конфигурации CNI
cni_conf_directory: "/etc/cni/net.d"
# Директория для хранения архива
cni_tmp_directory: "{{ lookup('env', 'TMPDIR') | default('/tmp', true) }}"
# Владелец/группа файлов/директорий "CNI". Если переменные не заданы,
# результат будет принадлежать текущему пользователю.
cni_owner: "root"
cni_group: "root"
# Указывает права доступа к бинарным файлам "CNI"
cni_binary_mode: "0755"
# Операционная система
# Возможные варианты: "linux", "windows"
cni_os: "linux"
# Архитектура процессора, на которой должен работать "CNI".
# Другие возможные значения: "arm", "arm64", "mips64le", "ppc64le", "s390x"
cni_arch: "amd64"
# Название файла архива
cni_archive: "cni-plugins-{{ cni_os }}-{{ cni_arch }}-v{{ cni_version }}.tgz"
# URL для загрузки CNI (обычно не требует изменения)
cni_url: "https://github.com/containernetworking/plugins/releases/download/v{{ cni_version }}/{{ cni_archive }}"
# Перезапустить сервис "kubelet" после изменения бинарных файлов или конфигурации "CNI".
# Этот обработчик ожидает, что существует сервис systemd под названием "kubelet.service".
cni_restart_kubelet: false
Планируемые задачи
- Распространить файлы конфигурации сети CNI (для Cilium это не нужно, так как файлы CNI создаются Cilium)
Пример плейбука
- hosts: ваш-хост
roles:
- githubixx.cni
Тестирование
Эта роль имеет небольшую тестовую настройку, созданную с использованием Molecule, libvirt (vagrant-libvirt) и QEMU/KVM. Пожалуйста, посмотрите мой блог Тестирование Ansible-ролей с помощью Molecule, libvirt (vagrant-libvirt) и QEMU/KVM о том, как настроить. Конфигурация для тестирования здесь.
После этого можно выполнить molecule:
molecule converge
Это установит несколько виртуальных машин (VM) с различными поддерживаемыми операционными системами Linux и установит CNI
.
Чтобы провести несколько тестов:
molecule verify
Для очистки выполните
molecule destroy
Лицензия
GNU GENERAL PUBLIC LICENSE Version 3
Информация об авторе
Ansible role to install CNI (Container Network Interface)
ansible-galaxy install githubixx.cni