Sunday, January 19, 2025

Các khái niệm trong Openstack

-

1. Domain.

Trong OpenStack, một domain là một phạm vi quản lý mà trong đó bạn có thể tạo và quản lý người dùng, nhóm và dự án (còn được gọi là tenant). Domain cung cấp một cách để phân chia tài nguyên và quyền truy cập trong một cài đặt OpenStack lớn.

Mặc định, OpenStack cung cấp một domain có tên là default. Domain này thường được sử dụng cho các người dùng, nhóm và dự án mà bạn tạo trong quá trình cài đặt OpenStack.

Khi bạn tạo một người dùng mới với lệnh openstack user create --domain default, bạn đang tạo một người dùng trong domain default. Người dùng này sau đó có thể được gán quyền truy cập vào các dự án cụ thể trong domain default.

Nếu bạn muốn tạo các phạm vi quản lý riêng biệt cho các nhóm người dùng hoặc dự án khác nhau, bạn có thể tạo thêm các domain khác ngoài domain default.

Dưới đây là một ví dụ về cách bạn có thể sử dụng domain trong một môi trường cung cấp dịch vụ.

Giả sử bạn là một nhà cung cấp dịch vụ cloud và bạn muốn cung cấp dịch vụ cho hai công ty khác nhau: Công ty A và Công ty B. Mỗi công ty muốn quản lý người dùng và tài nguyên của riêng mình mà không bị ảnh hưởng bởi công ty khác.

Trong trường hợp này, bạn có thể tạo hai domain riêng biệt trong OpenStack, mỗi domain cho một công ty.

Ví dụ:

openstack domain create CompanyA
openstack domain create CompanyB

Sau đó, bạn có thể tạo người dùng và dự án trong mỗi domain. Ví dụ, để tạo một người dùng cho Công ty A, bạn có thể chạy:

openstack user create --domain CompanyA --password "USER_PASSWORD" username

Với cấu hình này, người dùng của Công ty A chỉ có thể truy cập và quản lý tài nguyên trong domain của Công ty A, và tương tự cho Công ty B. Điều này giúp đảm bảo rằng mỗi công ty có quyền kiểm soát tài nguyên của mình mà không bị ảnh hưởng bởi các công ty khác.

Nhưng trong một số dịch vụ đặc biệt ví dụ như dịch vụ Glance trong OpenStack quản lý các image và không phụ thuộc vào domain cụ thể. Khi bạn tạo một người dùng Glance trong domain CompanyA, bạn đang tạo một người dùng có thể quản lý các image trên toàn hệ thống, không chỉ riêng trong CompanyA.

Tuy nhiên, bạn có thể giới hạn quyền truy cập vào các image cụ thể dựa trên dự án hoặc người dùng. Ví dụ, bạn có thể tạo một image và chỉ cho phép các người dùng trong dự án cụ thể của CompanyA truy cập.

Nếu bạn muốn tạo một người dùng chỉ có quyền quản lý các image của CompanyA, bạn cần phải tạo một vai trò (role) với các quyền hạn cần thiết và gán vai trò đó cho người dùng trong dự án cụ thể của CompanyA.

Ví dụ, bạn có thể tạo một vai trò image_admin và gán cho người dùng Glance trong dự án của CompanyA:

openstack role create image_admin
openstack role add --project CompanyA_project --user glance image_admin

Lưu ý rằng bạn cần cấu hình policy cho Glance để chỉ cho phép vai trò image_admin quản lý các image.

2. Project.

Trong OpenStack, một project (đôi khi còn được gọi là tenant) là một nhóm người dùng được tổ chức lại để chia sẻ một tập hợp tài nguyên. Mỗi project có một tập hợp tài nguyên riêng, bao gồm máy ảo, mạng, và các tài nguyên lưu trữ.

Ví dụ, trong một môi trường cung cấp dịch vụ, bạn có thể tạo một project cho mỗi khách hàng. Mỗi khách hàng sau đó có thể quản lý tài nguyên của riêng mình mà không ảnh hưởng đến các khách hàng khác.

Đây là một ví dụ về cách tạo một project mới trong OpenStack:

openstack project create --domain default --description "Customer A Project" customerA

Sau khi tạo project, bạn có thể tạo người dùng và gán họ vào project. Mỗi người dùng sau đó có thể tạo và quản lý tài nguyên trong phạm vi của project.

