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

Информация об авторе

http://www.tauceti.blog

Установить
ansible-galaxy install githubixx.cni
Лицензия
Unknown
Загрузки
216
Владелец
Senior System Engineer - Python, Go, Cloud, Kubernetes, Commodore, Retro, 80's ;-)