[关闭]
@zhangyy 2019-12-25T17:21:34.000000Z 字数 3917 阅读 123

Openstack 云计算(二): Openstack Rocky部署二 keystone 部署与验证

openstack系列


  • 一: keystone认证服务
  • 二: keystone的部署

一: keystone 认证服务

  1. Keystone(OpenStack Identity Service)是 OpenStack 框架中负责管理身份验证、服务规则和服务令牌功能的模块。用户访问资源需要验证用户的身份与权限,服务执行操作也需要进行权限检测,这些都需要通过 Keystone 来处理。Keystone类似一个服务总线, 或者说是整个Openstack框架的注册表, 其他服务通过keystone来注册其服务的Endpoint(服务访问的URL),任何服务之间相互的调用, 需要经过Keystone的身份验证, 来获得目标服务的Endpoint来找到目标服务。
  2. 1)用户与认证:用户权限与用户行为跟踪
  3. User 用户
  4. Tenant 租户
  5. Token 令牌
  6. Role 角色
  7. 2)服务目录:提供一个服务目录,包括所有服务项与相关API的端点
  8. Service 服务
  9. Endpoint 端点

二: keystone的部署

2.1 在控制节点创建keystone相关数据库并授权

  1. mysql -uroot -pflyfish225
  2. CREATE DATABASE keystone;
  3. GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone';
  4. GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone';
  5. flush privileges;
  6. show databases;
  7. select user,host from mysql.user;

image_1d8llli4l1lo92go8bpum519uq9.png-183.4kB

2.2.在控制节点安装keystone相关软件包

  1. yum install openstack-keystone httpd mod_wsgi -y
  2. yum install openstack-keystone python-keystoneclient openstack-utils -y

image_1d8lmb1ui1uqsttn1fu9vqc1teom.png-177.2kB

image_1d8lmc5441e07e221cbb13bj1c5613.png-173.1kB

2.3 keystone 文件配置

  1. openstack-config --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:keystone@controller/keystone
  2. openstack-config --set /etc/keystone/keystone.conf token provider fernet
  3. grep '^[a-z]' /etc/keystone/keystone.conf

image_1d8lmn0qsa751eqtgd3g031au71g.png-31.9kB

  1. su -s /bin/sh -c "keystone-manage db_sync" keystone
  2. mysql -uroot -pflyfish225
  3. use keystone;
  4. show tables;

image_1d8lmr9i2n043ba1m6t185519nt1t.png-154.8kB

2.4 初始化Fernet令牌库

  1. keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
  2. keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

image_1d8lmvl5pvco1nv0156detd6q62a.png-44.7kB

2.5 定义访问端点

  1. keystone-manage bootstrap --bootstrap-password admin \
  2. --bootstrap-admin-url http://controller:5000/v3/ \
  3. --bootstrap-internal-url http://controller:5000/v3/ \
  4. --bootstrap-public-url http://controller:5000/v3/ \
  5. --bootstrap-region-id RegionOne

image_1d8ln65mu1jkl1pkpqo1vuu2a22n.png-50.6kB

2.6 配置httpd 服务

  1. vim /etc/httpd/conf/httpd.conf
  2. ---
  3. ServerName controller
  4. ---
  5. ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
  6. service httpd start
  7. chkconfig httpd on

3.png-27.9kB

image_1d8lnfl3f9qr1n91mre1o471gsm3g.png-130.8kB

image_1d8lnguqp191q16c31tbnsub11m13t.png-72.5kB

  1. 临时配置管理员账户的相关变量进行管理
  2. export OS_USERNAME=admin
  3. export OS_PASSWORD=admin
  4. export OS_PROJECT_NAME=admin
  5. export OS_USER_DOMAIN_NAME=Default
  6. export OS_PROJECT_DOMAIN_NAME=Default
  7. export OS_AUTH_URL=http://controller:5000/v3
  8. export OS_IDENTITY_API_VERSION=3

image_1d8lnl8c4rug1rkrjea1qjg1dvk4d.png-77.4kB

  1. env |grep OS_

image_1d8lnmi4b4i019fsfqcrlv9va4q.png-65.6kB

  1. 查看命令
  2. openstack endpoint list
  3. openstack project list
  4. openstack user list

