Logo

Personal Ops Runbook

Personal runbook covering infrastructure operations for Cloud, Kubernetes, OpenStack, and Ceph environments. Includes deployment and teardown procedures, node management, cluster monitoring setup, and incident response workflows compiled from day-to-day operational work. Intended strictly for personal reference — configurations and scripts are environment-specific and not guaranteed to work as-is elsewhere.

Multi-Tenancy CLI

Mục lục


Với multi-tenancy, việc quản lý một cluster hoặc các project/tenant đòi hỏi cơ chế authentication và authorization riêng biệt. Thực thể cơ bản ở đây là security boundary; việc quản lý cluster và quản lý project là hai thực thể tách biệt.

Trong khuôn khổ authentication và authorization của multi-tenancy:

  • Tất cả các lệnh API/CLI đều có cơ chế xử lý permission nghiêm ngặt.

  • Việc truy cập API và sinh JWT token được tích hợp vào lbcli.

  • Bắt buộc phải sign-in bằng JWT bearer token (public-key).

  • Lưu lượng API bắt buộc phải được mã hóa TLS.

  • Có audit trail cho tất cả các hành động API/CLI.

Role Based Access Control (RBAC) cho multi-tenancy bao gồm các role sau:

  • Cluster Admin

  • Cluster Viewer

  • Tenant Admin

  • Tenant Viewer

Multi-Tenancy and Lightbits — Multi-tenancy và Lightbits

Multi-tenancy tích hợp chặt chẽ với Lightbits Kubernetes CSI plug-in, bao gồm:

  • Một hoặc nhiều K8s cluster cho mỗi tenant.

  • Một hoặc nhiều K8s namespace cho mỗi tenant trong một K8s cluster.

  • Phân tách tenant ở mức chi tiết dựa trên cơ chế security của K8s bên trong một K8s namespace.

Lightbits K8s plugin cũng có cơ chế xử lý CSI credential, bao gồm:

  • Hỗ trợ đầy đủ việc xử lý, xoay vòng (rotation) và thu hồi (revocation) credential của storage provider một cách tập trung và an toàn.

  • Credential (JWT) được lưu dưới dạng “secret” của K8s.

  • Các CSI sidecar cung cấp cho CSI plugin đúng JWT cho mỗi lần gọi CSI.

Lưu ý:
- Tích hợp OpenStack chỉ hỗ trợ single tenant.
- Việc phân tách multi-tenancy chỉ áp dụng cho control path (data path được quản lý qua ACL và IP ACL).
- JWT có thời hạn (mặc định là 30 ngày), và có thể được đặt theo nhu cầu.
- Với trường hợp single tenant, có thể dùng JWT của cluster admin cho mọi hành động.

Hãy ghi lại JWT system:cluster-admin được sinh ra trong quá trình cài đặt (JWT này khác nhau ở mỗi lần cài đặt; đây chỉ là ví dụ.)

$ export SYSTEMJWT=eyJhb...s4u-w

Key Features — Các tính năng chính

"Projects" (tenants) support — Hỗ trợ "Projects" (tenant)

  • Phân tách nghiêm ngặt ở mức API/CLI (tên resource, khả năng nhìn thấy).

  • Việc quản lý Lightbits API/CLI bởi admin tách biệt khỏi quyền truy cập của các tenant.

Authentication (authN) — Xác thực

  • Mọi truy cập đều được xác thực bằng JWT bearer token ký bằng pubkey.

  • Tích hợp với cơ chế quản lý secret của K8s và LB CSI plugin.

  • Việc sinh JWT token để truy cập API được tích hợp vào lbcli.

Authorization (authZ) — Phân quyền

  • Mọi hành động API/CLI đều được policy module cấp quyền một cách tường minh.

Role Based Access Control (RBAC)

  • Quyền truy cập được cấp dựa trên một hoặc nhiều role gán cho một account.

  • Role được gán từ một tập hợp giới hạn các role định nghĩa sẵn.

Common Multi-Tenancy CLI Examples — Các ví dụ CLI multi-tenancy thường dùng

Tạo một project mới (với tư cách cluster-admin). Chú ý các endpoint được mã hóa (https, port 443) và việc sử dụng system jwt.

[server00]:~# lbcli --jwt $SYSTEMJWT --endpoint https://localhost:443 create project --name myproj --description "my project"
Name Description
myproj my project

