Debian 安装与配置

本节描述了如何在 Debian 上安装和配置容器基础设施管理服务。

先决条件

在安装和配置容器基础设施管理服务之前,您必须创建数据库、服务凭证和 API 端点。

  1. 要创建数据库,请完成以下步骤

    • 使用数据库访问客户端以 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 替换为合适的密码。

    • 退出数据库访问客户端。

  2. 激活 admin 凭证以访问仅管理员可用的 CLI 命令

    $ . admin-openrc
    
  3. 要创建服务凭证,请完成以下步骤

    • 创建 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                                       |
      +-------------+-------------------------------------------------------+
      
  4. 创建容器基础设施管理服务 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 地址。或者,您可以使用计算实例可访问的主机名。

  5. 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
      

      注意

      此命令不会产生任何输出。

安装和配置组件

  1. 安装公共和库软件包

    # DEBIAN_FRONTEND=noninteractive apt-get install magnum-api magnum-conductor
    
  1. 编辑 /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 替换为 publicinternal,具体取决于您的网络配置。如果您的实例无法访问内部 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 帐户选择的密码。

  1. 填充 Magnum 数据库

    # su -s /bin/sh -c "magnum-db-manage upgrade" magnum
    

完成安装

  • 重新启动容器基础设施管理服务

    # service magnum-api restart
    # service magnum-conductor restart