OpenStack [Zed] - Identity Service : keystone install

2023. 11. 18. 00:15OpenStack

OpenStack Identity 서비스는 인증, 권한 부여 및 서비스 카탈로그를 관리하기 위한 단일 통합 지점을 제공합니다.

ID 서비스는 일반적으로 사용자가 상호 작용하는 첫 번째 서비스입니다. 인증되면 최종 사용자는 자신의 ID를 사용하여 다른 OpenStack 서비스에 액세스할 수 있습니다. 마찬가지로 다른 OpenStack 서비스도 Identity 서비스를 활용하여 사용자가 누구인지 확인하고 배포 내에서 다른 서비스가 어디에 있는지 확인합니다. Identity 서비스는 일부 외부 사용자 관리 시스템(예: LDAP)과도 통합할 수 있습니다.

 

사용자와 서비스는 Identity 서비스에서 관리하는 서비스 카탈로그를 사용하여 다른 서비스를 찾을 수 있습니다. 이름에서 알 수 있듯이 서비스 카탈로그는 OpenStack 배포에서 사용 가능한 서비스 모음입니다. 각 서비스에는 하나 이상의 엔드포인트가 있을 수 있으며 각 엔드포인트는 관리, 내부 또는 공용의 세 가지 유형 중 하나일 수 있습니다. 프로덕션 환경에서는 보안상의 이유로 다양한 유형의 사용자에게 노출되는 별도의 네트워크에 다양한 엔드포인트 유형이 상주할 수 있습니다. 예를 들어, 공용 API 네트워크가 인터넷에 표시되어 고객이 클라우드를 관리할 수 있습니다. 관리 API 네트워크는 클라우드 인프라를 관리하는 조직 내 운영자로 제한될 수 있습니다. 내부 API 네트워크는 OpenStack 서비스를 포함하는 호스트로 제한될 수 있습니다. 또한 OpenStack은 확장성을 위해 여러 지역을 지원합니다. 단순화를 위해 이 가이드에서는 모든 엔드포인트 유형과 기본 지역에 관리 네트워크를 사용합니다 RegionOne. Identity 서비스 내에서 생성된 지역, 서비스 및 끝점이 함께 배포를 위한 서비스 카탈로그를 구성합니다. 배포의 각 OpenStack 서비스에는 Identity 서비스에 저장된 해당 끝점이 있는 서비스 항목이 필요합니다. 이 모든 작업은 Identity 서비스를 설치하고 구성한 후에 수행할 수 있습니다.

 

ID 서비스에는 다음 구성 요소가 포함되어 있습니다.

 

섬기는 사람

중앙 집중식 서버는 RESTful 인터페이스를 사용하여 인증 및 권한 부여 서비스를 제공합니다.

 

드라이버

드라이버 또는 서비스 백엔드는 중앙 집중식 서버에 통합됩니다. 이는 OpenStack 외부 리포지토리의 ID 정보에 액세스하는 데 사용되며 OpenStack이 배포된 인프라(예: SQL 데이터베이스 또는 LDAP 서버)에 이미 존재할 수 있습니다.

 

모듈

미들웨어 모듈은 Identity 서비스를 사용하는 OpenStack 구성 요소의 주소 공간에서 실행됩니다. 이러한 모듈은 서비스 요청을 가로채고 사용자 자격 증명을 추출한 후 인증을 위해 중앙 집중식 서버로 보냅니다. 미들웨어 모듈과 OpenStack 구성 요소 간의 통합에는 Python 웹 서버 게이트웨이 인터페이스가 사용됩니다.

 

 

- DB 생성

$ 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';

 

 

- keystone 설치

$ sudo apt install keystone
[sudo] password for stack:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done

 

 

- keystone 설정 변경

$ sudo vi /etc/keystone/keystone.conf


# 변경내용
[database]
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone

[cache]
enabled = true
memcache_servers = 127.0.0.1:11211

[token]
provider = fernet

 

 

- keystone 설정 점검

$ sudo keystone-manage doctor

# 문제 내용이 출력되고 해결책을 알려준다.

 

- keystone database 생성

$ sudo -s /bin/sh -c "keystone-manage db_sync" keystone

 

mys

- fernet 키 저장소 초기화

$ sudo keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
$ sudo keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

 

 

- Identity 서비스 부트스트랩

$ sudo keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
  --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
  
2023-11-24 15:42:41.458 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Created domain default
2023-11-24 15:42:41.543 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Created project admin
2023-11-24 15:42:41.584 488607 WARNING keystone.common.password_hashing [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Truncating password to algorithm specific maximum length 72 characters.: keystone.exception.UserNotFound: Could not find user: admin.
2023-11-24 15:42:42.207 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Created user admin
2023-11-24 15:42:42.218 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Created role reader
2023-11-24 15:42:42.227 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Created role member
2023-11-24 15:42:42.246 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Created implied role where ce506f83960f4dda96a213c2f2e30e3d implies 4610eb039aca4336af5daece65424b48
2023-11-24 15:42:42.256 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Created role admin
2023-11-24 15:42:42.275 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Created implied role where 91240c75ccbc4060ae5455ace7f9e353 implies ce506f83960f4dda96a213c2f2e30e3d
2023-11-24 15:42:42.284 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Granted role admin on project admin to user admin.
2023-11-24 15:42:42.289 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Granted role admin on the system to user admin.
2023-11-24 15:42:42.301 488607 WARNING py.warnings [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] /usr/lib/python3/dist-packages/pycadf/identifier.py:71: UserWarning: Invalid uuid: RegionOne. To ensure interoperability, identifiers should be a valid uuid.
  warnings.warn(('Invalid uuid: %s. To ensure interoperability, '

2023-11-24 15:42:42.304 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Created region RegionOne
2023-11-24 15:42:42.330 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Created public endpoint http://controller:5000/v3/
2023-11-24 15:42:42.338 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Created internal endpoint http://controller:5000/v3/
2023-11-24 15:42:42.344 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Created admin endpoint http://controller:5000/v3/

 

 

- apache 설정 구성

$ sudo vi /etc/apache2/apache2.conf


# 설정내용
ServerName controller


# 서비스 재시작
$ sudo service apache2 restart

 

 

 

- 환경변수 설정

$ sudo vi ~/.bashrc

# 설정내용
export OS_USERNAME=admin
export OS_PASSWORD=패스워드
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

 

 

 

- 도메인 생성

$ openstack domain create --descriptiob "luzetech" luzentech.cc

 

- 프로젝트 생성

$ openstack project create --domain luzentech.cc --description "Service Project" service

 

 

- 최종 확인

$ 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
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field      | Value                                                                                                                                                                                   |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| expires    | 2023-11-24T12:20:28+0000                                                                                                                                                                |
| id         | gAAAAABlYIb8E0wynfqOW_ZJTVA-Di5aMfmBxT89GbGOOhTNZf0eYvNMhBIEB_iYf6_D1iNlRDW0fF-hkzi-25yOTjNp7XLx94xhGvhNV9lVXstOqcNFgvOvyvUu_SV916hgLOO8yVjxhPUFQYNAbb-UutM1eUGmReSQXSdCsOloNJuphb-wHP0 |
| project_id | abee972637f14dd1b5c67d585a5d9910                                                                                                                                                        |
| user_id    | f2319aa9128a47dd9455a9f93aa35e3c                                                                                                                                                        |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+