¡La implementación de los componentes de OpenStack-Keystone es súper detallada! ! !

Un servicio de identidad clave

  • Keystone (servicio de identidad de openstack) es un módulo independiente que proporciona autenticación de seguridad en openstack. Es principalmente responsable de la autenticación de identidad de usuario de openstack, la gestión de tokens, los catálogos de servicios que proporcionan acceso a los recursos y el control de acceso basado en roles de usuario.
  • Keystone es similar a un bus de servicio, o al registro de todo el marco de trabajo de openstack. Otros servicios utilizan Keystone para registrar sus puntos finales de servicio (URL de acceso al servicio). Las llamadas entre cualquier servicio deben ser autenticadas por Keystone para obtener el destino. Punto final del servicio para encontrar el servicio de destino
  • Resumen: Keystone proporciona múltiples métodos de autenticación y autorización para guiar el endpoint de backend

Dos, la función principal de keystone.

  • Autenticación: Emisión y verificación de tokens.
  • Autorización de usuario (autorización): para otorgar a los usuarios los permisos en un servicio
  • Gestión de usuarios (cuenta): gestiona las cuentas de usuario
  • Catálogo de servicios: proporcione puntos finales de API para los servicios disponibles

Tres conceptos relacionados con la piedra angular

user:指使用openstack service的用户
Project(Tenant):可以理解为一个人或者服务所拥有的资源集合
Role:用户划分权限。通过给user指定role,使user获得role对应操作权限
Authentication:确定用户身份的过程
Token:是一个字符串表示,作为访问资源的令牌。Token包含了在指定范围和有效时间内,可以被访问的资源
Credentials:用于确认用户身份的凭证,用户的用户名和密码,或者是用户名和API密钥,或者身份管理服务提供的认证令牌
Service:openstack service,即openstack中运行的组件服务,如nova、swif、glance、neutron、cinder等
Endpoint:一个可以通过网络来访问和定位某个openstack service的地址,通常是一个URL
  • Resumen: debido a que la interacción punto a punto de los componentes se realiza a través de la API, Apache realiza la API y Apache proporciona una URL, por lo que el acoplamiento de API y API también se puede considerar como el acoplamiento de URL y URL.

Cuatro, proceso de certificación keystone

  • Comprensión simple: la máquina virtual se creó como ejemplo: para
    crear una máquina virtual, primero debe iniciar sesión en la autenticación de usuario y el usuario se autentica en Keystone. Después de la autenticación, no hay problema, inicie sesión. El usuario necesita para enviar una solicitud a nova para obtener instrucciones para instalar la máquina virtual, y nove devuelve la solicitud a Keyston nuevamente. La verificación, la verificación es exitosa, la creación de una máquina virtual requiere recursos como recursos de imagen de vista y red de neutrones, entonces nova querrá a keystone para solicitar verificación para obtener recursos, y la verificación se llevará a cabo si no hay problema con la creación de la VM, luego de que la creación sea exitosa, el mensaje será devuelto al usuario.

Cinco pasos de implementación de componentes OpenStack-Keystone

Preste atención al orden al instalar componentes openstack

1 stone Keystone (apache) 2 、 vistazo 3 、 nova 4 、 neutrón

部署openstack组件时,需先行安装认证服务(keystone),而认证服务是使用Apache运行的,安装完成后才可以创建、管理账号,然后安装镜像服务(glance)、计算服务(nova)、网络服务(neutron)
其中计算服务和网络服务分为管理端和客户端,所以需要在openstack的管理端安装计算服务和网络服务的管理端,在创建虚拟机的node节点上安装计算服务和网络服务的客户端,最后安装dashboard服务,openstack各种组件的API都是通过apache运行的;
openstack的管理端负责创建、管理虚拟机过程的调度
通过openstack管理端创建虚拟机的相关数据最终都会记录到mysql(mariadb)中;node节点没有权限往数据库中写数据,只有控制端有权限,并且node节点与控制端通讯是通过rabbitmq间接通讯,node节点会监听rabbitmq,控制端也会监听rabbitmq,控制端把创建虚拟机的指令发送到rabbitmq,由监听rabbitmq指定队列的node节点接收消息并创建虚拟机;

Pasos de implementación

Uno, crear una instancia de base de datos y un usuario de base de datos

mysql -u root -p
create database keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';
flush privileges;
quit

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Dos, instale y configure keystone, base de datos, Apache

Instalar keystone, httpd, mod_wsgi

La función del paquete #mod_wsgi es permitir que apache haga proxy de los componentes del programa python; todos los componentes de openstack, incluida la API, están escritos en python, pero el acceso es apache, y apache enviará la solicitud a python para su procesamiento .Estos paquetes solo se instalan en el nodo controlador

yum -y install openstack-keystone httpd mod_wsgi
cp -a /etc/keystone/keystone.conf{,.bak}
#通过pymysql模块访问mysql,指定用户名密码、数据库的域名、数据库名
grep -Ev "^$|#" /etc/keystone/keystone.conf.bak > /etc/keystone/keystone.conf
#指定token的提供者;提供者就是keystone自己本身
openstack-config --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:KEYSTONE_DBPASS@ct/keystone

openstack-config --set /etc/keystone/keystone.conf token provider fernet
#Fernet:一种安全的消息传递格式

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

Inicializar la base de datos del servicio de autenticación