openstack user create --domain default --password-prompt user1
openstack role add --project customerA --user user1 _member_

Trong ví dụ trên, user1 bây giờ có thể tạo và quản lý tài nguyên trong project customerA.

Lưu ý project và domain trong OpenStack là hai khái niệm khác nhau.

  • Project: Đây là một nhóm người dùng và tài nguyên. Một project có thể được coi như một “phạm vi làm việc” trong đó người dùng có thể tạo và quản lý tài nguyên như máy ảo, mạng, và lưu trữ. Mỗi project có một tập hợp tài nguyên riêng biệt và không chia sẻ tài nguyên với các project khác.
  • Domain: Đây là một nhóm các project và người dùng. Một domain có thể được coi như một “phạm vi quản lý” trong đó bạn có thể quản lý các project và người dùng. Một domain có thể chứa nhiều project và người dùng và mỗi project hoặc người dùng chỉ có thể thuộc về một domain.

Ví dụ, bạn có thể tạo một domain cho mỗi phòng ban trong công ty của bạn, và sau đó tạo các project trong mỗi domain cho các nhóm làm việc khác nhau. Mỗi nhóm làm việc sau đó có thể quản lý tài nguyên của riêng mình trong phạm vi của project của họ, trong khi quản lý có thể quản lý tất cả các project và người dùng trong phạm vi của domain của họ.

3. Service (dịch vụ).

Trong OpenStack, một dịch vụ (service) là một thành phần của hệ thống thực hiện một chức năng cụ thể. Ví dụ, Glance là dịch vụ quản lý image, Nova là dịch vụ quản lý máy ảo và Neutron là dịch vụ quản lý mạng.

Ví dụ khi bạn chạy lệnh openstack service create --name glance --description "OpenStack Image" image, bạn đang tạo một dịch vụ trong danh sách dịch vụ của OpenStack. Lệnh này không khởi chạy dịch vụ Glance, nhưng nó đăng ký dịch vụ Glance với OpenStack để các dịch vụ khác có thể tìm và giao tiếp với nó.

Ví dụ, trong một môi trường cung cấp dịch vụ, bạn có thể cung cấp dịch vụ máy ảo cho khách hàng. Để làm điều này, bạn cần dịch vụ Nova để tạo và quản lý máy ảo, dịch vụ Glance để cung cấp các image cho máy ảo và dịch vụ Neutron để quản lý mạng cho máy ảo.

Khi bạn tạo một máy ảo, dịch vụ Nova sẽ tìm dịch vụ Glance để lấy image cần thiết, và tìm dịch vụ Neutron để thiết lập mạng cho máy ảo. Để Nova có thể tìm thấy Glance và Neutron, bạn cần đăng ký chúng như là các dịch vụ trong OpenStack.

4. Endpoint.

Trong OpenStack, mỗi dịch vụ thường có ba loại endpoint: admin, public và internal. Mỗi loại endpoint này được sử dụng cho một mục đích cụ thể:

  • Admin endpoint: Được sử dụng cho các yêu cầu quản trị từ các dịch vụ khác trong hệ thống OpenStack. Ví dụ, một dịch vụ có thể sử dụng admin endpoint để thực hiện các thao tác quản lý như tạo hoặc xóa tài nguyên.
  • Public endpoint: Được sử dụng cho các yêu cầu từ người dùng cuối hoặc các ứng dụng bên ngoài hệ thống OpenStack. Ví dụ, một ứng dụng web có thể sử dụng public endpoint để tạo một máy ảo mới hoặc lấy danh sách các image.
  • Internal endpoint: Được sử dụng cho các yêu cầu giữa các dịch vụ trong hệ thống OpenStack. Ví dụ, dịch vụ Nova có thể sử dụng internal endpoint của Glance để lấy một image khi tạo một máy ảo mới.

Việc tạo cả ba loại endpoint cho phép bạn tinh chỉnh quyền truy cập và hiệu suất cho mỗi loại yêu cầu. Ví dụ, bạn có thể cấu hình mạng để chỉ cho phép các yêu cầu quản trị đi qua admin endpoint, hoặc bạn có thể đặt internal endpoint trên một mạng riêng để tăng hiệu suất cho các yêu cầu giữa các dịch vụ.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories