设为首页 收藏本站
查看: 851|回复: 0

[经验分享] 二、openstack安装之keystone安装篇

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-5-29 08:22:40 | 显示全部楼层 |阅读模式
一、keystone简介

Keystone(OpenStack Identity Service)是OpenStack框架中,负责身份验证、服务规则和服务令牌的功能, 它实现了OpenStack的Identity API。Keystone类似一个服务总线, 或者说是整个Openstack框架的注册表, 其他服务通过keystone来注册其服务的Endpoint(服务访问的URL),任何服务之间相互的调用, 需要经过Keystone的身份验证, 来获得目标服务的Endpoint来找到目标服务。


二、keystone基本概念介绍
1.User --> User即用户,他们代表可以通过keystone进行访问的人或程序。Users通过认证信息(credentials,如密码、API Keys等)进行验证。
2.Tenant --> Tenant即租户,它是各个服务中的一些可以访问的资源集合。例如,在Nova中一个tenant可以是一些机器,在Swift和Glance中一个tenant可以是一些镜像存储,在Quantum中一个tenant可以是一些网络资源。Users默认的总是绑定到某些tenant上。
3.Role --> Role即角色,Roles代表一组用户可以访问的资源权限,例如Nova中的虚拟机、Glance中的镜像。Users可以被添加到任意一个全局的 或 租户内的角色中。在全局的role中,用户的role权限作用于所有的租户,即可以对所有的租户执行role规定的权限;在租户内的role中,用户仅能在当前租户内执行role规定的权限。
4.Service --> Service即服务,如Nova、Glance、Swift。根据前三个概念(User,Tenant和Role)一个服务可以确认当前用户是否具有访问其资源的权限。但是当一个user尝试着访问其租户内的service时,他必须知道这个service是否存在以及如何访问这个service,这里通常使用一些不同的名称表示不同的服务。在上文中谈到的Role,实际上也是可以绑定到某个service的。例如,当swift需要一个管理员权限的访问进行对象创建时,对于相同的role我们并不一定也需要对nova进行管理员权限的访问。为了实现这个目标,我们应该创建两个独立的管理员role,一个绑定到swift,另一个绑定到nova,从而实现对swift进行管理员权限访问不会影响到Nova或其他服务。
5.Endpoint --> Endpoint即为端点,我们如果需要访问一个服务,则必须知道他的endpoint。因此,在keystone中包含一个endpoint模板(endpoint template,在安装keystone的时候我们可以在conf文件夹下看到这个文件),这个模板提供了所有存在的服务endpoints信息。一个endpoint template包含一个URLs列表,列表中的每个URL都对应一个服务实例的访问地址,并且具有public、private和admin这三种权限。public url可以被全局访问(如http://compute.example.com),private url只能被局域网访问(如http://compute.example.local),admin url被从常规的访问中分离。

三、keystone流程
wKioL1VnG36SN4R0AAF2-1HARN0089.jpg

四、keystone安装
1.在控制节点上安装OpenStack身份认证服务和python-keystoneclient
  # yum install -y openstack-keystone python-keystoneclient
2.身份认证服务需要用数据库来存储相关信息,所以要在配置文件中指定当地数据库的位置。
  # openstack-config --set /etc/keystone/keystone.conf database connection mysql://keystone:keystone@controller keystone
3.用root账户登录数据库,创建keystone用户和相关数据库并授予访问权限
  mysql> CREATE DATABASE keystone;
  mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone';
  mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone';
  mysql> FLUSH PRIVILEGES;
  mysql> exit;
4.填充keystone数据库
  # su -s /bin/sh -c "keystone-manage db_sync" keystone
5.定义一个授权令牌当作在身份服务和其他OpenStack服务的共享秘钥,使用openssl来生成一个随机令牌,并将其存储到配置文件。
  # ADMIN_TOKEN=$(openssl rand -hex 10)
  # echo $ADMIN_TOKEN > token_key
  # openstack-config --set /etc/keystone/keystone.conf DEFAULT admin_token $ADMIN_TOKEN
6.默认情况下,keystone使用PKI token。创建签名秘钥和证书以及限制对生成的数据访问
  # keystone-manage pki_setup --keystone-user keystone --keystone-group keystone
  # chown -R keystone:keystone /etc/keystone/ssl
  # chmod -R o-rwx /etc/keystone/ssl
7.启动身份认证服务和配置开机启动
  # service openstack-keystone start
  # chkconfig openstack-keystone on
8.默认情况下,身份认证服务会无限期存储数据库中过期的令牌,过期的令牌将大幅增加数据库的大小和可能会减少服务的性能,特别是在测试环境或者有限的资源下的情况下。我们建议配置一个周期性任务来清除每小时过期的令牌
  # (crontab -l -u keystone 2>&1 | grep -q token_flush) || \
  echo '@hourly /usr/bin/keystone-manage token_flush >/var/log/keystone/keystone-tokenflush.log 2>&1' >> /var/spool/cron/keystone

五、创建users,tenant,role
在安装完身份认证服务后,我们得设置user、tenant、role进行身份验证;这些都是用于允许访问服务和端点。
通常,你将使用一个用户名和密码进行身份验证服务,但是,由于你还没有创建任何用户,所以你必须使用授权令牌(即之前我们保存在token_key文件中随机字符)。你可以通过--os-token选项或者设置OS_SERVICE_TOKEN环境变量来成功使用keystone命令。设置OS_SERVICE_TOKEN以及OS_SERVICE_ENDPOINT指定身份认证服务正在运行。ADMIN_TOKEN换成你的授权令牌:
  # export OS_SERVICE_TOKEN=ADMIN_TOKEN
  # export OS_SERVICE_ENDPOINT=http://controller:35357/v2.0
1.创建一个管理用户
  根据以下步骤创建管理用户、角色、租户,你将使用这些账户跟OpenStack云进行交互。
  默认情况下,身份认证服务会创建一个特殊的_member_角色,openstack dashboard将会自动向用户授予访问这个角色的权限。你要给admin用户访问权限除了admin role外。
  (1)创建admin用户
   # keystone user-create --name=admin --pass=openstack --email=353764437@qq.com
  (2)创建admin角色
   # keystone role-create --name=admin
  (3)创建admin租户
   # keystone tenant-create --name=admin --description="Admin Tenant"
  (4)利用user-role-add选项将admin用户、admin角色、admin租户连接在一起
   # keystone user-role-add --user=admin --tenant=admin --role=admin
  (5)连接admin用户、_member_角色、admin租户
   # keystone user-role-add --user=admin --role=_member_ --tenant=admin
2.创建一个普通用户
  根据以下步骤创建一个普通用户、租户,并将它们与_member_角色连接。你将使用该账户作为非管理员在每日中与openstack云交互。你还可以重复这个过程来创建额外的云用户并设置不同的用户名和密码。当创建这些用户的时候跳过创建承租者步骤。
  (1)创建demo用户
   # keystone user-create --name=demo --pass=openstack --email=353764437@qq.com
  (2)创建demo租户
   # keystone tenant-create --name=demo --description="Demo Tenant"
  (3)连接demo用户、_member_角色和demo租户
   # keystone user-role-add --user=demo --role=_member_ --tenant=demo
3.创建一个服务租户
  openstack服务还需要一个用户名、租户和角色访问其他的openstack服务。基本安装中,openstack服务通常共享一个租户命名的服务。
  (1)创建服务租户
   # keystone tenant-create --name=service --description="Service Tenant"


六、定义服务和API端点
(1)为身份验证创建一个服务条目
   # keystone service-create --name=keystone --type=identity --description="OpenStack Identity"
(2)为身份验证服务指定一个API端点通过返回的服务ID,当你指定一个端点,你必须为public API,internal API和admin API提供URLs。在该指导中,使用controller主机名。注意,身份验证服务为管理API使用了不同的端口
   # keystone endpoint-create \
   --service-id=$(keystone service-list | awk '/ identity / {print $2}') \
   --publicurl=http://controller:5000/v2.0 \
   --internalurl=http://controller:5000/v2.0 \
   --adminurl=http://controller:35357/v2.0


七、验证身份验证的安装
(1)为了验证身份服务的安装和配置是否正确,清除OS_SERVICE_TOKEN和OS_SERVICE_ENDPOINT环境变量的值:
   # unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT
(2)你现在可以使用普通用户基于名称的身份验证。使用admin用户和你为改账户设置的密码来请求身份验证令牌
   # keystone --os-username=admin --os-password=openstack --os-auth-url=http://controller:35357/v2.0 token-get
(3)验证授权行为。为此,验证授权的租户
   # keystone --os-username=admin --os-password=openstack \
   --os-tenant-name=admin --os-auth-url=http://controller:35357/v2.0 \
   token-get
(4)你可以在操作系统中设置--os-*变量来简化命令行的用法。为管理凭证和管理端点,创建admin-openrc.sh文件,内容如下:   
   export OS_USERNAME=admin
   export OS_PASSWORD=openstack
   export OS_TENANT_NAME=admin
   export OS_AUTH_URL=http://controller:35357/v2.0
(5)source该文件使环境变量生效
   # source admin-openrc.sh
(6)验证你的admin-openrc.sh文件配置是否正确,运行一样的命令除了--os-*参数。
   # keystone token-get
   命令返回一个令牌并指定的ID用户,则证明你配置的环境变量正确
(7)验证你的管理员账户已授权执行管理命令
   # keystone user-list
    wKioL1VnP4Oji_WlAACoFgICzrA212.jpg
   # keystone user-role-list --user admin --tenant admin
    wKioL1VnQALSYEtEAADdrUZvTzw498.jpg
   注意:上面这张图少截了前面id部分        

至此,身份验证服务安装完毕!


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-71670-1-1.html 上篇帖子: 一、openstack安装之基础环境准备篇 下篇帖子: 三、openstack安装之glance安装篇
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表