Liệt kê các project (với tư cách cluster-admin):

[server00]:~# lbcli --jwt $SYSTEMJWT --endpoint https://localhost:443 list projects
Name Description
default This is the default project description
a a description
b b description
myproj my project

Tạo cặp khóa RSA256 public/private:

[server00]:~# mkdir -p ${HOME}/.lightos_keys && ssh-keygen -t rsa -f ${HOME}/.lightos_keys/mykey -q -N "" -m PKCS8 && openssl rsa -in ${HOME}/.lightos_keys/mykey -pubout -out ${HOME}/.lightos_keys/mykey.pem
writing RSA key
[server00]:~# ls ${HOME}/.lightos_keys
mykey mykey.pub mykey.pem

Tạo credential đầu tiên trong project (với tư cách cluster-admin):

[server00]:~# lbcli --jwt $SYSTEMJWT --endpoint https://localhost:443 create credential --id=c1 --project-name myproj --type rsa256pubkey ${HOME}/.lightos_keys/mykey.pem
ID Type
c1 RS256PubKey

Liệt kê các credential trong project (với tư cách cluster-admin):

[server00]:~# lbcli --jwt $SYSTEMJWT --endpoint https://localhost:443 list credentials --project-name myproj
ID Type
c1 RS256PubKey

Tạo JWT project:admin cho project mới:

[server00]:~# lbcli create jwt --key-id myproj:c1 --key ${HOME}/.lightos_keys/mykey --role myproj:admin --issuer=root@example.com --subject=tenant-1
eyJh...Nmsw
[server00]:~# export MYPROJADMINJWT=eyJh...Nmsw

Tạo một volume trong project với tư cách project:admin:

[server00]:~# lbcli --jwt $MYPROJADMINJWT --endpoint https://localhost:443 create volume --name vol1 --size 1G --replica-count 3 --acl ALLOW_NONE --project-name myproj
Name UUID State Protection State NSID Size Replicas Compression ACL Rebuild Progress
vol1 cdf25ac7-3829-4865-bad6-befa1ded877b Creating Unknown 0 954 MiB 3 false values:"ALLOW_NONE"

Tạo JWT project:viewer cho project mới:

[server00]:~# export MYPROJVIEWERJWT=`lbcli create jwt --key-id myproj:c1 --key ${HOME}/.lightos_keys/mykey --role myproj:viewer`

Liệt kê các volume trong project với tư cách project:admin hoặc project:viewer:

[server00]:~# lbcli --jwt $MYPROJADMINJWT --endpoint https://localhost:443 list volumes --project-name myproj
Name UUID State Protection State NSID Size Replicas Compression ACL Rebuild Progress
vol1 cdf25ac7-3829-4865-bad6-befa1ded877b Available FullyProtected 1 954 MiB 3 false values:"ALLOW_NONE" None
[server00]:~# lbcli --jwt $MYPROJVIEWERJWT --endpoint https://localhost:443 list volumes --project-name myproj
Name UUID State Protection State NSID Size Replicas Compression ACL Rebuild Progress
vol1 cdf25ac7-3829-4865-bad6-befa1ded877b Available FullyProtected 1 954 MiB 3 false values:"ALLOW_NONE" None

Nguồn: https://documentation.lightbitslabs.com/lightbits-private-cloud/multi-tenancy-cli


Nguồn tham khảo

  1. Multi-Tenancy CLI — https://documentation.lightbitslabs.com/lightbits-private-cloud/multi-tenancy-cli

Ghi chú về nguồn

  • URL fetch thành công. Trang này hiển thị nhãn phiên bản 3.19.x (khác với phần lớn các trang khác đang ở 3.20.x), mục Lightbits Administration Guide.
  • Cấu trúc heading giữ nguyên 1:1 theo bản gốc: H1 Multi-Tenancy CLI, các mục ## Multi-Tenancy and LightbitsKey Features, cùng các mục ### bên trong Key Features.
  • Bản gốc dùng nhãn "Notes" (số nhiều) cho một khối gồm bốn gạch đầu dòng; được dịch thành một khối > **Lưu ý:** giữ nguyên cả bốn ý.
  • Trong ví dụ tạo volume, output của bản gốc hiển thị --size 1G nhưng kết quả là 954 MiB; đây là nội dung của bản gốc và được giữ nguyên.