containerd

ansible-role-containerd

Роль Ansible для установки containerd. containerd — это стандартный контейнерный движок, акцентирующий внимание на простоте, надежности и переносимости. Он доступен как демон для Linux и Windows, который может управлять полным жизненным циклом контейнера на своем хосте: перенос и хранение образов, выполнение и наблюдение за контейнерами, низкоуровневое хранение и сетевые подключения и т.д.

История изменений

Изменения:

Смотрите полный CHANGELOG

Недавние изменения:

0.13.1+1.7.20

  • ОБНОВЛЕНИЕ
    • обновление containerd до v1.7.20

0.13.0+1.7.19

  • ФУНКЦИЯ

    • добавлена поддержка Ubuntu 24.04
  • ОБНОВЛЕНИЕ

    • обновление containerd до v1.7.19

Установка

  • Скачайте напрямую с Github (перейдите в директорию роли Ansible перед клонированием): git clone https://github.com/githubixx/ansible-role-containerd.git githubixx.containerd

  • Через команду ansible-galaxy и загрузка прямо из Ansible Galaxy: ansible-galaxy install role githubixx.containerd

  • Создайте файл requirements.yml со следующим содержимым (это загрузит роль из Github) и установите с ansible-galaxy role install -r requirements.yml:

---
roles:
  - name: githubixx.containerd
    src: https://github.com/githubixx/ansible-role-containerd.git
    version: 0.13.1+1.7.20

Переменные роли

# В настоящее время поддерживается только значение "base"
containerd_flavor: "base"

# Версия containerd для установки
containerd_version: "1.7.19"

# Директория, где будут храниться бинарные файлы "containerd"
containerd_binary_directory: "/usr/local/bin"

# Место расположения конфигурационного файла containerd
containerd_config_directory: "/etc/containerd"

# Директория для хранения архива
containerd_tmp_directory: "{{ lookup('env', 'TMPDIR') | default('/tmp', true) }}"

# Владелец/группа бинарных файлов "containerd". Если переменные не заданы,
# то результирующий бинарный файл будет принадлежать текущему пользователю.
containerd_owner: "root"
containerd_group: "root"

# Указывает разрешения для бинарных файлов "containerd"
containerd_binary_mode: "0755"

# Операционная система
# Возможные варианты: "linux", "windows"
containerd_os: "linux"

# Архитектура процессора, на которой должен работать "containerd".
# Другие возможные значения: "arm64", "arm"
containerd_arch: "amd64"

# Имя имя архивного файла
containerd_archive_base: "containerd-{{ containerd_version }}-{{ containerd_os }}-{{ containerd_arch }}.tar.gz"

# URL загрузки containerd (обычно не нужно менять)
containerd_url: "https://github.com/containerd/containerd/releases/download/v{{ containerd_version }}/{{ containerd_archive_base }}"

# Настройки сервиса systemd для containerd
containerd_service_settings:
  "ExecStartPre": "{{ modprobe_location }} overlay"
  "ExecStart": "{{ containerd_binary_directory }}/containerd"
  "Restart": "always"
  "RestartSec": "5"
  "Type": "notify"
  "Delegate": "yes"
  "KillMode": "process"
  "OOMScoreAdjust": "-999"
  "LimitNOFILE": "1048576"
  "LimitNPROC": "infinity"
  "LimitCORE": "infinity"

# Содержимое конфигурационного файла "containerd". Настройки ниже отличаются от
# настроек по умолчанию "containerd".
#
# Конфигурация по умолчанию для "containerd" может быть сгенерирована с помощью этой команды:
#
# containerd config default
#
# Отличия от конфигурации по умолчанию:
#
# - Файл конфигурации содержит несколько переменных роли, которые будут заменены при
#   обработке шаблона конфигурации.
# - В 'plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options'
#   настройка "SystemdCgroup" установлена на "true" вместо "false". Это важно для
#   Kubernetes, например. Также см.:
#   https://kubernetes.io/docs/setup/production-environment/container-runtimes/#containerd-systemd)
#
containerd_config: |
  version = 2
  [plugins]
    [plugins."io.containerd.grpc.v1.cri"]
      sandbox_image = "registry.k8s.io/pause:3.8"
      [plugins."io.containerd.grpc.v1.cri".cni]
        bin_dir = "/opt/cni/bin"
        conf_dir = "/etc/cni/net.d"
      [plugins."io.containerd.grpc.v1.cri".containerd]
        [plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
          [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
            runtime_type = "io.containerd.runc.v2"
            [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
              BinaryName = "/usr/local/sbin/runc"
              SystemdCgroup = true
  [stream_processors]
    [stream_processors."io.containerd.ocicrypt.decoder.v1.tar"]
      args = ["--decryption-keys-path", "{{ containerd_config_directory }}/ocicrypt/keys"]
      env = ["OCICRYPT_KEYPROVIDER_CONFIG={{ containerd_config_directory }}/ocicrypt/ocicrypt_keyprovider.conf"]
    [stream_processors."io.containerd.ocicrypt.decoder.v1.tar.gzip"]
      args = ["--decryption-keys-path", "{{ containerd_config_directory }}/ocicrypt/keys"]
      env = ["OCICRYPT_KEYPROVIDER_CONFIG={{ containerd_config_directory }}/ocicrypt/ocicrypt_keyprovider.conf"]

Зависимости

Необязательные зависимости (например, необходимые для Kubernetes):

Вы, конечно, можете использовать любую другую роль runc и CNI.

Пример плейбука

- hosts: ваш-хост
  roles:
    - githubixx.containerd

Более подробные примеры доступны в тестах Molecule.

Тестирование

Эта роль имеет небольшую тестовую настройку, созданную с использованием Molecule, libvirt (vagrant-libvirt) и QEMU/KVM. Пожалуйста, смотрите мою статью в блоге Тестирование ролей Ansible с Molecule, libvirt (vagrant-libvirt) и QEMU/KVM о том, как настроить. Конфигурация теста здесь.

После этого можно выполнить molecule:

molecule converge

Это создаст несколько виртуальных машин (ВМ) с различными поддерживаемыми операционными системами Linux и установит containerd, runc и плагины CNI (которые необходимы, например, для Kubernetes).

Также включен небольшой этап проверки. Он загружает контейнер nginx и запускает его, чтобы убедиться, что containerd настроен правильно и может запускать образы контейнеров:

molecule verify

Чтобы очистить, выполните

molecule destroy

Лицензия

Общая публичная лицензия GNU версии 3

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

http://www.tauceti.blog

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