2.部署Keystone服务

news/2024/7/18 12:25:21 标签: 运维, 云原生, openstack

在OpenStack的框架体系中Keystone的作用类似于一个服务总线,为OpenStack提供身份管理服务,包括用户认证,服务认证和口令认证,其他服务通过Keystone来注册服务的Endpoint(端点),针对服务的任何调动都要通过Keystone的身份认证,并获得Endpoint(端点)来进行访问。

部署顺序

keystone组件是第一个要安装的组件,其他组件之间通信都是需要通过keystone进行认证

然后,glance组件负责镜像管理,启动实例时提供镜像服务,可存储各个不同操作系统的镜像;

然后,placement组件,负责为nova提供资源的监控的功能;

然后,nova组件负责管理实例,创建、删除、管理等操作;

最后,neutron组件负责网络,二层和三层网络,通过linuxbridge网桥来镜像连接;

dashboard提供一个图形界面,在web页面可以启动实例,创建网络等等操作;

cinder组件提供一个额外的volume存储卷,启动实例的时候可以创建卷给他绑定上去,自己搭建练习,有没有都行;

keystone数据库配置

controller节点

在安装和配置keystone身份服务之前,必须创建服务对应的数据库用于存储相关数据

然后授权keystone用户本地访问和远程访问两种访问权限

mysql -u root -p123456
CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '123';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '123';

 

 keystone服务安装配置

安装keystone、httpd、mod_wsgi软件(mod_wsgi会提供一个对外的api接口用于接收请求)

yum -y install openstack-keystone httpd mod_wsgi
修改 keystone.conf 配置文件
#查看文件属性
ll /etc/keystone/keystone.conf
-rw-r----- 1 root keystone 140415 6月12 2023 /etc/keystone/keystone.conf
#提前备份配置文件
cp /etc/keystone/keystone.conf{,.bak}
#重新生成配置文件
egrep -v '^#|^$' /etc/keystone/keystone.conf.bak >/etc/keystone/keystone.conf

/etc/keystone/keystone.conf
#修改文件内容
vim /etc/keystone/keystone.conf
[database]
#配置keystone访问数据库的密码
connection =
mysql+pymysql://keystone:123@controller/keystone
[token]
#配置Fernet令牌,方便其他程序通过令牌来连接keyston进行验证
provider = fernet

 初始化数据库,keystone服务会向数据库中导入表结构

su -s /bin/sh -c "keystone-manage db_sync" keystone

 查看数据库验证

mysql -u keystone -p123
use keystone
show tables;

 初始化Fernet密钥存储库

keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone--keystone-group keystone
引导身份服务,使得 keystone 可以在所有网卡的 5000 端口上运行,这里的 ADMIN_PASS (管理员密码)改为: 123
keystone-manage bootstrap --bootstrap-password 123 \
--bootstrap-admin-url http://controller:5000/v3/ \
--bootstrap-internal-url http://controller:5000/v3/ \
--bootstrap-public-url http://controller:5000/v3/ \
--bootstrap-region-id RegionOne

配置HTTP服务

 配置 ServerName选项为控制器节点名称

vim /etc/httpd/conf/httpd.conf

 创建文件链接,这个文件是keystone给生成好的,用于访问keystone的5000端口

ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

设置开机启动并启动 http 服务
systemctl enable httpd.service && systemctl start httpd.service
http 服务正常启动, keystone 5000 端口已经打开

netstat -tunpl | grep httpd
配置 admin 管理员环境变量,定义 admin 管理员的密码为 123
export OS_USERNAME=admin
export OS_PASSWORD=123
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3

创建认证账号

keystone OpenStack 提供身份验证功能, 身份验证使用域 (domain),项目(project),用户(user),角色(Role)的组合。
User 用户 User 就是用户,它代表可以通过 keystone 进行访问的人或者程序;
Role 角色 Role 代表一组用户可以访问的资源权限,用户可以使用角色从而获得该角色的权限;
project 项目:他是各个服务中一些可以访问的资源集合,例如:镜像,存储,网络等资源; domain 域 Domain 的概念实现真正的多租户架构。
云服务的客户是 Domain 的所有者,他们可以在自己的 Domain 中创建多个 Projects、 Users Groups Roles

controller节点

首先创建 domain 域:域名称 example
openstack domain create --description "An Example Domain"  example

#查看域列表
openstack domain list

查看对于域可进行的操作如下:

[root@controller ~]# openstack domain --help

#查看指定域详细信息
openstack domain show default
+-------------+--------------------+
| Field | Value |
+-------------+--------------------+
| description | The default domain |
| enabled | True |
| id | default |
| name | Default |
| options | {} |
| tags | [] |
+-------------+--------------------+

创建project项目:项目名称service,并指定放在default域中

openstack project create --domain default \
--description "Service Project" service

#查看项目列表
openstack project list

 

#查看指定项目详细信息
openstack project show service
创建一个 project 项目:项目名称 myproject ,并指定放在 default 域中
openstack project create --domain default \
--description "Demo Project" myproject

 创建非特权user用户:用户名称myuser ,用户的密码:123

openstack user create --domain default \
--password-prompt myuser

#查看用户列表
openstack user list
admin openstack自带的管理员用户

#查看可进行的操作
openstack user list

#查看指定用户详细信息
openstack user show myuser
创建 role 角色:角色名称为 myrole
openstack role create myrole

#查看指定角色详细信息
openstack role show myrole

 

 角色绑定:myrole角色绑定到myuser用户与myproject项目上

openstack role add --project myproject --user myuser
myrole

 取消环境变量

unset OS_AUTH_URL OS_PASSWORD
keyston 获取 token 令牌,如果能成功获取那么说明 keyston 服务就是没有问题的了
#以admin用户获取token令牌
openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name Default --os-user-domain-name
Default \
--os-project-name admin --os-username admin token issue

注意:这里要输入密码

 

#以myuser用户获取token令牌
openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name Default --os-user-domain-name
Default \
--os-project-name myproject --os-username myuser token
issue

创建环境变量脚本

OpenStack 环境中执行命令的时候需要验证用户身份,而用户身份在Open Stack中通过环境变量的方式来定义与切换,但是这些参数是非常多而且长的,每次输入一次命令就要加上这些参数
为了简化,可以将变量写入脚本,使用的时候只需要执行不同的脚本就可以切换用户身份,方便!
#admin用户脚本(用户密码:123)
vim admin-openrc

 

export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=123
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
#myuser用户脚本(用户密码:123)
vim demo-openrc
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=myproject
export OS_USERNAME=myuser
export OS_PASSWORD=123
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
切换用户身份只需执行脚本即可
source admin-openrc
#查看自己的token令牌
openstack token issue
source demo-openrc
#查看自己token令牌
openstack token issue


http://www.niftyadmin.cn/n/442212.html

相关文章

Mac 多版本jdk安装与切换

macOS上可以安装多个版本的jdk,方法如下: 1.下载jdk 在Oracle官网上下载不同版本的jdk: JDK下载 知乎 - 安全中心 下载Java11版本链接 jdk11​www.oracle.com/java/technologies/javase-jdk11-downloads.html 2.安装jdk 运行此安装包&…

开源大型语言模型(llm)总结

大型语言模型(LLM)是人工智能领域中的一个重要研究方向,在ChatGPT之后,它经历了快速的发展。这些发展主要涉及以下几个方面: 模型规模的增长:LLM的规模越来越大,参数数量显著增加。这种扩展使得…

自学Python第二十八天 - PyMySql库,操作MYSQL数据库

PyMySql 是 python 操作 MYSQL 数据库最常用的库。对于 MYSQL 的安装使用不在这里记录,只学习 python 部分。 一、pymysql 的安装 直接使用 pip 进行安装 pip install pymysql二、连接到数据库 导入 pymysql 包后,使用 pymsql.connect() 函数创建数据…

编译原理笔记(哈工大编译原理)

文章目录 前言概论语言与文法基本概念字母表串字母表与串的联系 文法语言推导和规约句型与句子语言与字母表 文法的分类 前言 说实话,我不是很想上这门课,确实没什么大用,虽然我觉得这门课学一学也挺好,但是我觉得弄8个大实验就真…

ubuntu 系统cron服务简单介绍

ubuntu安装cron 安装:apt-get install cron 启动:service cron start 重启:service cron restart 停止:service cron stop 检查状态:service cron status 查询cron可用的命令:service cron 检查Cronta工具…

JUC并发编程:Condition的简单理解与使用

目录 1:概述 2:举例 3:condition 的一些方法 1:概述 Condition本质上是一个接口,Condition因素与Object监视器方法( wait , notify和notifyAll )成不同的对象,以得到具…

Linux [工具]

工具 补充yumyum的位置yum的使用yum的本质 vimvim的多模式vim多个模式的细节命令模式底行模式 vim的配置 补充 Linux系统中文件名后缀没有直接的意义 但是不代表Linux上的软件不需要后缀, 比如gcc yum yum的位置 我们在手机或者Windows上, 一般都有一个东西 应用商店. 这个东…

SpringCloud-stream一体化MQ解决方案-函数式编程

参考资料: 参考demo 参考视频1 参考视频2 官方文档(推荐) 官方文档中文版 关于Kafka和rabbitMQ的安装教程,见本人之前的博客 rocketMq的安装教程 rocketMq仪表盘安装教程 重!!!