su -s /bin/sh -c "keystone-manage db_sync" keystone
初始化fernet 密钥存储库(以下命令会生成两个密钥,生成的密钥放于/etc/keystone/目录下,用于加密数据)
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

Inserte la descripción de la imagen aquí

Configurar el servicio de autenticación de bootstrap

 keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
--bootstrap-admin-url http://ct:5000/v3/ \
--bootstrap-internal-url http://ct:5000/v3/ \
--bootstrap-public-url http://ct:5000/v3/ \
--bootstrap-region-id RegionOne			#指定一个区域名称

#此步骤是初始化openstack,会把openstack的admin用户的信息写入到mysql的user表中,以及url等其他信息写入到mysql的相关表中; 
#admin-url是管理网(如公有云内部openstack管理网络),用于管理虚拟机的扩容或删除;如果共有网络和管理网是一个网络,则当业务量大时,会造成无法通过openstack的控制端扩容虚拟机,所以需要一个管理网; 
#internal-url是内部网络,进行数据传输,如虚拟机访问存储和数据库、zookeeper等中间件,这个网络是不能被外网访问的,只能用于企业内部访问 
#public-url是共有网络,可以给用户访问的(如公有云) #但是此环境没有这些网络,则公用同一个网络 
#5000端口是keystone提供认证的端口 
#需要在haproxy服务器上添加一条listen 
#各种网络的url需要指定controler节点的域名,一般是haproxy的vip的域名(高可用模式)

Inserte la descripción de la imagen aquí

Configurar el servidor HTTP Apache

echo "ServerName controller" >> /etc/httpd/conf/httpd.conf

Inserte la descripción de la imagen aquí

Crea un archivo de configuración

#Después de instalar el paquete mod_wsgi, se generará el archivo wsgi-keystone.conf. Se configura el host virtual y se monitorea el puerto 5000 en el archivo. Mod_wsgi es la puerta de enlace de Python

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

Inserte la descripción de la imagen aquí

Servicio abierto

systemctl enable httpd
systemctl start httpd

Inserte la descripción de la imagen aquí

Configurar variables de entorno para la cuenta de administrador

#Estas variables de entorno se utilizan para crear roles y proyectos, pero la creación de roles y proyectos requiere información de autenticación, por lo que la información de autenticación, como los nombres de usuario y las contraseñas, se declaran a través de variables de entorno para engañar a openstack para que haya iniciado sesión y haya pasado la autenticación, de modo que se pueden crear proyectos y roles; es decir, la información de autenticación del usuario administrador se pasa a openstack para su verificación declarando variables de entorno para realizar una operación no interactiva para openstack

cat >> ~/.bashrc << EOF
export OS_USERNAME=admin				#控制台登陆用户名
export OS_PASSWORD=ADMIN_PASS			#控制台登陆密码
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://ct:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
EOF

source ~/.bashrc

Inserte la descripción de la imagen aquí

Al configurar las variables de entorno, puede usar comandos de openstack para realizar algunas operaciones

openstack user list				#查看用户列表

Inserte la descripción de la imagen aquí

3. Cree dominios, proyectos, usuarios y roles de OpenStack.

#Cree un proyecto (proyecto), créelo en el dominio especificado (dominio), especifique la información de descripción, el nombre del proyecto es servicio (puede usar la lista de dominios de openstack para consultar)

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

Inserte la descripción de la imagen aquí

#Cree un rol (puede usar la lista de roles de openstack para ver)

openstack role create user

Inserte la descripción de la imagen aquí

#Ver la lista de roles de openstack

openstack role list

Inserte la descripción de la imagen aquí

admin es el administrador y el miembro es el inquilino usuario: usuario

#Compruebe si se puede obtener la información del token sin especificar una contraseña (servicio de verificación y autenticación)

openstack token issue

Inserte la descripción de la imagen aquí

Resumen:

  • El componente Keystone se utiliza como un módulo unificado de autenticación y autorización en el clúster de OpenStack. Su función principal es controlar el usuario (usuario), el inquilino (inquilino), el rol (rol), el token (token / certificado) (la compilación e implementación manual es alrededor ampliado por esta función)

  • Usuario: el usuario que usa openstack.

  • Arrendatario: Arrendatario puede entenderse como un conjunto de recursos propiedad de una persona, proyecto u organización. Puede haber muchos usuarios en un inquilino y estos usuarios pueden usar los recursos en el inquilino de acuerdo con la división de permisos.

  • Rol: Rol, utilizado para asignar permisos de operación. Se puede asignar un rol a un usuario, de modo que el usuario obtenga la autoridad de operación correspondiente al rol.

  • Token: se refiere a una cadena de valores de bits o cadenas que se utilizan como token para acceder a los recursos. El token contiene el rango de recursos accesibles y el tiempo válido. El token es un tipo de credencial de usuario. Debe solicitar el servicio de Keystone con el nombre de usuario y la contraseña correctos para obtener el token.

  • La idea de usar el modo de implementación manual para construir OpenStack:
    1. Implementación de submódulo
    2. El entorno básico para implementar el módulo keystone (descargar paquetes de dependencia, paquetes de componentes, herramientas / complementos de terceros)
    3. Crear y habilitar la función de este módulo (usando keystone como Por ejemplo, crear e inicializar la base de datos de autenticación, modificar el archivo de configuración, inicializar el formato key-fernet, configurar el servicio de autenticación de identidad)
    4. Verificación

Supongo que te gusta

Origin blog.csdn.net/weixin_51614581/article/details/114678007
Recomendado
Clasificación