Magnum — это API-сервис OpenStack, созданный для того, чтобы помочь пользователям OpenStack управлять механизмами оркестровки контейнеров, такими как Kubernetes, Docker Swarm и Apache Mesos. Magnum использует Heat для оркестровки образа ОС, содержащего Docker и Kubernetes, и запускает этот образ на виртуальных машинах или на пустом металле в кластерной конфигурации.
В этом руководстве мы рассмотрим шаги, необходимые для настройки Magnum Container Orchestration Service в OpenStack. Прежде чем приступить к выполнению этого руководства, необходимо иметь рабочую облачную среду OpenStack. Для сред разработки у нас есть руководство, к которому вы можете обратиться:
- Развертывание OpenStack на Ubuntu с помощью DevStack
- Развертывание OpenStack на CentOS 7 с помощью Packstack
- Установка OpenStack на CentOS 8 с помощью Packstack
Прежде чем начать
Вам необходимо иметь доступ к:
- Сервер базы данных, используемый службами OpenStack
- Доступ root для изменения конфигурационных файлов Magnum в контроллере
- Доступ к администратору учетные данные файл — .keystonerc или .admin-openrc
Подтвердив доступ к вышеуказанным ресурсам, вы можете приступить к настройке контейнерного сервиса Magnum в OpenStack.
Шаг 1: Создайте пользователя базы данных Magnum
Создайте базу данных magnum и предоставьте соответствующий доступ к ней:
$ sudo mysql -u root -p
CREATE DATABASE magnum;
GRANT ALL PRIVILEGES ON magnum.* TO 'magnum'@'localhost' IDENTIFIED BY 'aShuumoNg8ieche';
GRANT ALL PRIVILEGES ON magnum.* TO 'magnum'@'%' IDENTIFIED BY 'aShuumoNg8ieche';
FLUSH PRIVILEGES;
\q
Заменить MagnumDBPassword с подходящим паролем для пользователя базы данных magnum.
Шаг 2: Создайте пользователя службы magnum
Введите учетные данные администратора, чтобы получить доступ к командам CLI, доступным только администратору:
source ~/.keystonerc
Затем создайте учетную запись пользователя службы magnum.
$ openstack user create --domain default --project service --password aShuumoNg8ieche magnum
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| default_project_id | 0766331616c7429a9b459d0d642cc4db |
| domain_id | default |
| enabled | True |
| id | 60e671d56e4148bca1d5be2e2a1197c4 |
| name | magnum |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
Добавьте роль администратора пользователю magnum:
openstack role add --project service --user magnum admin
Создайте сущность службы magnum:
$ openstack service create --name magnum --description "OpenStack Container Infrastructure Management Service" container-infra
+-------------+-------------------------------------------------------+
| Field | Value |
+-------------+-------------------------------------------------------+
| description | OpenStack Container Infrastructure Management Service |
| enabled | True |
| id | 67eb5d6b7a234f0d84a74806fdfd8e37 |
| name | magnum |
| type | container-infra |
+-------------+-------------------------------------------------------+
Шаг 3: Создание конечных точек API сервиса
Создайте конечные точки API сервиса Container Infrastructure Management.
Заменить контроллер значение с IP-адресом, к которому прислушивается magnum. Это также может быть имя хоста, к которому могут обращаться экземпляры Compute.
$ export controller=192.168.1.10
$ openstack endpoint create --region RegionOne container-infra public http://$controller:9511/v1
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 49fa8d06927747fca27e33e4bbb71180 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | c4f62b6df2694b489d8cdf8caf4f00e1 |
| service_name | magnum |
| service_type | container-infra |
| url | http://192.168.1.10:9511/v1 |
+--------------+----------------------------------+
$ openstack endpoint create --region RegionOne container-infra internal http://$controller:9511/v1
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 1eeba15e78fd4d71b4319ac3479d4078 |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | c4f62b6df2694b489d8cdf8caf4f00e1 |
| service_name | magnum |
| service_type | container-infra |
| url | http://192.168.1.10:9511/v1 |
+--------------+----------------------------------+
$ openstack endpoint create --region RegionOne container-infra admin http://$controller:9511/v1
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 12719874757b4c6e9483c0f62a9154d5 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | c4f62b6df2694b489d8cdf8caf4f00e1 |
| service_name | magnum |
| service_type | container-infra |
| url | http://192.168.1.10:9511/v1 |
+--------------+----------------------------------+
Шаг 4: Создание домена Magnum
Создайте домен magnum, содержащий проекты и пользователей для службы контейнеров.
$ openstack domain create --description "Owns users and projects created by magnum" magnum
+-------------+-------------------------------------------+
| Field | Value |
+-------------+-------------------------------------------+
| description | Owns users and projects created by magnum |
| enabled | True |
| id | 602fe4ebda15445d87f42237a7af9240 |
| name | magnum |
| tags | [] |
+-------------+-------------------------------------------+
Создайте magnum_domain_admin пользователь для управления проектами и пользователями в домене magnum
$ openstack user create --domain magnum --password aShuumoNg8ieche magnum_domain_admin
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | 602fe4ebda15445d87f42237a7af9240 |
| enabled | True |
| id | 7339631f125a40d5b77b0f959990203e |
| name | magnum_domain_admin |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
Добавьте роль администратора в magnum_domain_admin пользователя в домене magnum, чтобы включить привилегии административного управления:
openstack role add --domain magnum --user-domain magnum --user magnum_domain_admin admin
Шаг 5: Установите и настройте компоненты Magnum
Теперь мы можем установить пакеты, необходимые для Magnum.
### CentOS 8+ ###
sudo yum install openstack-magnum-api openstack-magnum-conductor python3-magnumclient
### CentOS 7 ###
sudo yum -y install openstack-magnum-api openstack-magnum-conductor python-magnumclient
### Ubuntu ###
sudo apt -y install magnum-api magnum-conductor python3-magnumclient
Отредактируйте файл /etc/magnum/magnum.conf файл и настройте хост в [api] разделе:
[api]
host = CONTROLLER_IP
port = 9511
enabled_ssl = False
В [certificates] В разделе выберите барбакан (или x509keypair если у вас не установлен барбикен):
[certificates]
cert_manager_type = barbican
В [cinder_client] настройте имя региона:
[cinder_client]
region_name = RegionOne
Регион клиента Magnum:
[magnum_client]
region_name = RegionOne
Клиентский регион Барбикан
[barbican_client]
region_name = RegionOne
В [database] настройте доступ к базе данных:
[database]
connection = mysql+pymysql://magnum:aShuumoNg8ieche@controller/magnum
Заменить MAGNUM_DBPASS с паролем, который вы выбрали для базы данных magnum.
В [keystone_authtoken] и [trust] разделов, настройте доступ к службе Identity:
[keystone_authtoken]
memcached_servers = controller:11211
auth_version = v3
www_authenticate_uri = http://controllerip:5000/v3
project_domain_id = default
project_name = service
user_domain_id = default
password = aShuumoNg8ieche
username = magnum
auth_url = http://controller:5000
auth_type = password
admin_user = magnum
admin_password = aShuumoNg8ieche
admin_tenant_name = service
[trust]
trustee_domain_name = magnum
trustee_domain_admin_name = magnum_domain_admin
trustee_domain_admin_password = aShuumoNg8ieche
trustee_keystone_interface = public
- Заменить
- контроллерип с IP-адресом контроллера / сервера Magnum API
- MAGNUM_PASS с паролем, который вы выбрали для пользователя magnum в службе Identity
- ДОМЕН_АДМИН_ПАСС с паролем, который вы выбрали для пользователя magnum_domain_admin.
- KEYSTONE_INTERFACE с публичным или внутренним интерфейсом в зависимости от конфигурации вашей сети.
В [oslo_messaging_notifications] настройте драйвер:
[oslo_messaging_notifications]
driver = messagingv2
В разделе [DEFAULT] установите каталог журнала и настройте RabbitMQ доступ к очереди сообщений:
[DEFAULT]
state_path = /var/lib/magnum
rootwrap_config = /etc/magnum/rootwrap.conf
log_dir = /var/log/magnum
transport_url = rabbit://guest:guest@controllerip
- Заменить гость:гость с именем пользователя и паролем, которые вы выбрали для учетной записи openstack в RabbitMQ.
- controllerip с IP-адресом узла контроллера OpenStack
Отредактируйте /etc/magnum/magnum.conf файл и установите путь_блокировки в разделе [oslo_concurrency] раздел:
[oslo_concurrency]
lock_path = /var/lib/magnum/tmp
Тепловой клиент:
[heat_client]
region_name = RegionOne
Заполните базу данных Magnum:
$ sudo su -s /bin/sh -c "magnum-db-manage upgrade" magnum
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running upgrade -> 2581ebaf0cb2, initial migration
INFO [alembic.runtime.migration] Running upgrade 2581ebaf0cb2 -> 3bea56f25597, Multi Tenant Support
INFO [alembic.runtime.migration] Running upgrade 3bea56f25597 -> 5793cd26898d, Add bay status
INFO [alembic.runtime.migration] Running upgrade 5793cd26898d -> 3a938526b35d, Add docker volume size column
INFO [alembic.runtime.migration] Running upgrade 3a938526b35d -> 35cff7c86221, add private network to baymodel
INFO [alembic.runtime.migration] Running upgrade 35cff7c86221 -> 1afee1db6cd0, Add master flavor
INFO [alembic.runtime.migration] Running upgrade 1afee1db6cd0 -> 2d1354bbf76e, ssh authorized key
INFO [alembic.runtime.migration] Running upgrade 2d1354bbf76e -> 29affeaa2bc2, rename-bay-master-address
INFO [alembic.runtime.migration] Running upgrade 29affeaa2bc2 -> 2ace4006498, rename-bay-minions-address
INFO [alembic.runtime.migration] Running upgrade 2ace4006498 -> 456126c6c9e9, create baylock table
INFO [alembic.runtime.migration] Running upgrade 456126c6c9e9 -> 4ea34a59a64c, add-discovery-url-to-bay
INFO [alembic.runtime.migration] Running upgrade 4ea34a59a64c -> e772b2598d9, add-container-command
INFO [alembic.runtime.migration] Running upgrade e772b2598d9 -> 2d8657c0cdc, add bay uuid
INFO [alembic.runtime.migration] Running upgrade 2d8657c0cdc -> 4956f03cabad, add cluster distro
INFO [alembic.runtime.migration] Running upgrade 4956f03cabad -> 592131657ca1, Add coe column to BayModel
INFO [alembic.runtime.migration] Running upgrade 592131657ca1 -> 3b6c4c42adb4, Add unique constraints
INFO [alembic.runtime.migration] Running upgrade 3b6c4c42adb4 -> 2b5f24dd95de, rename service port
INFO [alembic.runtime.migration] Running upgrade 2b5f24dd95de -> 59e7664a8ba1, add_container_status
INFO [alembic.runtime.migration] Running upgrade 59e7664a8ba1 -> 156ceb17fb0a, add_bay_status_reason
INFO [alembic.runtime.migration] Running upgrade 156ceb17fb0a -> 1c1ff5e56048, rename_container_image_id
INFO [alembic.runtime.migration] Running upgrade 1c1ff5e56048 -> 53882537ac57, add host column to pod
INFO [alembic.runtime.migration] Running upgrade 53882537ac57 -> 14328d6a57e3, add master count to bay
INFO [alembic.runtime.migration] Running upgrade 14328d6a57e3 -> 421102d1f2d2, create x509keypair table
INFO [alembic.runtime.migration] Running upgrade 421102d1f2d2 -> 6f21dc998bb, Add master_addresses to bay
INFO [alembic.runtime.migration] Running upgrade 6f21dc998bb -> 966a99e70ff, add-proxy
INFO [alembic.runtime.migration] Running upgrade 966a99e70ff -> 6f21dc920bb, Add cert_uuuid to bay
INFO [alembic.runtime.migration] Running upgrade 6f21dc920bb -> 5518af8dbc21, Rename cert_uuid
INFO [alembic.runtime.migration] Running upgrade 5518af8dbc21 -> 4e263f236334, Add registry_enabled
INFO [alembic.runtime.migration] Running upgrade 4e263f236334 -> 3be65537a94a, add_network_driver_baymodel_column
INFO [alembic.runtime.migration] Running upgrade 3be65537a94a -> 1481f5b560dd, add labels column to baymodel table
INFO [alembic.runtime.migration] Running upgrade 1481f5b560dd -> 1d045384b966, add-insecure-baymodel-attr
INFO [alembic.runtime.migration] Running upgrade 1d045384b966 -> 27ad304554e2, adding magnum_service functionality
INFO [alembic.runtime.migration] Running upgrade 27ad304554e2 -> 5ad410481b88, rename-insecure
INFO [alembic.runtime.migration] Running upgrade 5ad410481b88 -> 2ae93c9c6191, add public column to baymodel table
INFO [alembic.runtime.migration] Running upgrade 2ae93c9c6191 -> 33ef79969018, Add memory to container
INFO [alembic.runtime.migration] Running upgrade 33ef79969018 -> 417917e778f5, Add server_type column to baymodel
INFO [alembic.runtime.migration] Running upgrade 417917e778f5 -> 5977879072a7, add-env-to-container
INFO [alembic.runtime.migration] Running upgrade 5977879072a7 -> 40f325033343, add bay_create_timeout to bay
INFO [alembic.runtime.migration] Running upgrade 40f325033343 -> adc3b7679ae, add registry_trust_id to bay
INFO [alembic.runtime.migration] Running upgrade adc3b7679ae -> 57fbdf2327a2, remove baylock
INFO [alembic.runtime.migration] Running upgrade 57fbdf2327a2 -> 05d3e97de9ee, add volume driver
INFO [alembic.runtime.migration] Running upgrade 05d3e97de9ee -> bb42b7cad130, remove node object
INFO [alembic.runtime.migration] Running upgrade bb42b7cad130 -> 5d4caa6e0a42, create trustee for each bay
INFO [alembic.runtime.migration] Running upgrade 5d4caa6e0a42 -> ee92b41b8809, Introduce Quotas
INFO [alembic.runtime.migration] Running upgrade ee92b41b8809 -> 049f81f6f584, remove_ssh_authorized_key_from_baymodel
INFO [alembic.runtime.migration] Running upgrade 049f81f6f584 -> e647f5931da8, add insecure_registry to baymodel
INFO [alembic.runtime.migration] Running upgrade e647f5931da8 -> ef08a5e057bd, remove pod object
INFO [alembic.runtime.migration] Running upgrade ef08a5e057bd -> d072f58ab240, modify x509keypair table
INFO [alembic.runtime.migration] Running upgrade d072f58ab240 -> a1136d335540, Add docker storage driver column
INFO [alembic.runtime.migration] Running upgrade a1136d335540 -> 085e601a39f6, remove service object
INFO [alembic.runtime.migration] Running upgrade 085e601a39f6 -> 68ce16dfd341, add master_lb_enabled column to baymodel table
INFO [alembic.runtime.migration] Running upgrade 68ce16dfd341 -> e0653b2d5271, Add fixed_subnet column to baymodel table
INFO [alembic.runtime.migration] Running upgrade e0653b2d5271 -> 1f196a3dabae, remove container object
INFO [alembic.runtime.migration] Running upgrade 1f196a3dabae -> 859fb45df249, remove replication controller
INFO [alembic.runtime.migration] Running upgrade 859fb45df249 -> b1f612248cab, Add floating_ip_enabled column to baymodel table
INFO [alembic.runtime.migration] Running upgrade b1f612248cab -> fcb4efee8f8b, add version info to bay
INFO [alembic.runtime.migration] Running upgrade fcb4efee8f8b -> fb03fdef8919, rename_baymodel_to_clustertemplate
INFO [alembic.runtime.migration] Running upgrade fb03fdef8919 -> 720f640f43d1, rename bay table to cluster
INFO [alembic.runtime.migration] Running upgrade 720f640f43d1 -> bc46ba6cf949, add keypair to cluster
INFO [alembic.runtime.migration] Running upgrade bc46ba6cf949 -> aa0cc27839af, add docker_volume_size to cluster
INFO [alembic.runtime.migration] Running upgrade aa0cc27839af -> a0e7c8450ab1, add labels to cluster
INFO [alembic.runtime.migration] Running upgrade a0e7c8450ab1 -> 52bcaf58fecb, add master_flavor_id to cluster
INFO [alembic.runtime.migration] Running upgrade 52bcaf58fecb -> 04c625aa95ba, change storage driver to string
INFO [alembic.runtime.migration] Running upgrade 04c625aa95ba -> 041d9a0f1159, add flavor_id to cluster
INFO [alembic.runtime.migration] Running upgrade 041d9a0f1159 -> 9a1539f1cd2c, "add federation table
INFO [alembic.runtime.migration] Running upgrade 9a1539f1cd2c -> cbbc65a86986, Add health_status and health_status_reason to cluster
INFO [alembic.runtime.migration] Running upgrade cbbc65a86986 -> 87e62e3c7abc, add hidden to cluster template
Запустите службы управления инфраструктурой контейнеров и настройте их на запуск при загрузке системы:
### Ubuntu ###
sudo systemctl restart magnum-api magnum-conductor
### CentOS ###
sudo systemctl enable --now openstack-magnum-api.service openstack-magnum-conductor.service
Проверка состояния служб
systemctl status openstack-magnum-api.service openstack-magnum-conductor.service
Чтобы узнать состояние внутренних служб, а именно проводника, из magnum, используйте:
openstack coe service list --column id --column host --column binary --column state --column disabled --column created_at
Пример вывода:
+----+------+------------------+-------+----------+---------------------------+
| id | host | binary | state | disabled | created_at |
+----+------+------------------+-------+----------+---------------------------+
| 1 | None | magnum-conductor | up | False | 2024-07-24T18:35:47+00:00 |
+----+------+------------------+-------+----------+---------------------------+