1. Bối cảnh và Giá trị
1.1. Thách thức kỹ thuật trong kỷ nguyên Đa đám mây và Đám mây Lai
Trong bối cảnh chuyển đổi số hiện nay, kiến trúc đa đám mây và đám mây lai đã trở thành một tiêu chuẩn phổ biến trong các doanh nghiệp. Theo báo cáo về trạng thái đám mây của Flexera năm 2023, hơn 82% doanh nghiệp đang áp dụng chiến lược đa đám mây, và 73% sử dụng kết hợp cả đám mây công cộng và đám mây riêng. Tuy nhiên, kiến trúc này cũng đặt ra một loạt thách thức kỹ thuật:
- Phức tạp trong triển khai ứng dụng: Yêu cầu triển khai lặp lại cùng một ứng dụng trên nhiều môi trường đám mây khác nhau, duy trì nhiều bộ script triển khai riêng biệt.
- Cấu hình không nhất quán: Sự khác biệt về cấu hình giữa các môi trường dẫn đến vấn đề "chạy được trên máy của tôi".
- Quản lý phân mảnh: Đội ngũ vận hành phải đăng nhập vào nhiều bảng điều khiển, sử dụng các công cụ khác nhau để quản lý tài nguyên.
- Khả năng quan sát bị phân mảnh: Dữ liệu giám sát nằm rải rác trên các cụm, gây khó khăn trong việc có được cái nhìn tổng thể.
- Khó khăn trong phục hồi sau thảm họa: Thiếu cơ chế thống nhất để thực hiện chuyển đổi dự phòng giữa các cụm.
Những vấn đề này gây ra ảnh hưởng đáng kể đến hoạt động kinh doanh. Theo khảo sát của Gartner, tốc độ phân phối ứng dụng trong môi trường đa đám mây trung bình chậm hơn 40% so với môi trường đơn đám mây, chi phí vận hành tăng 35% và thời gian phục hồi sau lỗi kéo dài 50%.
1.2. Giá trị cốt lõi và định vị của Kurator
Kurator là một nền tảng mã nguồn mở, đám mây gốc phân tán, được xây dựng dựa trên các công nghệ đám mây gốc như Kubernetes, Karmada, và Istio. Nền tảng này cung cấp bốn khả năng cốt lõi: Điều phối tài nguyên thống nhất (Unified Resource Orchestration), Lập lịch thống nhất (Unified Scheduling), Quản lý lưu lượng thống nhất (Unified Traffic Management) và Đo xa thống nhất (Unified Telemetry). Kurator đặc biệt phù hợp để xây dựng một hệ thống phân phối ứng dụng đa cụm cấp doanh nghiệp.
Hình 1: Kiến trúc năng lực cốt lõi của Kurator, minh họa các khả năng chính như điều phối tài nguyên, lập lịch, quản lý lưu lượng và giám sát thống nhất.
Giá trị cốt lõi: Với Kurator, doanh nghiệp có thể rút ngắn thời gian triển khai ứng dụng từ vài ngày xuống còn vài phút, đồng thời giảm 80% tỷ lệ lỗi cấu hình, cải thiện đáng kể việc sử dụng tài nguyên CNTT và tính linh hoạt trong kinh doanh.
1.3. So sánh Kurator với các giải pháp khác
Trong lĩnh vực quản lý đa cụm, có nhiều giải pháp công nghệ khác nhau, bao gồm Kubernetes Federation gốc, Rancher và Anthos. Bảng dưới đây so sánh các tính năng chính của Kurator với các giải pháp phổ biến khác:
| Tính năng | Kurator | KubeFed | Rancher | Anthos |
|---|---|---|---|---|
| Điều phối đa cụm | (Karmada) | |||
| Phân phối ứng dụng thống nhất | Hỗ trợ một phần | |||
| Quản lý lưu lượng thống nhất | (Istio) | Hỗ trợ giới hạn | (Istio) | |
| Giám sát thống nhất | (Prometheus+Thanos) | Hỗ trợ giới hạn | ||
| Hỗ trợ điện toán biên | (KubeEdge) | Hỗ trợ giới hạn | Hỗ trợ giới hạn | |
| Quản lý chính sách | (Kyverno) | Hỗ trợ giới hạn | Hỗ trợ giới hạn | |
| Giấy phép mã nguồn mở | Apache 2.0 | Apache 2.0 | Apache 2.0 | Độc quyền |
| Khả năng tự quản lý | Hỗ trợ giới hạn |
Ưu điểm nổi bật của Kurator nằm ở sự kết hợp hoàn hảo giữa tính năng có sẵn ngay khi cài đặt (Batteries-Included) và thiết kế tách rời (Loose Coupling), mang lại một giải pháp toàn diện cho doanh nghiệp mà vẫn duy trì khả năng phát triển độc lập cho từng thành phần.
2. Kiến trúc tổng thể và Ngăn xếp công nghệ của Kurator
2.1. Tổng quan Kiến trúc Công nghệ
Kurator không được xây dựng từ đầu mà tích hợp nhiều dự án mã nguồn mở xuất sắc để tạo ra một nền tảng đám mây gốc phân tán sẵn sàng sử dụng. Kiến trúc công nghệ của nó như sau:
Hình 2: Kiến trúc công nghệ của Kurator, minh họa cách tích hợp các thành phần như Karmada, KubeEdge, Istio.
Từ sơ đồ kiến trúc, chúng ta có thể thấy Kurator tích hợp nhiều dự án mã nguồn mở quan trọng:
- Karmada: Cung cấp khả năng điều phối đa cụm.
- KubeEdge: Hỗ trợ hợp tác đám mây biên.
- Istio: Thực hiện quản lý mạng dịch vụ và lưu lượng.
- Prometheus/Thanos: Cung cấp giám sát thống nhất.
- Volcano: Tối ưu hóa khối lượng công việc tính toán hàng loạt và AI.
- FluxCD/ArgoCD: Hỗ trợ quy trình làm việc GitOps.
- Kyverno: Thực hiện quản lý chính sách.
2.2. Chi tiết các thành phần cốt lõi
2.2.1. Cluster Operator
Cluster Operator là thành phần quản lý vòng đời cụm của Kurator, chịu trách nhiệm:
- Tạo, nâng cấp, mở rộng/thu hẹp, xóa cụm.
- Quản lý thống nhất các cụm giữa các đám mây/khu vực.
- Giám sát tình trạng và tự phục hồi cụm.
- Hỗ trợ Cơ sở hạ tầng dưới dạng mã (IaC).
# Cấu hình cụm ví dụ
apiVersion: cluster.kurator.dev/v1alpha1
kind: Cluster
metadata:
name: gcp-us-central-1
spec:
infrastructure:
provider: gcp
region: us-central-1
projectId: project-alpha-123
kubernetes:
version: v1.26.5
networking:
podCIDR: 10.246.0.0/16
serviceCIDR: 10.98.0.0/12
nodePools:
- name: default-pool
machineType: e2-standard-4
desiredNodeCount: 3
maxNodeCount: 8
minNodeCount: 2
diskSizeGb: 80
2.2.2. Fleet Manager
Fleet Manager là thành phần trung tâm của Kurator, chịu trách nhiệm:
- Quản lý tài nguyên Fleet và đồng bộ hóa trạng thái.
- Phân phối và đồng bộ hóa ứng dụng giữa nhiều cụm.
- Thực thi các chính sách ghi đè (OverridePolicy).
- Quản lý lưu lượng đa cụm.
Hình 3: Sơ đồ kiến trúc nội bộ của Fleet Manager.
2.2.3. Kurator CLI
Kurator CLI cung cấp các công cụ dòng lệnh, đơn giản hóa trải nghiệm người dùng:
- Đăng ký và quản lý cụm.
- Triển khai và giám sát ứng dụng.
- Cấu hình và xác minh chính sách.
- Chẩn đoán và khắc phục sự cố.
Các lệnh phổ biến bao gồm:
# Liệt kê tất cả các Fleet
kurator get fleets
# Kiểm tra kết nối mạng của cụm
kurator check network --cluster member-cluster-dev
# Kiểm tra trạng thái khám phá dịch vụ
kurator check service-discovery --service catalog-svc --namespace e-commerce
# Theo dõi yêu cầu giữa các cụm
kurator trace request --from-cluster cluster-vn-hanoi --to-cluster cluster-sg-singapore
3. Cài đặt Kurator và Tổng quan Thành phần
3.1. Hệ thống Thành phần của Kurator
Trước khi bắt đầu cài đặt, cần hiểu rõ các thành phần chính của Kurator. Theo tài liệu chính thức, Kurator chủ yếu bao gồm ba thành phần cốt lõi:
Hình 4: Kiến trúc hệ thống thành phần của Kurator.
- Kurator CLI: Công cụ dòng lệnh, đơn giản hóa trải nghiệm vận hành.
- Cluster Operator: Chịu trách nhiệm quản lý vòng đời cụm.
- Fleet Manager: Chịu trách nhiệm phân phối và quản lý ứng dụng đa cụm.
Ngoài ra, Kurator còn hỗ trợ các thành phần tùy chọn:
- Observability: Hệ thống giám sát thống nhất (Prometheus+Thanos+Grafana).
- Traffic Management: Quản lý lưu lượng thống nhất (Istio).
- Edge Computing: Hỗ trợ điện toán biên (KubeEdge).
- Policy Management: Quản lý chính sách thống nhất (Kyverno).
- AI/ML Support: Hỗ trợ khối lượng công việc AI/ML (Volcano).
3.2. Chuẩn bị cài đặt và Yêu cầu môi trường
Trước khi cài đặt Kurator, cần đảm bảo các yêu cầu môi trường sau:
3.2.1. Yêu cầu phần cứng
| Thành phần | Cấu hình tối thiểu | Cấu hình đề xuất | Mô tả |
|---|---|---|---|
| Nút mặt phẳng điều khiển | 2C4G | 4C8G | Chạy các thành phần quản lý của Kurator |
| Nút cụm thành viên | 2C4G/nút | 4C8G/nút | Chạy các khối lượng công việc |
| Lưu trữ | 20GB | 100GB+ | Lưu trữ dữ liệu mặt phẳng điều khiển |
3.2.2. Phụ thuộc phần mềm
- Cụm Kubernetes v1.23+ (để làm mặt phẳng điều khiển).
- Client Helm v3.8+.
- Client kubectl v1.23+.
- Hệ điều hành được hỗ trợ: Linux (x86_64, arm64), macOS (x86_64, arm64).
3.2.3. Yêu cầu mạng
- Mặt phẳng điều khiển và các cụm thành viên phải có kết nối mạng với nhau.
- Các cụm thành viên nên có kết nối mạng với nhau (không bắt buộc, nhưng cải thiện hiệu suất).
- Quyền truy cập internet (để tải xuống image và các phụ thuộc).
3.3. Các bước cài đặt chi tiết
Theo tài liệu cài đặt chính thức của Kurator, quá trình cài đặt bao gồm một số bước quan trọng. Dưới đây là quy trình cài đặt hoàn chỉnh:
Hình 5: Sơ đồ quy trình cài đặt Kurator.
3.3.1. Cài đặt Kurator CLI
Kurator CLI là công cụ chính để tương tác với nền tảng Kurator, cung cấp các lệnh vận hành đơn giản hóa:
# Dành cho Linux x86_64
curl -sL https://github.com/kurator-dev/kurator/releases/download/v0.5.0/kurator-v0.5.0-linux-amd64.tar.gz | tar xz
sudo mv kurator /usr/local/bin/
# Dành cho macOS
curl -sL https://github.com/kurator-dev/kurator/releases/download/v0.5.0/kurator-v0.5.0-darwin-amd64.tar.gz | tar xz
sudo mv kurator /usr/local/bin/
# Xác minh cài đặt
kurator version
Kết quả mong đợi:
Client Version: version.Info{Major:"0", Minor:"5", GitVersion:"v0.5.0", GitCommit:"b1c2d3e4f5a67890abcdef1234567890abcdef", GitTreeState:"clean", BuildDate:"2024-01-15T10:00:00Z", GoVersion:"go1.21.5", Compiler:"gc", Platform:"linux/amd64"}
3.3.2. Cài đặt Cluster Operator
Cluster Operator chịu trách nhiệm quản lý vòng đời cụm, cài đặt bằng Helm:
# Thêm kho lưu trữ Helm
helm repo add kurator https://kurator-dev.github.io/charts
helm repo update
# Tạo namespace
kubectl create namespace kurator-system
# Cài đặt Cluster Operator
helm install kurator-cluster-operator kurator/cluster-operator \
--namespace kurator-system \
--set crds.enabled=true \
--version 0.5.0
Xác minh trạng thái cài đặt:
kubectl get pod -n kurator-system -l app.kubernetes.io/name=cluster-operator
Hình 6: Ảnh chụp màn hình giao diện cài đặt Cluster Operator thành công.
3.3.3. Cài đặt Fleet Manager
Fleet Manager là thành phần cốt lõi của Kurator, chịu trách nhiệm quản lý ứng dụng đa cụm:
# Cài đặt Fleet Manager
helm install fleet-manager kurator/fleet-manager \
--namespace kurator-system \
--set crds.enabled=true \
--set components.karmada.enabled=true \
--set components.istio.enabled=false \ # Ví dụ: tắt Istio nếu không cần
--set components.prometheus.enabled=true \
--version 0.5.0
Lưu ý: Bạn có thể điều chỉnh tham số components.*.enabled để kích hoạt hoặc vô hiệu hóa các module chức năng cụ thể theo nhu cầu.
Xác minh trạng thái cài đặt hoàn chỉnh:
kubectl get pods -n kurator-system
Hình 7: Ảnh chụp màn hình giao diện cài đặt Fleet Manager thành công.
3.4. Cài đặt MinIO (Tùy chọn, cho lưu trữ đối tượng)
Khi kích hoạt tính năng giám sát thống nhất, Kurator yêu cầu dịch vụ lưu trữ đối tượng để lưu trữ dữ liệu chỉ số dài hạn. MinIO là một giải pháp lưu trữ đối tượng mã nguồn mở phổ biến:
# Cài đặt MinIO operator
kubectl apply -f https://operator.min.io/download.yaml
# Tạo MinIO tenant
cat <<EOF | kubectl apply -f -
apiVersion: minio.min.io/v2
kind: Tenant
metadata:
name: kurator-data-store
namespace: kurator-system
spec:
image: minio/minio:RELEASE.2023-09-07T00-01-38Z
imagePullPolicy: IfNotPresent
credsSecret:
name: minio-credentials-secret
pools:
- name: data-pool-1
servers: 3
volumesPerServer: 2
volumeClaimTemplate:
metadata:
name: minio-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
mountPath: /data
EOF
4. Quản lý Fleet và Đăng ký Cụm Thành viên
4.1. Khái niệm và Giá trị của Fleet
Fleet là một khái niệm trung tâm trong Kurator, đại diện cho một nhóm các cụm Kubernetes có liên quan logic với nhau, được quản lý thống nhất để đạt được các mục tiêu kinh doanh cụ thể. Thông qua Fleet, bạn có thể thực hiện:
- Cách ly môi trường: Quản lý các cụm theo nhóm môi trường phát triển, kiểm thử, sản xuất.
- Phân nhóm theo địa lý: Tổ chức các cụm theo vị trí địa lý (ví dụ: Châu Á-Thái Bình Dương, Châu Âu, Bắc Mỹ).
- Phân chia theo đơn vị kinh doanh: Nhóm các cụm theo phòng ban hoặc dòng sản phẩm.
- Tích hợp cơ sở hạ tầng đa dạng: Đưa các cụm đám mây công cộng, đám mây riêng, và nút biên vào một hệ thống quản lý thống nhất.
Như tài liệu chính thức của Kurator đã nêu:
"A Fleet is a logical grouping of Kubernetes clusters that are managed together. Fleets allow you to organize your clusters based on various criteria such as environment (dev, staging, prod), geography (region, datacenter), or business unit."
4.2. Đăng ký Cụm Thành viên
Để đưa các cụm Kubernetes vào quản lý của Kurator, cần thực hiện quá trình đăng ký, có hai phương pháp chính:
4.2.1. Đăng ký dựa trên kubeconfig (Đề xuất cho môi trường phát triển/kiểm thử)
# Chuyển sang ngữ cảnh của cụm mục tiêu
kubectl config use-context your-member-cluster-context
# Đăng ký cụm
kurator register cluster dev-cluster-vn --use-kubeconfig
4.2.2. Đăng ký dựa trên Service Account (Đề xuất cho môi trường sản xuất)
Trong môi trường sản xuất, để đảm bảo an toàn, khuyến nghị sử dụng token Service Account để đăng ký cụm:
Bước 1: Tạo Service Account trên cụm thành viên
# Thực hiện trên cụm thành viên
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ServiceAccount
metadata:
name: kurator-connector
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: kurator-connector-admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: kurator-connector
namespace: kube-system
EOF
Bước 2: Lấy token Service Account
# Thực hiện trên cụm thành viên
SECRET_NAME=$(kubectl get sa kurator-connector -n kube-system -o jsonpath='{.secrets[0].name}')
TOKEN=$(kubectl get secret $SECRET_NAME -n kube-system -o jsonpath='{.data.token}' | base64 --decode)
echo $TOKEN
Bước 3: Đăng ký cụm trên mặt phẳng điều khiển
# Thực hiện trên mặt phẳng điều khiển
kurator register cluster prod-cluster-us \
--server https://your-member-cluster-api-server:6443 \
--token $TOKEN \
--ca-file /path/to/your_cluster_ca.crt
4.2.3. Xác minh trạng thái đăng ký cụm
Sau khi đăng ký, xác minh trạng thái của cụm:
kubectl get attachedclusters.fleet.kurator.dev
Kết quả mong đợi:
NAME CLUSTER-ID SYNCED AGE
dev-cluster-vn cluster-001 True 7m
prod-cluster-us cluster-002 True 4m
edge-node-iot cluster-003 True 3m
Nếu trạng thái SYNCED là False, cần khắc phục sự cố:
kubectl describe attachedclusters.fleet.kurator.dev dev-cluster-vn
4.3. Tạo tài nguyên Fleet
Sau khi đăng ký cụm, cần tạo tài nguyên Fleet để tổ chức chúng:
# regional-fleet.yaml
apiVersion: fleet.kurator.dev/v1alpha1
kind: Fleet
metadata:
name: asia-pacific-fleet
spec:
# Định nghĩa các cụm tạo nên Fleet
clusters:
- name: dev-cluster-vn
properties:
region: southeast-asia
cloudProvider: local-dc
environment: development
- name: prod-cluster-us
properties:
region: north-america
cloudProvider: aws
environment: production
- name: edge-node-iot
properties:
region: industrial-zone
cloudProvider: edge
environment: iot
edgeType: KubeEdge
# Kích hoạt giám sát thống nhất
observability:
enabled: true
prometheus:
enabled: true
thanos:
enabled: true
objectStorage:
bucket: kurator-thanos-data
endpoint: minio.kurator-system.svc:9000
accessKey: your-thanos-access-key
secretKey: your-thanos-secret-key
# Kích hoạt quản lý lưu lượng thống nhất
trafficManagement:
enabled: true
istio:
enabled: true
version: 1.19.0
profile: minimal # Hồ sơ cho môi trường sản xuất hoặc tùy chỉnh
# Kích hoạt quản lý chính sách
policyManagement:
enabled: true
kyverno:
enabled: true
version: 1.10.0
Áp dụng cấu hình Fleet:
kubectl apply -f regional-fleet.yaml
Xác minh trạng thái Fleet:
kubectl get fleet asia-pacific-fleet -o wide
Kết quả mong đợi:
NAME READY CLUSTERS SYNCED-CLUSTERS AGE
asia-pacific-fleet True 3 3 3m
Hình 10: Giao diện xem trạng thái Fleet (Nguồn: Tài liệu chính thức của Kurator).
5. Phân phối và Quản lý Ứng dụng Đa cụm
5.1. Mô hình Phân phối Ứng dụng
Kurator cung cấp hai mô hình phân phối ứng dụng chính:
5.1.1. Ứng dụng Toàn cầu (Global Application)
Triển khai cùng một ứng dụng đến tất cả các cụm trong một Fleet, phù hợp với các thành phần cơ sở hạ tầng như agent giám sát, trình thu thập nhật ký.
5.1.2. Ứng dụng Chọn lọc (Selective Application)
Triển khai ứng dụng một cách chọn lọc đến các cụm cụ thể dựa trên nhãn cụm, vị trí hoặc các thuộc tính khác, phù hợp với các ứng dụng kinh doanh, ví dụ, triển khai dịch vụ người dùng đến các khu vực gần người dùng hơn.
5.2. Chi tiết Application CRD
Kurator sử dụng Application CRD để định nghĩa các ứng dụng cần phân phối, hỗ trợ nhiều cách định nghĩa tài nguyên:
5.2.1. Ứng dụng Helm
apiVersion: apps.kurator.dev/v1alpha1
kind: Application
metadata:
name: apache-web-app
spec:
selector:
fleet: asia-pacific-fleet
components:
- name: apache
helm:
chart:
name: apache
repoURL: https://charts.bitnami.com/bitnami
version: 10.1.2
values:
service:
type: LoadBalancer
port: 80
resources:
requests:
memory: 128Mi
cpu: 50m
limits:
memory: 256Mi
cpu: 200m
5.2.2. Ứng dụng Kustomize
apiVersion: apps.kurator.dev/v1alpha1
kind: Application
metadata:
name: analytics-kustomize-app
spec:
selector:
fleet: asia-pacific-fleet
components:
- name: analytics-dashboard
kustomize:
repoURL: https://github.com/my-org/analytics-manifests
path: production/us-central-1
revision: release-v1.2
5.2.3. Tài nguyên Kubernetes gốc
apiVersion: apps.kurator.dev/v1alpha1
kind: Application
metadata:
name: redis-cache-app
spec:
selector:
fleet: asia-pacific-fleet
components:
- name: redis-cache
resources:
- apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-cache
labels:
app: redis-cache
spec:
replicas: 2
selector:
matchLabels:
app: redis-cache
template:
metadata:
labels:
app: redis-cache
spec:
containers:
- name: redis
image: redis:6.2.6-alpine
ports:
- containerPort: 6379
resources:
limits:
cpu: "200m"
memory: "256Mi"
- apiVersion: v1
kind: Service
metadata:
name: redis-cache-service
spec:
ports:
- port: 6379
targetPort: 6379
selector:
app: redis-cache
type: ClusterIP
5.3. Chiến lược Phân phối Ứng dụng
5.3.1. Chính sách Phân phối Tĩnh
Định nghĩa thông qua PropagationPolicy các cụm mà ứng dụng sẽ được phân phối:
apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:
name: apache-propagation-policy
spec:
resourceSelectors:
- apiVersion: apps.kurator.dev/v1alpha1
kind: Application
name: apache-web-app
placement:
clusterAffinity:
clusterNames:
- dev-cluster-vn
- prod-cluster-us
replicaScheduling:
replicaSchedulingType: Duplicated
5.3.2. Chính sách Phân phối Động
Chọn cụm mục tiêu một cách linh hoạt dựa trên nhãn cụm:
apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:
name: prod-region-propagation
spec:
resourceSelectors:
- apiVersion: apps.kurator.dev/v1alpha1
kind: Application
name: inventory-service
placement:
clusterAffinity:
labelSelector:
matchLabels:
environment: production
region: north-america
replicaScheduling:
replicaSchedulingType: Duplicated
5.4. Cấu hình khác biệt cụm: OverridePolicy
Các cụm trong các môi trường khác nhau thường yêu cầu cấu hình riêng biệt. Kurator, dựa trên OverridePolicy của Karmada, cung cấp khả năng ghi đè cấu hình mạnh mẽ:
apiVersion: policy.karmada.io/v1alpha1
kind: OverridePolicy
metadata:
name: app-regional-overrides
namespace: default
spec:
resourceSelectors:
- apiVersion: apps/v1
kind: Deployment
name: inventory-service
overrideRules:
# Quy tắc 1: Đối với cụm ở Việt Nam, sử dụng registry nội bộ và giới hạn tài nguyên
- targetCluster:
clusterNames:
- dev-cluster-vn
overriders:
imageOverrider:
- component: Registry
operator: replace
value: registry.internal.vn/my-org
plaintext:
- path: "/spec/template/spec/containers/0/resources/limits/cpu"
operator: replace
value: "500m"
- path: "/spec/template/spec/containers/0/resources/limits/memory"
operator: replace
value: "1Gi"
# Quy tắc 2: Đối với cụm ở Mỹ, tiêm biến môi trường AWS
- targetCluster:
clusterNames:
- prod-cluster-us
overriders:
plaintext:
- path: "/spec/template/spec/containers/0/env/-"
operator: add
value:
name: CLOUD_PROVIDER
value: "AWS_CLOUD"
- path: "/spec/template/spec/containers/0/env/-"
operator: add
value:
name: AWS_REGION
value: "us-east-1"
# Quy tắc 3: Đối với nút biên (edge nodes), đặt số replica là 1 và giảm tài nguyên
- targetCluster:
labelSelector:
matchLabels:
cloudProvider: edge
overriders:
plaintext:
- path: "/spec/replicas"
operator: replace
value: 1
- path: "/spec/template/spec/containers/0/resources/limits/memory"
operator: replace
value: "128Mi"
5.4.1. Chi tiết các toán tử của OverridePolicy
Kurator hỗ trợ nhiều toán tử ghi đè, phù hợp với các tình huống khác nhau:
| Toán tử | Mô tả | Trường hợp áp dụng |
|---|---|---|
| add | Thêm giá trị mới | Thêm biến môi trường, nhãn, chú thích |
| remove | Xóa giá trị hiện có | Xóa cấu hình không cần thiết |
| replace | Thay thế giá trị hiện có | Sửa đổi image, phân bổ tài nguyên, số lượng bản sao |
| jsonpatch | Thao tác JSON Patch | Sửa đổi cấu trúc phức tạp |
| imageOverrider | Ghi đè chuyên biệt cho image | Thay thế registry image, cập nhật tag |
6. Hệ thống Quan sát Thống nhất
6.1. Thiết kế Kiến trúc
Kurator tích hợp các thành phần như Prometheus, Thanos, Grafana để đạt được khả năng giám sát thống nhất trên nhiều cụm:
Hình 8: Sơ đồ kiến trúc giám sát thống nhất của Kurator.
6.2. Cài đặt và Cấu hình
Khi kích hoạt module observability lúc tạo Fleet, Kurator sẽ tự động triển khai các thành phần giám sát. Tuy nhiên, đôi khi cần điều chỉnh cấu hình thủ công:
6.2.1. Tối ưu hóa cấu hình Prometheus
# prometheus-config-prod.yaml
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
name: kurator-prometheus-prod
namespace: kurator-system
spec:
replicas: 3
retention: 30d
resources:
requests:
memory: 8Gi
cpu: 3
limits:
memory: 16Gi
cpu: 6
storage:
volumeClaimTemplate:
spec:
storageClassName: fast-ssd
resources:
requests:
storage: 100Gi
thanos:
image: quay.io/thanos/thanos:v0.32.0
resources:
requests:
memory: 4Gi
cpu: 2
limits:
memory: 8Gi
cpu: 4
6.2.2. Cấu hình Thanos
# thanos-store-config.yaml
apiVersion: monitoring.kurator.dev/v1alpha1
kind: Thanos
metadata:
name: kurator-thanos-store
namespace: kurator-system
spec:
version: v0.32.0
objectStorageConfig:
key: objstore.yaml
name: thanos-storage-creds
resources:
query:
requests:
memory: 3Gi
cpu: 1.5
limits:
memory: 6Gi
cpu: 3
storeGateway:
requests:
memory: 6Gi
cpu: 3
limits:
memory: 12Gi
cpu: 6
compact:
requests:
memory: 3Gi
cpu: 1.5
limits:
memory: 6Gi
cpu: 3
6.3. Trực quan hóa Dữ liệu Giám sát
Kurator cung cấp sẵn nhiều dashboard Grafana để giám sát trạng thái cụm và ứng dụng:
Hình 12: Ví dụ về bảng điều khiển giám sát thống nhất của Kurator (Nguồn: Tài liệu chính thức của Kurator).
Các chỉ số giám sát quan trọng bao gồm:
- Sử dụng tài nguyên cụm: CPU, bộ nhớ, dung lượng lưu trữ.
- Trạng thái sức khỏe ứng dụng: Trạng thái Pod, số lần khởi động lại, trạng thái sẵn sàng.
- Lưu lượng mạng: Lưu lượng vào/ra, độ trễ, tỷ lệ lỗi.
- Hiệu suất lưu trữ: IOPS, thông lượng, độ trễ.
- Các chỉ số nghiệp vụ tùy chỉnh: Ví dụ như tốc độ xử lý đơn hàng, mức độ hoạt động của người dùng.
6.4. Cấu hình Cảnh báo
Cấu hình các quy tắc cảnh báo đa cụm thông qua Alertmanager:
# custom-alert-rules.yaml
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: kurator-custom-alerting
namespace: kurator-system
spec:
groups:
- name: application-performance
rules:
- alert: HighApplicationErrorRate
expr: sum(rate(http_requests_total{job="my-app",status=~"5.."}[5m])) by (cluster, namespace, service) / sum(rate(http_requests_total{job="my-app"}[5m])) by (cluster, namespace, service) > 0.05
for: 5m
labels:
severity: critical
annotations:
summary: "Tỷ lệ lỗi HTTP 5xx cao trên {{ $labels.service }} trong cụm {{ $labels.cluster }}"
description: "Ứng dụng {{ $labels.service }} có tỷ lệ lỗi 5xx trên 5% trong 5 phút qua (hiện tại: {{ $value }}%)"
- alert: MissingApplicationReplicas
expr: sum(kube_deployment_status_replicas_available{deployment="api-gateway"}) by (cluster) < sum(kube_deployment_spec_replicas{deployment="api-gateway"}) by (cluster)
for: 10m
labels:
severity: warning
annotations:
summary: "Thiếu bản sao cho API Gateway trên cụm {{ $labels.cluster }}"
description: "Số lượng bản sao sẵn sàng của API Gateway thấp hơn số lượng mong muốn trong cụm {{ $labels.cluster }}"
- alert: NodeDiskSpaceLow
expr: node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"} * 100 < 15
for: 30m
labels:
severity: warning
annotations:
summary: "Không gian đĩa còn ít trên nút {{ $labels.instance }} của cụm {{ $labels.cluster }}"
description: "Không gian đĩa còn lại trên nút {{ $labels.instance }} của cụm {{ $labels.cluster }} dưới 15% (hiện tại: {{ printf '%.2f' $value }}%)"
7. Thực tiễn Doanh nghiệp: Case Study Kiến trúc Đa hoạt động của một nền tảng Thương mại điện tử
7.1. Kịch bản nghiệp vụ và Thách thức
Một nền tảng thương mại điện tử xuyên biên giới lớn cần triển khai kiến trúc đa hoạt động toàn cầu để đáp ứng các yêu cầu kinh doanh sau:
- Người dùng trên toàn cầu truy cập dịch vụ gần nhất, giảm độ trễ (mục tiêu: <100ms).
- Khi một khu vực gặp sự cố, hệ thống có thể chuyển đổi hoạt động nhanh chóng (RTO < 5 phút, RPO ≈ 0).
- Quản lý thống nhất hơn 20 cụm Kubernetes trên toàn cầu (phân bố ở 7 khu vực).
- Đảm bảo tính nhất quán của cấu hình ứng dụng (tỷ lệ lỗi cấu hình <0.1%).
- Yêu cầu tuân thủ: Dữ liệu phải tuân thủ luật pháp và quy định của từng khu vực (ví dụ: GDPR, CCPA).
Kiến trúc nền tảng đối mặt với những thách thức:
- Phức tạp trong triển khai: Phương pháp truyền thống yêu cầu duy trì hơn 20 bộ script triển khai độc lập.
- Tính nhất quán dữ liệu: Dữ liệu quan trọng như đơn hàng, tồn kho cần được đồng bộ hóa giữa các khu vực.
- Điều phối lưu lượng: Cần phân bổ lưu lượng động dựa trên vị trí người dùng và tải cụm.
- Điểm mù giám sát: Khó có được cái nhìn tổng thể về nghiệp vụ, mất nhiều thời gian để xác định lỗi.
7.2. Kiến trúc Giải pháp Kurator
Thông qua nền tảng Kurator, nền tảng thương mại điện tử này đã hiện thực hóa kiến trúc sau:
Hình 9: Sơ đồ kiến trúc đa hoạt động của nền tảng thương mại điện tử.
7.3. Cấu hình và Triển khai Chính
7.3.1. Chiến lược phân chia Fleet
Phân chia Fleet theo khu vực địa lý, đáp ứng yêu cầu cục bộ hóa dữ liệu:
# eu-fleet.yaml
apiVersion: fleet.kurator.dev/v1alpha1
kind: Fleet
metadata:
name: europe-fleet
spec:
clusters:
- name: eu-central-1
properties: {region: eu-central-1, country: germany, env: production}
- name: eu-west-1
properties: {region: eu-west-1, country: ireland, env: production}
- name: eu-south-1
properties: {region: eu-south-1, country: italy, env: production}
observability:
enabled: true
trafficManagement:
enabled: true
7.3.2. Chiến lược phân phối ứng dụng
Các ứng dụng kinh doanh cốt lõi được triển khai theo khu vực, các thành phần cơ sở hạ tầng được triển khai toàn cầu:
# product-catalog-app.yaml
apiVersion: apps.kurator.dev/v1alpha1
kind: Application
metadata:
name: product-catalog-service
spec:
selector:
fleet: europe-fleet
components:
- name: catalog-service
helm:
chart:
name: product-catalog
repoURL: https://corporate-helm-repo.com/charts
version: 1.5.0
values:
service:
type: ClusterIP
resources:
requests:
memory: 768Mi
cpu: 300m
limits:
memory: 1.5Gi
cpu: 1.5
7.3.3. Cấu hình khác biệt theo khu vực
Thực hiện cấu hình tuân thủ quy định khu vực thông qua OverridePolicy:
# regional-compliance-override.yaml
apiVersion: policy.karmada.io/v1alpha1
kind: OverridePolicy
metadata:
name: data-compliance-override
spec:
resourceSelectors:
- apiVersion: apps/v1
kind: Deployment
name: customer-data-service
overrideRules:
# Cấu hình tuân thủ GDPR: khu vực EU
- targetCluster:
labelSelector:
matchLabels:
country: germany
country: ireland
country: italy
overriders:
plaintext:
- path: "/spec/template/spec/containers/0/env/-"
operator: add
value:
name: GDPR_ENABLED
value: "true"
- path: "/spec/template/spec/containers/0/env/-"
operator: add
value:
name: DATA_STORAGE_LOCATION
value: "EU_DATACENTER"
# Cấu hình tuân thủ CCPA: khu vực California
- targetCluster:
labelSelector:
matchLabels:
state: california
overriders:
plaintext:
- path: "/spec/template/spec/containers/0/env/-"
operator: add
value:
name: CCPA_COMPLIANCE
value: "true"
- path: "/spec/template/spec/containers/0/env/-"
operator: add
value:
name: DATA_RESIDENCY_STATE
value: "california"
7.4. Hiệu quả và Giá trị Triển khai
7.4.1. Cải thiện chỉ số kỹ thuật
| Chỉ số | Trước tối ưu | Sau tối ưu | Mức độ cải thiện |
|---|---|---|---|
| Thời gian triển khai ứng dụng | Trung bình 2 giờ | Khoảng 15 phút | 87.5% |
| Tỷ lệ lỗi cấu hình | 12% | 0.8% | 93.3% |
| Thời gian phục hồi sau lỗi | Trung bình 45 phút | Khoảng 8 phút | 82.2% |
| Tỷ lệ sử dụng tài nguyên | 45% | 68% | 23% |
| Tính nhất quán triển khai | 75% | 99.9% | 24.9% |
7.4.2. Giá trị kinh doanh
- Nâng cao trải nghiệm người dùng: Độ trễ truy cập của người dùng toàn cầu giảm 65%, từ trung bình 220ms xuống còn 77ms.
- Tăng cường tính liên tục của nghiệp vụ: Khi khu vực gặp sự cố, thời gian chuyển đổi nghiệp vụ giảm từ vài giờ xuống dưới 5 phút.
- Nâng cao hiệu quả vận hành: Quy mô đội ngũ vận hành giảm 30%, trong khi khối lượng nghiệp vụ được hỗ trợ tăng 200%.
- Đảm bảo tuân thủ: 100% đáp ứng yêu cầu tuân thủ dữ liệu của từng khu vực, tránh rủi ro pháp lý tiềm ẩn.
- Tối ưu hóa chi phí: Giảm lãng phí tài nguyên 35%, tiết kiệm khoảng 2.4 triệu USD chi phí cơ sở hạ tầng hàng năm.
7.4.3. Cải thiện hợp tác đội nhóm
- Trải nghiệm phát triển: Nhà phát triển không cần quan tâm đến chi tiết triển khai, tập trung vào logic nghiệp vụ.
- Hiệu quả DevOps: Pipeline CI/CD rút ngắn từ 45 phút xuống 8 phút.
- Hợp tác liên đội: Các đội ngũ cơ sở hạ tầng, phát triển, bảo mật sử dụng một nền tảng thống nhất, giảm 60% chi phí giao tiếp.
8. Tính năng Nâng cao và Thực tiễn Tốt nhất
8.1. Chính sách Tự động Mở rộng/Thu hẹp
Kurator hỗ trợ kết hợp KEDA (Kubernetes Event-driven Autoscaling) để thực hiện tự động mở rộng/thu hẹp dựa trên sự kiện:
# keda-ecommerce-scaling.yaml
apiVersion: apps.kurator.dev/v1alpha1
kind: Application
metadata:
name: payment-service
spec:
selector:
fleet: europe-fleet
components:
- name: payment-gateway
helm:
chart:
name: payment-processor
repoURL: https://corporate-helm-repo.com/charts
version: 2.1.0
values:
autoscaling:
enabled: true
minReplicas: 3
maxReplicas: 30
triggers:
- type: kafka
metadata:
bootstrapServers: kafka-broker:9092
topic: payment-queue
lagThreshold: "200"
group: payment-consumers
activationLagThreshold: "50"
authenticationRef:
name: kafka-auth-secret
8.2. Quản lý Lưu lượng Đa cụm
Quản lý lưu lượng đa cụm thông qua Istio, hỗ trợ các kịch bản nâng cao như Canary Release, A/B Testing:
# istio-traffic-management.yaml
apiVersion: traffic.fleet.kurator.dev/v1alpha1
kind: TrafficManagement
metadata:
name: product-api-traffic
spec:
selector:
fleet: europe-fleet
service:
name: product-api
namespace: retail-app
strategy:
canary:
steps:
- weight: 10
duration: 15m
match:
- headers:
x-user-type:
exact: "premium"
- weight: 30
duration: 20m
- weight: 60
duration: 25m
- weight: 100
metrics:
- type: prometheus
successCondition: result > 0.98
failureCondition: result < 0.92
interval: 2m
query: |
sum(rate(istio_requests_total{destination_service="product-api.retail-app.svc.cluster.local",response_code=~"2.."}[2m]))
/
sum(rate(istio_requests_total{destination_service="product-api.retail-app.svc.cluster.local"}[2m]))
8.3. Thực tiễn Tốt nhất về Tăng cường Bảo mật
8.3.1. Chính sách Mạng Zero Trust
# zero-trust-network-policy.yaml
apiVersion: policy.kurator.dev/v1alpha1
kind: ClusterPolicy
metadata:
name: internal-app-zero-trust
spec:
selector:
fleet: europe-fleet
policies:
- name: deny-all-by-default
type: network
enforcement: mandatory
spec:
podSelector: {}
policyTypes: ["Ingress", "Egress"]
- name: allow-web-to-backend
type: network
enforcement: mandatory
spec:
podSelector:
matchLabels:
app: web-frontend
egress:
- to:
- podSelector:
matchLabels:
app: backend-api
ports:
- protocol: TCP
port: 8080
8.3.2. Quét bảo mật Image
# image-security-scan-policy.yaml
apiVersion: policy.kurator.dev/v1alpha1
kind: ClusterPolicy
metadata:
name: container-image-security
spec:
selector:
fleet: europe-fleet
policies:
- name: vulnerability-scan-check
type: image
enforcement: mandatory
spec:
rules:
- name: high-critical-vulnerabilities
severity: CRITICAL
action: block
- name: moderate-vulnerabilities
severity: MEDIUM
action: warn
scanSchedule: "0 0 */3 * *" # Quét mỗi 3 ngày một lần
8.4. Chiến lược Phục hồi Sau Thảm họa
# e-commerce-dr-plan.yaml
apiVersion: dr.fleet.kurator.dev/v1alpha1
kind: DisasterRecovery
metadata:
name: ecommerce-global-dr
spec:
primaryFleet: europe-fleet
secondaryFleet: north-america-fleet
applications:
- name: order-processing-service
failoverStrategy: automatic
rpo: 1m
rto: 5m
- name: user-authentication-service
failoverStrategy: manual
approvalRequired: true
rpo: 30s
rto: 2m
testSchedule: "0 3 * * SUN" # Thực hiện diễn tập mỗi chủ nhật lúc 3 giờ sáng
notification:
email: dr-team@example.com
slack:
webhook: https://hooks.slack.com/services/XYZ/ABC/123
9. Khắc phục sự cố Thường gặp và Đề xuất Tối ưu hóa
9.1. Khắc phục sự cố đăng ký cụm thất bại
Khi đăng ký cụm thất bại, bạn có thể làm theo các bước sau để khắc phục:
9.1.1. Nguyên nhân và Giải pháp Thường gặp
| Hiện tượng | Nguyên nhân có thể | Giải pháp |
|---|---|---|
| Kết nối hết thời gian chờ | Mạng không thông, hạn chế tường lửa | Kiểm tra kết nối mạng, mở cổng 6443 |
| Lỗi chứng chỉ | Chứng chỉ không khớp, hết hạn | Sử dụng cờ --insecure hoặc cung cấp chứng chỉ CA chính xác |
| Không đủ quyền | Cấu hình RBAC sai | Gán vai trò cluster-admin cho Service Account |
| Phiên bản Kubernetes không tương thích | Phiên bản quá cũ | Nâng cấp Kubernetes lên v1.23+ |
9.1.2. Lệnh chẩn đoán
# 1. Kiểm tra trạng thái tài nguyên AttachedCluster
kubectl get attachedclusters.fleet.kurator.dev -o wide
# 2. Mô tả chi tiết tài nguyên
kubectl describe attachedclusters.fleet.kurator.dev <tên-cụm>
# 3. Kiểm tra nhật ký karmada-controller-manager
kubectl logs -n kurator-system -l app=karmada-controller-manager --tail=100
# 4. Kiểm tra kết nối cụm
kurator check network --cluster <tên-cụm>
9.2. Khắc phục sự cố phân phối ứng dụng thất bại
Khi ứng dụng không thể được phân phối đúng cách đến cụm mục tiêu, bạn có thể khắc phục sự cố theo các bước sau:
Hình 14: Sơ đồ quy trình khắc phục sự cố Kurator (Nguồn: Tài liệu chính thức của Kurator).
9.2.1. Lệnh chẩn đoán
# 1. Kiểm tra trạng thái tài nguyên Application
kubectl get applications.apps.kurator.dev <tên-ứng-dụng> -o wide
# 2. Mô tả chi tiết Application
kubectl describe applications.apps.kurator.dev <tên-ứng-dụng>
# 3. Kiểm tra trạng thái ResourceBinding
kubectl get resourcebindings -A
kubectl describe resourcebinding <tên-binding>
# 4. Kiểm tra nhật ký karmada-scheduler
kubectl logs -n kurator-system -l app=karmada-scheduler --tail=100
9.2.2. Giải pháp cho các vấn đề thường gặp
# Vấn đề: Không đủ tài nguyên
# Giải pháp: Tăng hạn ngạch tài nguyên
apiVersion: v1
kind: ResourceQuota
metadata:
name: development-resources
namespace: dev-team
spec:
hard:
requests.cpu: "15"
requests.memory: 30Gi
limits.cpu: "30"
limits.memory: 60Gi
# Vấn đề: Kéo image thất bại
# Giải pháp: Cấu hình khóa kéo image
apiVersion: apps.kurator.dev/v1alpha1
kind: Application
metadata:
name: internal-app-with-secret
spec:
selector:
fleet: europe-fleet
components:
- name: my-private-service
helm:
chart:
name: private-service-chart
repoURL: https://internal-helm-repo.com/charts
version: 1.0.1
values:
image:
repository: private-docker.example.com/my-app
tag: production-v1.0
imagePullSecrets:
- name: docker-registry-cred
9.3. Đề xuất Tối ưu hóa Hiệu suất
9.3.1. Tối ưu hóa phân bổ tài nguyên
# fleet-resource-optimization.yaml
apiVersion: fleet.kurator.dev/v1alpha1
kind: FleetResourceQuota
metadata:
name: development-fleet-quota
spec:
fleetSelector:
name: europe-fleet
quotas:
- clusterName: eu-central-1
hard:
cpu: "120"
memory: 480Gi
pods: "250"
- clusterName: eu-west-1
hard:
cpu: "90"
memory: 360Gi
pods: "180"
autoScaling:
enabled: true
thresholds:
cpu: 75%
memory: 70%
scaleUpRatio: 1.15
scaleDownRatio: 0.85
9.3.2. Tối ưu hóa hiệu suất mạng
# cross-cluster-network-tuning.yaml
apiVersion: network.fleet.kurator.dev/v1alpha1
kind: NetworkOptimization
metadata:
name: cross-region-network-tuning
spec:
fleetSelector:
name: europe-fleet
optimizations:
- type: mtu
value: 9000 # Jumbo frames
- type: tcp
settings:
tcpKeepAlive: true
tcpFastOpen: true
tcpCongestionControl: cubic # hoặc bbr
- type: dns
cacheTTL: 180s
negativeCacheTTL: 30s
Hình 10: Các điểm tối ưu hóa hiệu suất phân phối ứng dụng đa cụm của Kurator.
10. Triển vọng Tương lai và Lộ trình Phát triển
10.1. Lộ trình Phát triển Công nghệ
Theo lộ trình chính thức của Kurator, các hướng phát triển chính trong tương lai sẽ tập trung vào:
- Lập lịch thông minh dựa trên AI: Kết hợp học máy để dự đoán tải và điều chỉnh phân bổ ứng dụng một cách động.
- Tối ưu hóa sâu cho điện toán biên: Tối ưu hóa chiến lược phân phối và cập nhật ứng dụng cho các kịch bản biên.
- Tăng cường quản trị bảo mật thống nhất: Củng cố quản lý thống nhất các chính sách bảo mật đa cụm.
- Phối hợp dữ liệu đa đám mây: Đảm bảo tính nhất quán dữ liệu giữa các đám mây.
- Nâng cao trải nghiệm nhà phát triển: Đơn giản hóa quy trình phát triển, kiểm thử và gỡ lỗi.
10.2. Tích hợp với Hệ sinh thái
Kurator sẽ tiếp tục đẩy mạnh tích hợp với các dự án trong hệ sinh thái CNCF:
- Mạng dịch vụ: Tích hợp sâu với Istio, Linkerd để cung cấp quản lý lưu lượng chi tiết hơn.
- Khả năng quan sát: Tích hợp với OpenTelemetry, Jaeger để thực hiện theo dõi toàn bộ chuỗi yêu cầu.
- GitOps: Tích hợp với ArgoCD, FluxCD để cung cấp quản lý đa cụm theo kiểu khai báo.
- Serverless: Tích hợp với Knative, KEDA để hỗ trợ tự động mở rộng/thu hẹp dựa trên sự kiện.
- Cơ sở dữ liệu: Tích hợp với Vitess, CockroachDB để hỗ trợ quản lý cơ sở dữ liệu phân tán.
10.3. Mở rộng kịch bản ứng dụng doanh nghiệp
Với sự trưởng thành của công nghệ, Kurator sẽ mang lại giá trị lớn hơn trong các kịch bản doanh nghiệp sau:
- Ngành tài chính: Đáp ứng yêu cầu hệ thống giao dịch phân tán có tính sẵn sàng cao, độ trễ thấp và tuân thủ chặt chẽ.
- Ngành sản xuất: Hiện thực hóa sự phối hợp giữa điện toán biên trong nhà máy và trung tâm đám mây.
- Ngành bán lẻ: Hỗ trợ kiến trúc đa hoạt động thương mại điện tử toàn cầu và quản lý tồn kho thời gian thực.
- Y tế và chăm sóc sức khỏe: Đảm bảo quyền riêng tư và tuân thủ dữ liệu y tế, đồng thời hiện thực hóa hợp tác toàn cầu.
- Chính phủ và khu vực công: Đáp ứng yêu cầu về chủ quyền dữ liệu, hiện thực hóa phối hợp dịch vụ giữa các khu vực.