(原创)OpenStack服务如何使用Keystone(一)---

系统 1917 0

  (一) Keystone端的操作

  (二) 如何在OpenStack服务上部署Keystone中间件

  (三) 详细配置keystonemiddleware

  OpenStack项目如果要使用Keystone作为统一的身份与权限管理系统, 需要做一定的设置工作, 我们将这些设置划分为在Keystone端进行的操作和在其他OpenStack服务端进行的操作, 本文介绍在Keystone端如何为其他服务建立对应的"服务用户"和维护整个系统的服务目录.

  OenStack中用户使用身份凭证登录系统, 获得Keystone签发的令牌, 其后在整个OpenStack系统中使用该令牌访问其他的服务(如Nova等)直至令牌失效或被撤销. 令牌在OpenStack系统内提供了单点登录的支持, 简化了系统对用户的认证, 成为用户身份和权限管理的重要对象.

  用户在使用已经获得的令牌请求OpenStack的其他服务时, 这些服务必须验证令牌的有效性--即这个令牌确实是Keystone已经签发的,且没有过期和被撤销. 这个验证工作由项目名称为"keystonemiddleware"的Keystone中间件完成. Keystone中间件部署在OpenStack其他服务上, 调用项目(或库)"python-keystoneclient"提供的接口, 验证用户令牌的有效性. Keystone中间件进行的验证工作需要访问Keystone的身份API, 这个操作需要一定的权限才能完成. 因此需要在Keystone端先为Keystone中间件创建用户, 再为这个用户指派具有相应权限的角色.由于部署和配置Keystone中间件的工作在其他OpenStack服务端完成, 因此将创建用户和授予角色等操作针对服务进行, Keystone中间件直接使用自己部署在的服务具有的账户信息即可. (当然, 也可以直接绕过身份认证, 将Keystone中间件的令牌设置成引导Keystone时设置的"admin_token", 这样Keystone中间件默认具有最高权限).

  Keystone端的工作主要包括以下两个方面:  

  1. 创建"服务用户"并指派角色.

  2. 维护整个OpenStack系统的服务目录.

  下文就围绕这两方面工作详细展开.

 

一. 创建"服务用户"并指派角色

  1. 创建"服务项目"

  从上文可以看出, OpenStack服务或部署在其上的Keystone中间件实质上也是Keystone的用户. 通常我们为所有的OpenStack服务创建一个统一的项目, 如"service". 这里使用openstackclient完成命令行操作, 所有的操作都是基于第三版的身份API完成.

  首先与系统建立一个会话,

      $ openstack --os-token 
      
        admin_token
      
       --os-url 
      
        keystone_url
      
       --os-identity-api-version 
      
        3
      
       #Press Enter
    

  一旦认证成功, 系统显示如下的提示符, 表示进入到openstackclient提供的脚本界面.

      (openstack) YOUR_COMMAND_HERE
    

  接着创建一个包含所有将要部署的OpenStack服务的"服务项目", 这里将其命名为"service".

      (openstack) project create service
    

  为具体类型的OpenStack服务(这里以Nova为例)创建属于他们的用户(当然也可以多个服务使用一个用户名).

      (openstack) user create --password 
      
        PassWord
      
       --project service nova
    

  在已经配置好Keystone, 创建和定义了具体的管理员角色后, 为刚刚新建的"服务用户"授予项目内的管理员角色, 确保其能够调用验证令牌的身份API. 这里以授予系统默认的"admin"角色为例.

      (openstack) role add admin --project service --user nova
    

  这样用户"nova"就具有了在项目"service"上的"admin"角色.

 

二. 维护整个OpenStack系统的服务目录

  Keystone在OpenStack系统中提供的一项重要支持就是维护着整个系统中所有服务的目录. 包括服务的类型, 名称, 具体的端点URL等. 其他服务如Dashboard非常依赖这些信息. Keystone自带两种服务目录存储驱动, 既可以将服务目录存储在文件中, 也可以存储在SQL后端中. 当然, 前端的用户接口都是一样的.

  在向OpenStack系统中添加服务时, 应将其注册到Keystone的服务目录下, 这样其他服务才能通过服务目录找到它.

      
        (openstack)
      
       service create nova --
      
        type compute \

                                
      
      --description 
      
        "
      
      
        Nova Compute Service
      
      
        "
      
      
        
          (openstack)
        
         service create glance 
      
      --
      
        type image \

                                  
      
      --description 
      
        "
      
      
        Glance Image Service
      
      
        "
      
      
        
          (openstack)
        
         service create keystone 
      
      --
      
        type identity \

                                    
      
      --description 
      
        "
      
      
        Keystone Identity Service
      
      
        "
        
(openstack) service create swift --type object - store \ --description " Swift Service "

  OpenStack系统中服务只是一个抽象的概念, 具体的功能是通过访问服务对应的端点(URL)完成的, 因此必须在成功部署某个服务端点后其添加到系统的服务目录.

      (openstack) endpoint create keystone public http:
      
        //
      
      
        201.111.129.48:5000/
      
    

  上面的指令将一个端点添加到了服务“keystone”的公共界面. 端点可以属于特定的地理域, 具体操作可以查阅这里.

  这里就完成了部署OpenStack服务时在Keystone端进行的操作. 前文已经说过, 其他服务与Keystone的交互通常是由Keystone中间件完成的, 下一篇随笔将介绍 如何在OpenStack服务上部署Keystone中间件 .

(原创)OpenStack服务如何使用Keystone(一)---Keystone端的操作


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论