os-container-infra

OpenStack Контейнерные Кластеры

Эта роль может использоваться для управления контейнерным кластером в Magnum с помощью python-клиента Magnum.

Требования

  • python 2.6+
  • openstacksdk
  • python-magnumclient
  • python-heatclient
  • python-novaclient

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

os_container_infra_cloud — это имя облака (настраивается в cloud.yaml, не обязательно).

os_container_infra_user — это имя SSH-пользователя, например, fedora.

os_container_infra_state должно быть либо present, absent, query, либо upgrade.

os_container_infra_cluster_name — это имя кластера.

os_container_infra_cluster_template_name — это шаблон кластера, который будет использоваться.

os_container_infra_keypair — это ключ, который будет использоваться для доступа к узлам кластера.

os_container_infra_master_count — это количество мастер-узлов.

os_container_infra_node_count — это количество рабочих узлов.

os_container_infra_default_interface — это сеть по умолчанию, используемая для доступа к кластеру.

os_container_infra_interfaces — это список дополнительных сетей, которые будут подключены к узлам кластера.

os_container_infra_inventory — это место, куда будет сохранен инвентарь. Подключение к серверам в кластере возможно, так как по умолчанию Magnum позволяет подключить только один сетевой интерфейс.

os_container_infra_environment_group — это необязательное имя группы Ansible, в которую будут добавлены все хосты кластера и localhost. Это может быть полезно, если есть одна группа, представляющая окружение, например, разработку/тестирование/продукция.

os_container_infra_coe — это движок оркестрации контейнеров, который будет использоваться. Допустимые варианты: kubernetes или swarm.

os_container_infra_k8s_version — это настраиваемая версия Kubernetes, используемая при os_container_infra_state = upgrade.

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

Следующий плейбук создает кластер, подключает два интерфейса к серверам в кластере и создает файл инвентаря, используя информацию для аутентификации из переменных окружения (что является поведением по умолчанию):

---
- hosts: localhost
  become: False
  gather_facts: False
  roles:
  - role: stackhpc.os-container-infra
    os_container_infra_user: fedora
    os_container_infra_state: present
    os_container_infra_cluster_name: k8s
    os_container_infra_cluster_template_name: k8s-fa29
    os_container_infra_roles:
    - name: storage_client
      groups: ["{{ os_container_infra_worker_group }}"]
    os_container_infra_keypair: bharat
    os_container_infra_default_interface: default
    os_container_infra_master_group:
      - name: master
        count: 1
    os_container_infra_worker_group:
      - name: minion
        count: 2
...

Чтобы выполнить аутентификацию с помощью информации, переданной через плейбук, предоставьте переменную в виде словаря:

    os_container_infra_auth:
      auth_url: http://10.60.253.1:5000
      project_name: p3
      username: username
      password: password
      user_domain_name: Default
      project_domain_name: Default
      region_name: RegionOne

Чтобы выполнить аутентификацию с помощью информации, хранящейся в .config/openstack/clouds.yaml или /etc/openstack/clouds.yaml, которые можно сгенерировать с помощью нашей роли stackhpc.os-config, добавьте следующее:

    os_container_infra_auth_type: cloud
    os_container_infra_cloud: mycloud

Для обновления кластера Kubernetes:

    ---
    - hosts: cluster
      gather_facts: False
      become: yes
      roles:
      - role: stackhpc.os-container-infra
        os_container_infra_state: upgrade
        os_container_infra_k8s_version: v1.13.4
        os_container_infra_coe: kubernetes
    ...

Информация по Отладке Ansible

Чтобы увидеть предупреждения, выдаваемые этой ролью, экспортируйте следующую переменную перед запуском ansible:

export ANSIBLE_LOG_PATH=ansible.log
export ANSIBLE_DEBUG=1

Чтобы отфильтровать эти предупреждения:

tail -f ansible.log | grep DEBUG

Известные Проблемы

Модули Ansible template записывают файл инвентаря и могут жаловаться на отсутствие libselinux-python, который уже установлен в большинстве дистрибутивов Linux. Если это так, просто создайте символическую ссылку на директорию selinux в вашей существующей виртуальной среде:

ln -s /usr/lib64/python2.7/site-packages/selinux/ venv/lib64/python2.7/site-packages/

Для новой виртуальной среды:

virtualenv --system-site-packages venv

Лицензия

Apache 2

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

О проекте

Provision Kubernetes or Docker Swarm cluster using Magnum

Установить
ansible-galaxy install stackhpc/ansible-role-os-container-infra
Лицензия
apache-2.0
Загрузки
420
Владелец
StackHPC develops OpenStack capabilities for research computing use cases. Through extensive experience, we understand HPC and cloud.