image_1d8lnpahupumdb7e6jaqr14lr57.png-123.9kB

2.7 创建keystone的一般实例

  1. # 以下命令会在project表中创建名为example的项目
  2. openstack domain create --description "An Example Domain" example

image_1d8lnslif1dtjcon1dmqetq1e1p5n.png-51.4kB

  1. keystone系统环境创建名为service的项目提供服务
  2. 用于常规(非管理)任务,需要使用无特权用户
  3. 以下命令会在project表中创建名为service的项目
  4. openstack project create --domain default --description "Service Project" service

image_1d8lnutvbsiq1n9qk6f13ufupc64.png-63.9kB

  1. 创建myproject项目和对应的用户及角色
  2. # 作为一般用户(非管理员)的项目,为普通用户提供服务
  3. # 以下命令会在project表中创建名为myproject项目
  4. openstack project create --domain default --description "Demo Project" myproject

image_1d8lo0m0gl71rdba51nv3m06k.png-55.4kB

  1. 在默认域创建myuser用户
  2. openstack user create --domain default --password-prompt myuser
  3. role表创建myrole角色
  4. openstack role create myrole

image_1d8lo7gb8117k3k0nsj13cl1bih71.png-70.8kB

image_1d8lo942i136v1tqs1nlm5fojo7e.png-44.2kB

  1. myrole角色添加到myproject项目中和myuser用户组中
  2. openstack role add --project myproject --user myuser myrole

image_1d8lobqih1rbm1b7cn9a1csv1gfi7r.png-29.1kB

2.8 验证keystone

  1. 去除环境变量
  2. unset OS_AUTH_URL OS_PASSWORD
  3. env |grep OS_

image_1d8lofd6u4pb7ug1456150jg328b.png-61.7kB

  1. 作为管理员用户去请求一个认证的token测试是否可
  2. 以使用admin账户进行登陆认证,请求认证令牌
  3. openstack --os-auth-url http://controller:5000/v3 \
  4. --os-project-domain-name Default --os-user-domain-name Default \
  5. --os-project-name admin --os-username admin token issue

image_1d8lohcfha8rvd59hl2qn1cv48r.png-115.8kB

  1. 使用普通用户获取认证token
  2. openstack --os-auth-url http://controller:5000/v3 \
  3. --os-project-domain-name Default --os-user-domain-name Default \
  4. --os-project-name myproject --os-username myuser token issue

image_1d8lojvupacti6b6or6t11r5398.png-128.4kB

2.9 创建OpenStack客户端环境脚本

  1. 创建admin用户的环境管理脚本
  2. mkdir /openstack
  3. cd /openstack
  4. vim keystone-admin-pass.sh
  5. ---
  6. export OS_PROJECT_DOMAIN_NAME=Default
  7. export OS_USER_DOMAIN_NAME=Default
  8. export OS_PROJECT_NAME=admin
  9. export OS_USERNAME=admin
  10. export OS_PASSWORD=admin
  11. export OS_AUTH_URL=http://controller:5000/v3
  12. export OS_IDENTITY_API_VERSION=3
  13. export OS_IMAGE_API_VERSION=2
  14. ---
  15. source keystone-admin-pass.sh
  16. 创建普通用户myuser的客户端环境变量脚本
  17. cd /openstack
  18. vim keystone-myuser-pass.sh
  19. ---
  20. export OS_PROJECT_DOMAIN_NAME=Default
  21. export OS_USER_DOMAIN_NAME=Default
  22. export OS_PROJECT_NAME=myproject
  23. export OS_USERNAME=myuser
  24. export OS_PASSWORD=myuser
  25. export OS_AUTH_URL=http://controller:5000/v3
  26. export OS_IDENTITY_API_VERSION=3
  27. export OS_IMAGE_API_VERSION=2
  28. ---
  29. source keystone-myuser-pass.sh
  30. 请求认证令牌:
  31. openstack token issue
  32. # 可以看到user_id和上面用命令获取到的是一样的,说明配置成功
  33. # 至此,keystone安装完毕

image_1d8lotqa01s594ka1tc13nl1bmg9l.png-101kB

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注