Trong bài viết này, chúng ta sẽ khám phá cách sử dụng Python để tương tác với API của Longhorn.
Truy Cập Longhorn API
Có nhiều cách để giao tiếp với Longhorn, trong đó phổ biến nhất là thông qua dịch vụ longhorn-frontend.
- Lấy Endpoint của Longhorn API:
Nếu bạn đang chạy các công cụ tự động hóa hoặc script trong cùng một cluster với Longhorn, hãy kết nối đến endpoint: http://longhorn-frontend.longhorn-system/v1.
Nếu bạn đang làm việc trên máy cá nhân, bạn có thể chuyển tiếp cổng của dịch vụ longhorn-frontend đến localhost bằng lệnh sau:
kubectl port-forward svc/longhorn-frontend 8080:http -n longhorn-system
Sau đó, kết nối đến endpoint: http://localhost:8080/v1.
Tương Tác Với Longhorn Sử Dụng Python
Bạn cần tải xuống và import file longhorn.py (chứa client Python) từ đây: https://github.com/longhorn/longhorn-tests/blob/master/manager/integration/tests/longhorn.py.
import longhorn
# Nếu script tự động hóa nằm trong cùng cluster với Longhorn
api_url = 'http://longhorn-frontend.longhorn-system/v1'
# Nếu đã chuyển tiếp dịch vụ longhorn-frontend tới localhost
api_url = 'http://localhost:8080/v1'
client = longhorn.Client(url=api_url)
# Quản lý Volume
# Liệt kê tất cả các volume
volumes = client.list_volume()
# Lấy thông tin volume theo tên/ID
vol_sample = client.by_id_volume(id="sample_vol")
# Gắn volume vào host
vol_sample.attach(hostId="node-a")
# Tháo volume khỏi host
vol_sample.detach()
# Tạo snapshot cho volume
snap_example = vol_sample.snapshotCreate(name="snapshot_example")
# Tạo bản sao lưu từ snapshot
vol_sample.snapshotBackup(name=snap_example.name)
# Cập nhật số lượng replica của volume
vol_sample.updateReplicaCount(replicaCount=3)
# Quản lý Node
# Liệt kê tất cả các node
nodes = client.list_node()
# Lấy thông tin node theo tên/ID
node_a = client.by_id_node(id="node-a")
# Vô hiệu hóa scheduling trên node
client.update(node_a, allowScheduling=False)
# Kích hoạt lại scheduling trên node
client.update(node_a, allowScheduling=True)
# Quản lý Settings
# Liệt kê tất cả các cài đặt
settings = client.list_setting()
# Lấy thông tin setting theo tên/ID
backup_tgt = client.by_id_setting(id="backup-target")
# Cập nhật giá trị của một setting
backup_tgt = client.update(backup_tgt, value="s3://mybucket@us-west-1/")