(一) Keystone端的操作
(二) 如何在OpenStack服務上部署Keystone中間件
?
部署OpenStack時一般先安裝Keystone服務, 一旦Keystone運行, 管理員搭建起服務目錄, 形成OpenStack系統的框架. 創建"服務用戶"和服務目錄在 上一篇隨筆 中有詳細的介紹.
配置OpenStack服務與Keystone協同工作, 需要在這些服務上部署"keystonemiddleware"(即Keystone中間件), 通過該中間件完成令牌驗證等需要和與Keystone交互的功能.
Keystone中間件的大體工作流程:
1. 客戶端向服務發送服務請求是會攜帶從Keystone那里獲得的令牌;
2. Keystone中間件會查詢并驗證這個令牌的有效性, 并采取相應的措施;
3. Keystone中間件會從有效的令牌中提取諸如用戶名, 用戶ID, 項目名, 項目ID, 角色等信息, 并將這些信息以header的形式傳遞給"下游"的OpenStack服務.
配置Keystone中間件并不是工作的全部, 我們將在下文進行詳細的介紹.
Keystone中間件的"身份"和普通用戶的身份不同. Keystone中間件部署在OpenStack服務的Paste管道上, 代表服務攔截用戶的HTTP請求, 驗證用戶提供的令牌是否真實有效, 并判斷用戶是否具有相應的權限. 因此Keystone中間件的 "身份" 實質是其部署在OpenStack服務在Keystone服務端的身份. Keystone中間件是一個特殊的Keystone用戶.
?
下面介紹如何部署和配置Keystone中間件:
1. 安裝代碼. 在OpenStack服務所在主機上安裝"keystonemiddleware"項目代碼, 可采用pip, easy_install工具或從GitHub下載源碼等多種方式安裝. Git項目和Pypi包均名為"keystonemiddleware".
?
2. 定義Paste過濾器. 在OpenStack服務的Paste部署文件(如:api-paste.ini)中,設置如下的WSGI組件:
[ filter:authtoken ] paste.filter_factory = keystonemiddleware.auth_token:filter_factory
?
3. 安裝Keystone中間件. 將2中定義的Paste過濾器 "authtoken" 添加到Paste管道的適當位置, 完成在OpenStack服務上部署Keystone中間件.?
?
4. 配置Keystone中間件. Keystone中間件的配置項包括Keystone服務的URL, 中間件用戶名, 密碼等. 具體的配置項我們在下一篇隨筆中進行詳細介紹. Keystone中間件有兩種配置方法, 一是在第2步定義過濾器時緊隨工廠函數設置. 另一種是將配置信息統一寫入到OpenStack服務的主配置 *.conf文件中, 保持Paste部署文件簡潔. 需注意當兩處進行了重復配置時,?Paste配置文件中的配置項起決定作用.?
注意兩種方法的細微差別:
(1) 在Paste部署文件中配置Keystone中間件,
[ filter:authtoken ] paste.filter_factory = keystonemiddleware.auth_token:filter_factory identity_uri = http:// identity_url :35357 / admin_user = nova admin_password = password ...
這種方式的好處的是簡單方便, Keystone中間件的部署與配置點相同.
?
(2) 在*.conf配置文件中配置Keystone中間件,
[ DEFAULT ] ... auth_strategy = keystone ... [ keystone_authtoken ] identity_uri = http:// identity_url :35357 / admin_user = nova admin_password = password
...
即首先要到*.conf文件的? [ DEFAULT ] ?段落下找到? auth_strategy ?字段, 設置為"keystone". 接著到? [ keystone_authtoken ] ?段落下, 配置項同(1).
可采取這些流程配置Keystone中間件的OpenStack服務包括: Nova, Neutron, Cinder, Glance等. 具體的配置文件分別是,
Nova: nova.conf 和 api-paste.ini
Neutron: ?neutron.conf 和 api-paste.ini
Cinder: ? ?cinder.conf 和 api-paste.ini
Glance: ? ?glance-api.conf 和glance-api-paste.ini
對象存儲服務Swift略有不同. Swift默認的認證授權組件"tempauth"已經逐漸被社區棄用, 推薦一致地使用Keystone. Swift的默認配置目錄中沒有Paste部署文件, 因此對Keystone中間件的部署和配置都在Swift的proxy-server.conf文件中完成.
在Swift的proxy-server.conf文件中查找如下段落, 注意其中的 "tempauth"中間件,
[ pipeline:main ] pipeline = ... tempauth ... proxy-server
這里Swift默認使用自帶的Paste過濾器? tempauth , 要使用Keystone中間件, 就要將這個Paste管道中的? tempauth ?替換成如下的兩個Paste過濾器:
[ pipeline:main ] pipeline = ... authtoken keystoneauth ... proxy-server
在文件proxy-server.conf中配置Paste過濾器? authtoken ?和? keystoneauth ?:
[ filter:authtoken ] # paste.filter_factory = keystonemiddleware.auth_token:filter_factory # auth_uri = http://keystonehost:5000 / # admin_user = swift # admin_password = password ... [ filter:keystoneauth ] # use = egg:swift#keystoneauth ... # operator_roles = admin, swiftoperator ... # reseller_admin_role = ResellerAdmin ... # default_domain_id = default ... # allow_names_in_acls = true
配置文件模板會默認注釋掉所有配置項, 管理員根據旁邊的說明取消注釋, 將配置項設置成適當的值, 這樣就完成了在Swift上部署Keystone中間件的工作.
前文介紹了OpenStack的主要服務如何整合Keystone, 部署Keystone中間件. 這里還要簡單說明OpenStack的Dashboard如何與Keystone整合.
Horizon是 OpenStack 的 Web UI, 為了使用第三版的 Keystone API, 我們需要在 Horizon 的 openstack_dashboard/local/local_settings.py 文件中做如下改動:
1. 在配置項? OPENSTACK_API_VERSIONS ?中添加? "identity": 3 ?
2. 將配置項? OPENSTACK_KEYSTONE_URL ?的URL以? /v3/ ?結尾.
至此就完成了Keystone中間件的部署, 本文沒有涉及OpenStack的所有項目, 但是OpenStack不同服務的相似性很高, 后上馬的項目尊重前期項目得出的一致性經驗. 我們以OpenStack最核心的服務入手, 介紹了如何將其與Keystone服務整合. 接下來, 詳細配置Keystone中間件 .
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
