이번에 맡은 CLI openstack service [CRUD] 파트를 진행
기본구조
openstack service {명령어} [옴션] {대상}
기존 CLI 사용법
조회 명령어
모든 서비스 목록 조회
openstack server list
특정 서비스 목록 조회
openstack service show {서비스 ID}
생성 명령어
서비스 생성
openstack service create --name {service 이름} --description "설명" {서비스 타입}
# 실제 사용 예시
openstack service create --name test-service --description "test" test-type
—name: 이름
—description: 설명
—type: 타입
핵심 서비스
identity- Keystone (인증 서비스)compute- Nova (컴퓨팅 서비스)network- Neutron (네트워킹 서비스)image- Glance (이미지 서비스)volume- Cinder (블록 스토리지)object-store- Swift (오브젝트 스토리지)
추가 서비스
orchestration- Heat (오케스트레이션)cloudformation- Heat CFN 서비스dns- Designate (DNS 서비스)
사용자 정의
- 임의의 문자열 가능 (ex_test)
수정 명령어
주로 set 명령어를 활용
서비스 정보 수정
openstack service set {service ID}
서비스 이름 수정
openstack sercvice set --name {new name} {service ID)
서비스 설명 수정
openstack service set --description "new discription" {service ID}
서비스 복합 수정(이름 + 설명)
openstack service set --name my-new-service --description "new description" {service ID}
삭제 명령어
delete 명령어 활용
서비스 삭제
openstack service delete {service ID or service name}
# 한번에 여러 서비스 삭제
openstack service delete {service ID 1} {service ID 2}
고급 활용 옵션
출력 형식 제어
# default 출력은 value
# -f 옵션 이용
openstack service list -f json|table|value|csv|yaml
필드 선택 옵션
# -c 옵션 이용
openstack service list -c {ID} -c {Name} -c [Type}
service 정렬
# 이름으로 정렬
openstack servcie list --sort-column Name
# 타입으로 정렬
openstack service list --sort-column Type
최대 출력 개수 제한
openstack service list --max-width 12
테스트 환경 구성
# 테스트 서비스 생성
openstack service create --name test-service --description "my test" test-type
# 서비 리스트에서 생성된 서비스 확인
openstack service list
# 서비스 정보 수정
openstack service set --name new-test-service --description "my-new-test"
# 수정된 결과 확인
openstack service show new-test-service
# 테스트 서비스 삭제
openstack service delete new-test-service
Openstack Service Provider
service provider 명령어는 오픈스택의 Placement 서비스를 제어하는 명령어
Placement 서비스란?
오픈스택 환경 내의 모든 자원 제공자(Resource Provider)들의 인벤토리와 사용량을 추적하고 관리하는 중앙 집중형 API 서비스
주요기능
- 자원 인벤토리 추적: 각 컴퓨트 노드가 보유한 vCPU, RAM, 등 현재 사용량을 실시간 파악
- 자원 특성(Trait) 관리: “ssd 사용 가능”, “특정 CPU 아키텍처 지원”등 자원의 질적인 특성을 Trait으로 정의하고 관리
- 자원 할당 요청 처리: 새로운 가상 머신 생성 요청에 대해, 해당 요청에 맞는 자원(vCPU 2개, RAM 4GB…)을 제공할 수 있는 최적의 후보 노드 목록을 Nova Scheduler에 제공
특징
- Federation 인증: 여러 Openstack 클라우드 간 통합 인증 자원
- SAML Assertion: 보안 토큰 기반 인증 방식 사용
- Identity Provider(IdP) 연동 : 외부 인증 시스템과의 신뢰 관계 설정
서비스 활용법
-
효율적인 자원 관리
서비스 프로바이더가 수백, 수천 개의 물리적 서버, 자원 현황 파악
특정 서비스에 부하가 몰리거나 자원이 낭비되는 것을 방지 → 인프라 전체 자원 활용률 극대화
-
다양한 서비스 등급(Flavor) 제공
다양한 고객의 요구 사항(SSD 요구, 많은 vCPU…)를 Placement의 Trait을 활용해서 요구사항 충족
HW_CPU_X86_AVX512트레이트를 가진 서버 그룹에는 고성능 컴퓨팅(HPC)용 상품STORAGE_SSD_NVME트레이트를 가진 서버 그룹에는 고속 I/O 상품을 구성할 수 있음→ 고객이 특정 ‘Flavor’(예: High-CPU-SSD)를 선택하면, Placement는 해당 트레이트를 가진 자원 제공자 목록을 Nova 스케줄러에 전달
→ 서비스의 차별화, 수익 모델 다각화
-
테넌트(고객)별 자원 격리 및 보장
특정 고객, 프로젝트(테넌트) 전용으로 물리적 서버 그룹(Host Aggregate)할당하고
Placement를 통해 그룹 내에서만 가상 머신이 생성되도록 제한 가능
-
가용성 향상 및 안정적 서비스 운영
장애 발생, 유지보수 중인 노드는 비활성화여 스케줄링 대상에서 제거
Federation
서로 다른 클라우드 환경들이 인증을 공유할 수 있게 해주는 기능
OpenStack의 Keystone 서비스에서 제공하는 연합 인증 시스템으로, 외부 Identity Provider가 발행한 신원 정보를 Service Provider가 소비하는 방식으로 작동
핵심 구성요소
- Identity Provider (IdP): 사용자 신원 관리하고 인증 처리
- Service Provider (SP): 인증 Assertion 받아서 리소스 접근 권한 부여
- 매핑(Mapping): IdP의 사용자 정보를 로컬 Keystone 그룹으로 연결
작동 방식
- 사용자가 연합 인증 URL에 접근:
/v3/OS-FEDERATION/identity_providers/{idp_id}/protocols/{protocol_id}/auth - IdP로 리다이렉트: 사용자가 외부 인증 시스템에서 로그인함
- 토큰 발급: 성공적인 인증 후 OpenStack 토큰 받음
- 리소스 접근: 해당 토큰으로 다른 OpenStack 서비스 사용함
실습
현재 Servicer Provider 목록 확인
openstack service provider list
단일 클라우드 환경이므로 비어있음
테스트용 Service Provider 생성
openstack service provider create \
--auth-url http://test.example.com:5000/v3 \
--service-provider-url http://test.example.com/sam1 \
--description "Test Federation Service Provider" \
test-provider
Identity Provider 설정
openstack identity provider create \
--description "External SAML Identity Provider" \
external-idp
매핑 규칙 파일 생성
cat > mapping-rules.json << EOF
[
{
"local": [
{
"user": {
"name": "{0}"
},
"group": {
"domain": {
"name": "Default"
},
"name": "federated_users"
}
}
],
"remote": [
{
"type": "REMOTE_USER"
}
]
}
]
EOF
매핑 생성
openstack mapping create --rules mapping-rules.json saml-mapping
Federation Protocol 구성해서 IdP와 SP 연결
openstack federation protocol create \
--identity-provider external-idp \
--mapping saml-mapping \
saml2
추후 실제 인증이 작동하도록 설정 필요
- 매핑 규칙 확인
- 연합 사용자 그룹 생성
- 그룹에 권한 부여
실무 활용 시나리오
다른 OpenStack과 연동
현재 설정으로 다른 OpenStack 클라우드의 사용자가 이 클라우드에 접근 가능함:
- 외부 클라우드에서 토큰 받음
- SAML assertion 생성
- 이 클라우드에서 자동으로 사용자 매핑
- federated_users 그룹 권한으로 리소스 접근












