从源代码安装和配置¶
本节描述了如何从源代码安装和配置容器基础设施管理服务。
先决条件¶
在安装和配置容器基础设施管理服务之前,您必须创建数据库、服务凭证和 API 端点。
要创建数据库,请完成以下步骤
使用数据库访问客户端以
root用户身份连接到数据库服务器# mysql创建
magnum数据库CREATE DATABASE magnum;授予对
magnum数据库的适当访问权限GRANT ALL PRIVILEGES ON magnum.* TO 'magnum'@'localhost' \ IDENTIFIED BY 'MAGNUM_DBPASS'; GRANT ALL PRIVILEGES ON magnum.* TO 'magnum'@'%' \ IDENTIFIED BY 'MAGNUM_DBPASS';
将
MAGNUM_DBPASS替换为合适的密码。退出数据库访问客户端。
激活
admin凭证以访问仅管理员可用的 CLI 命令$ . admin-openrc
要创建服务凭证,请完成以下步骤
创建
magnum用户$ openstack user create --domain default \ --password-prompt magnum User Password: Repeat User Password: +-----------+----------------------------------+ | Field | Value | +-----------+----------------------------------+ | domain_id | default | | enabled | True | | id | a8ebafc275c54d389dfc1bff8b4fe286 | | name | magnum | +-----------+----------------------------------+
将
admin角色添加到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 | 194faf83e8fd4e028e5ff75d3d8d0df2 | | name | magnum | | type | container-infra | +-------------+-------------------------------------------------------+
创建容器基础设施管理服务 API 端点
$ openstack endpoint create --region RegionOne \ container-infra public http://CONTROLLER_IP:9511/v1 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | cb137e6366ad495bb521cfe92d8b8858 | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | 0f7f62a1f1a247d2a4cb237642814d0e | | service_name | magnum | | service_type | container-infra | | url | http://CONTROLLER_IP:9511/v1 | +--------------+----------------------------------+ $ openstack endpoint create --region RegionOne \ container-infra internal http://CONTROLLER_IP:9511/v1 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 17cbc3b6f51449a0a818118d6d62868d | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | 0f7f62a1f1a247d2a4cb237642814d0e | | service_name | magnum | | service_type | container-infra | | url | http://CONTROLLER_IP:9511/v1 | +--------------+----------------------------------+ $ openstack endpoint create --region RegionOne \ container-infra admin http://CONTROLLER_IP:9511/v1 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 30f8888e6b6646d7b5cd14354c95a684 | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | 0f7f62a1f1a247d2a4cb237642814d0e | | service_name | magnum | | service_type | container-infra | | url | http://CONTROLLER_IP:9511/v1 | +--------------+----------------------------------+
将
CONTROLLER_IP替换为 magnum 监听的 IP 地址。或者,您可以使用计算实例可访问的主机名。Magnum 需要身份服务中的额外信息来管理 COE 集群。要添加此信息,请完成以下步骤
创建包含项目和用户的
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 | 66e0469de9c04eda9bc368e001676d20 | | name | magnum | +-------------+-------------------------------------------+
创建
magnum_domain_admin用户来管理magnum域中的项目和用户$ openstack user create --domain magnum --password-prompt \ magnum_domain_admin User Password: Repeat User Password: +-----------+----------------------------------+ | Field | Value | +-----------+----------------------------------+ | domain_id | 66e0469de9c04eda9bc368e001676d20 | | enabled | True | | id | 529b81cf35094beb9784c6d06c090c2b | | name | magnum_domain_admin | +-----------+----------------------------------+
将
admin角色添加到magnum域中的magnum_domain_admin用户,以启用magnum_domain_admin用户进行管理权限$ openstack role add --domain magnum --user-domain magnum --user \ magnum_domain_admin admin
注意
此命令不会产生任何输出。
安装和配置组件¶
从源代码安装 Magnum
安装特定于操作系统的先决条件
Ubuntu 16.04 (xenial) 或更高版本
# apt update # apt install python-dev libssl-dev libxml2-dev \ libmysqlclient-dev libxslt-dev libpq-dev git \ libffi-dev gettext build-essential
CentOS 7
# dnf install python-devel openssl-devel mariadb-devel \ libxml2-devel libxslt-devel postgresql-devel git \ libffi-devel gettext gcc
Fedora 21 / RHEL 7
# dnf install python-devel openssl-devel mysql-devel \ libxml2-devel libxslt-devel postgresql-devel git \ libffi-devel gettext gcc
Fedora 22 或更高版本
# dnf install python-devel openssl-devel mysql-devel \ libxml2-devel libxslt-devel postgresql-devel git \ libffi-devel gettext gcc
创建 magnum 用户和必要的目录
创建用户
# groupadd --system magnum # useradd --home-dir "/var/lib/magnum" \ --create-home \ --system \ --shell /bin/false \ -g magnum \ magnum
创建目录
# mkdir -p /var/log/magnum # mkdir -p /etc/magnum
设置目录的所有权
# chown magnum:magnum /var/log/magnum # chown magnum:magnum /var/lib/magnum # chown magnum:magnum /etc/magnum
安装 virtualenv 和 Python 先决条件
安装 virtualenv 并为 Magnum 的安装创建一个
# easy_install -U virtualenv # su -s /bin/sh -c "virtualenv /var/lib/magnum/env" magnum
安装 Python 先决条件
# su -s /bin/sh -c "/var/lib/magnum/env/bin/pip install tox pymysql \ python-memcached" magnum
克隆并安装 Magnum
# cd /var/lib/magnum # git clone https://opendev.org/openstack/magnum # chown -R magnum:magnum magnum # cd magnum # su -s /bin/sh -c "/var/lib/magnum/env/bin/pip install -r requirements.txt" magnum # su -s /bin/sh -c "/var/lib/magnum/env/bin/python setup.py install" magnum
复制 api-paste.ini
# su -s /bin/sh -c "cp etc/magnum/api-paste.ini /etc/magnum" magnum
生成示例配置文件
# su -s /bin/sh -c "/var/lib/magnum/env/bin/tox -e genconfig" magnum # su -s /bin/sh -c "cp etc/magnum/magnum.conf.sample /etc/magnum/magnum.conf" magnum
可选地,如果您想自定义 Magnum API 访问的策略,可以生成一个示例策略文件,将其放入
/etc/magnum文件夹进行进一步修改# su -s /bin/sh -c "/var/lib/magnum/env/bin/tox -e genpolicy" magnum # su -s /bin/sh -c "cp etc/magnum/policy.yaml.sample /etc/magnum/policy.yaml" magnum
编辑
/etc/magnum/magnum.conf文件在
[api]部分,配置主机[api] ... host = CONTROLLER_IP
将
CONTROLLER_IP替换为您希望 magnum api 监听的 IP 地址。在
[certificates]部分,选择barbican(或者,如果您未安装 barbican,则选择x509keypair)使用 barbican 存储证书
[certificates] ... cert_manager_type = barbican
重要提示
Barbican 建议用于生产环境。
要将 x509 证书存储在 magnum 的数据库中
[certificates] ... cert_manager_type = x509keypair
在
[cinder_client]部分,配置区域名称[cinder_client] ... region_name = RegionOne
在
[database]部分,配置数据库访问[database] ... connection = mysql+pymysql://magnum:MAGNUM_DBPASS@controller/magnum
将
MAGNUM_DBPASS替换为您为 magnum 数据库选择的密码。在
[keystone_authtoken]和[trust]部分,配置身份服务访问[keystone_authtoken] ... memcached_servers = controller:11211 auth_version = v3 www_authenticate_uri = http://controller:5000/v3 project_domain_id = default project_name = service user_domain_id = default password = MAGNUM_PASS username = magnum auth_url = http://controller:5000 auth_type = password admin_user = magnum admin_password = MAGNUM_PASS admin_tenant_name = service [trust] ... trustee_domain_name = magnum trustee_domain_admin_name = magnum_domain_admin trustee_domain_admin_password = DOMAIN_ADMIN_PASS trustee_keystone_interface = KEYSTONE_INTERFACE
将 MAGNUM_PASS 替换为您在身份服务中为 magnum 用户选择的密码,并将 DOMAIN_ADMIN_PASS 替换为您为
magnum_domain_admin用户选择的密码。将 KEYSTONE_INTERFACE 替换为
public或internal,具体取决于您的网络配置。如果您的实例无法访问内部 keystone 端点(这通常发生在生产环境中),则应将其设置为public。默认设置为public在
[oslo_messaging_notifications]部分,配置driver[oslo_messaging_notifications] ... driver = messaging
在
[DEFAULT]部分中,配置RabbitMQ消息队列访问[DEFAULT] ... transport_url = rabbit://openstack:RABBIT_PASS@controller
将
RABBIT_PASS替换为您为RabbitMQ中的openstack帐户选择的密码。
此外,编辑
/etc/magnum/magnum.conf文件在
[oslo_concurrency]部分,配置lock_path[oslo_concurrency] ... lock_path = /var/lib/magnum/tmp
如果您决定在
1.e中自定义 Magnum 策略,那么在[oslo_policy]部分,配置policy_file[oslo_policy] ... policy_file = /etc/magnum/policy.yaml
注意
确保
/etc/magnum/magnum.conf仍然具有正确的权限。您可以再次使用以下命令设置权限:# chown magnum:magnum /etc/magnum/magnum.conf
填充 Magnum 数据库
# su -s /bin/sh -c "/var/lib/magnum/env/bin/magnum-db-manage upgrade" magnum
为日志轮转设置 magnum
# cd /var/lib/magnum/magnum # cp doc/examples/etc/logrotate.d/magnum.logrotate /etc/logrotate.d/magnum
完成安装¶
创建 init 脚本和服务
Ubuntu 16.04 或更高版本,Fedora 21 或更高版本/RHEL 7/CentOS 7
# cd /var/lib/magnum/magnum # cp doc/examples/etc/systemd/system/magnum-api.service \ /etc/systemd/system/magnum-api.service # cp doc/examples/etc/systemd/system/magnum-conductor.service \ /etc/systemd/system/magnum-conductor.service
启动 magnum-api 和 magnum-conductor
Ubuntu 16.04 或更高版本,Fedora 21 或更高版本/RHEL 7/CentOS 7
# systemctl enable magnum-api # systemctl enable magnum-conductor
# systemctl start magnum-api # systemctl start magnum-conductor
验证 magnum-api 和 magnum-conductor 服务是否正在运行
Ubuntu 16.04 或更高版本,Fedora 21 或更高版本/RHEL 7/CentOS 7
# systemctl status magnum-api # systemctl status magnum-conductor
安装命令行客户端¶
安装特定于操作系统的先决条件
Fedora 21/RHEL 7/CentOS 7
# dnf install python-devel openssl-devel python-virtualenv \ libffi-devel git gcc
Fedora 22 或更高版本
# dnf install python-devel openssl-devel python-virtualenv \ libffi-devel git gcc
Ubuntu
# apt update # apt install python-dev libssl-dev python-virtualenv \ libffi-dev git gcc
在虚拟环境中安装客户端
$ cd ~ $ git clone https://opendev.org/openstack/python-magnumclient $ cd python-magnumclient $ virtualenv .magnumclient-env $ .magnumclient-env/bin/pip install -r requirements.txt $ .magnumclient-env/bin/python setup.py install
现在,您可以将客户端导出到您的 PATH 中
$ export PATH=$PATH:${PWD}/.magnumclient-env/bin/magnum
注意
命令行客户端可以安装在控制器节点上,也可以安装在与服务不同的主机上。将其安装为非 root 用户是一种良好的做法。