تقدم Energent.ai وكلاء سطح مكتب افتراضي مدعومين بالذكاء الاصطناعي يقومون بأتمتة سير العمل المعقدة متعددة التطبيقات لمستخدمي المؤسسات. يوفر هذا الدليل مواصفات نشر شاملة لمنصة Google Cloud باستخدام هيكلية حديثة قائمة على السحابة مع GKE وتصميم متعدد المستأجرين وعناصر تحكم أمان على مستوى المؤسسات.
- تصنيف الوثيقة: عام
- الإصدار: 3.0
- آخر تحديث: 2025-05-28
- الهيكلية: GCP GKE + هجينة بدون خادم
- التوافق: SOC 2، أفضل ممارسات أمان Google Cloud
جدول المحتويات
- نظرة عامة على الهيكلية
- متطلبات البنية التحتية لـ GCP
- مواصفات مجموعة GKE
- هيكلية طبقة البيانات
- المكونات بدون خادم
- الأمان والتوافق
- هيكلية الشبكة
- خط أنابيب CI/CD
- المراقبة والملاحظة
- عملية النشر
- العمليات والصيانة
- الدعم والتصعيد
1. نظرة عامة على الهيكلية
1.1 هيكلية متعددة المستأجرين قائمة على السحابة
تُستخدم Energent.ai على منصة Google Cloud باستخدام هيكلية حديثة وقابلة للتوسع تجمع بين تنظيم Kubernetes والمكونات بدون خادم لتحقيق الأداء الأمثل وكفاءة التكلفة.
┌──────────────────────────────────────────────────────────────────┐
│ بيئة سحابة GCP │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ مجموعة GKE │ │ بدون خادم │ │ طبقة البيانات │ │
│ │ │ │ │ │ │ │
│ │ • متعدد المستأجرين │ │ • وظائف المصادقة │ │ • Firestore │ │
│ │ • n2-standard-4 │ │ • وظائف الفوترة │ │ • تخزين السحابة │ │
│ │ • التوسع التلقائي │ │ • بوابة API │ │ • Filestore │ │
│ │ • Flux GitOps │ │ • Pub/Sub │ │ • مدير الأسرار │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
│ │ │ │ │
│ └─────────────────────┼────────────────────┘ │
│ │ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ حدود أمان VPC │ │
│ │ • الشبكات الخاصة • Cloud NAT • قواعد الجدار الناري │ │
│ │ • أنفاق IAP • نقاط نهاية VPC • موازن التحميل │ │
│ └─────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
1.2 نماذج النشر
| النموذج | الوصف | حالة الاستخدام | SLA |
|---|
| GKE متعدد المستأجرين | مجموعة مشتركة مع عزل المساحات | نشر المؤسسات القياسي | 99.9% |
| GKE مخصص | مجموعة مستأجر واحد | أمان عالي، التوافق التنظيمي | 99.95% |
| النشر الهجين | GKE + تكامل مع أنظمة العميل المحلية | تكامل الأنظمة القديمة | 99.9% |
2. متطلبات البنية التحتية لـ GCP
2.1 مواصفات البنية التحتية الدنيا
| المكون | المواصفات | الغرض |
|---|
| إصدار مجموعة GKE | 1.30+ | تنظيم Kubernetes |
| نوع مثيل تجمع العقد | n2-standard-4 (4 vCPU، 16 GB RAM) | أعباء العمل المحسنة للحوسبة |
| تكوين العقدة الأدنى | 1 vCPU، 2 GB RAM لكل مستأجر | تخصيص الموارد |
| الأقراص الدائمة | 100 GB SSD، مشفر | تخزين دائم للبودات |
| Filestore | أساسي، مشفر | نظام ملفات مشترك |
| تخزين السحابة | قياسي، تمكين الإصدار | تخزين الكائنات |
| Firestore | الوضع الأصلي، تشفير أثناء الراحة | البيانات الوصفية والتكوين |
2.2 تبعيات خدمات GCP
| الخدمة | الغرض | التكوين |
|---|
| Google GKE | تنظيم Kubernetes | مجموعة خاصة، تمكين السجلات |
| Compute Engine | التوسع الديناميكي للعقد | التوسع التلقائي، المثيلات القابلة للإيقاف |
| Cloud Load Balancing | توزيع الحركة | إنهاء SSL، Cloud Armor |
| Cloud Functions | وظائف بدون خادم | وقت التشغيل: Python 3.11، موصل VPC |
| API Gateway | إدارة API | تحديد المعدل، المصادقة |
| Cloud Monitoring | المراقبة والسجلات | مراقبة GKE، مقاييس مخصصة |
| Secret Manager | إدارة الأسرار | التدوير التلقائي، التشفير |
| Cloud KMS | إدارة المفاتيح | مفاتيح مُدارة من العميل، التدوير التلقائي |
3. مواصفات مجموعة GKE
3.1 تكوين المجموعة
# تكوين مجموعة GKE باستخدام Terraform
resource "google_container_cluster" "energent_cluster" {
name = "energent-production"
location = var.gcp_region
remove_default_node_pool = true
initial_node_count = 1
network = google_compute_network.vpc.name
subnetwork = google_compute_subnetwork.subnet.name
networking_mode = "VPC_NATIVE"
ip_allocation_policy {
cluster_secondary_range_name = "k8s-pod-range"
services_secondary_range_name = "k8s-service-range"
}
private_cluster_config {
enable_private_nodes = true
enable_private_endpoint = false
master_ipv4_cidr_block = "172.16.0.0/28"
}
master_auth {
client_certificate_config {
issue_client_certificate = false
}
}
workload_identity_config {
workload_pool = "${var.project_id}.svc.id.goog"
}
addons_config {
gcp_filestore_csi_driver_config {
enabled = true
}
network_policy_config {
disabled = false
}
}
cluster_telemetry {
type = "ENABLED"
}
logging_config {
enable_components = [
"SYSTEM_COMPONENTS",
"WORKLOADS",
"API_SERVER"
]
}
monitoring_config {
enable_components = [
"SYSTEM_COMPONENTS",
"WORKLOADS"
]
}
}
3.2 تكوين تجمع العقد
# تجمع العقد الأساسي
resource "google_container_node_pool" "energent_nodes" {
name = "energent-node-pool"
location = var.gcp_region
cluster = google_container_cluster.energent_cluster.name
node_count = 3
autoscaling {
min_node_count = 2
max_node_count = 20
}
node_config {
preemptible = false
machine_type = "n2-standard-4"
disk_size_gb = 100
disk_type = "pd-ssd"
service_account = google_service_account.gke_service_account.email
oauth_scopes = [
"https://www.googleapis.com/auth/logging.write",
"https://www.googleapis.com/auth/monitoring",
"https://www.googleapis.com/auth/cloud-platform"
]
workload_metadata_config {
mode = "GKE_METADATA"
}
labels = {
env = "production"
app = "energent-ai"
}
taint {
key = "workload"
value = "energent-ai"
effect = "NO_SCHEDULE"
}
}
management {
auto_repair = true
auto_upgrade = true
}
}
3.3 تخصيص الموارد متعددة المستأجرين
| مستوى المستأجر | حد وحدة المعالجة المركزية | حد الذاكرة | التخزين | سير العمل المتزامن |
|---|
| أساسي | 1 vCPU | 2 GB | 10 GB | 1 |
| قياسي | 2 vCPU | 4 GB | 25 GB | 2 |
| متميز | 4 vCPU | 8 GB | 50 GB | 4 |
| مؤسسات | 8 vCPU | 16 GB | 100 GB | 8 |
4. هيكلية طبقة البيانات
4.1 هيكلية التخزين
4.1.1 تكوين تخزين السحابة
# تخزين سحابي دلو لتخزين الكائنات
resource "google_storage_bucket" "energent_storage" {
name = "energent-${var.environment}-storage-${random_id.bucket_suffix.hex}"
location = var.gcp_region
uniform_bucket_level_access = true
versioning {
enabled = true
}
encryption {
default_kms_key_name = google_kms_crypto_key.storage_key.id
}
lifecycle_rule {
condition {
age = 90
}
action {
type = "SetStorageClass"
storage_class = "NEARLINE"
}
}
retention_policy {
retention_period = 2592000 # 30 days
}
labels = {
environment = var.environment
purpose = "energent-object-storage"
}
}
resource "google_storage_bucket_iam_member" "storage_admin" {
bucket = google_storage_bucket.energent_storage.name
role = "roles/storage.admin"
member = "serviceAccount:${google_service_account.gke_service_account.email}"
}
4.1.2 تكوين Firestore
# قاعدة بيانات Firestore للبيانات الوصفية والتكوين
resource "google_firestore_database" "energent_metadata" {
project = var.project_id
name = "energent-metadata-${var.environment}"
location_id = var.gcp_region
type = "FIRESTORE_NATIVE"
concurrency_mode = "OPTIMISTIC"
app_engine_integration_mode = "DISABLED"
point_in_time_recovery_enablement = "POINT_IN_TIME_RECOVERY_ENABLED"
delete_protection_state = "DELETE_PROTECTION_ENABLED"
}
# قواعد أمان Firestore
resource "google_firestore_database" "security_rules" {
depends_on = [google_firestore_database.energent_metadata]
# سيتم تعريف محتوى قواعد الأمان هنا
# تنفيذ عزل المستأجر وضوابط الوصول
}
4.1.3 تخزين Filestore المشترك
# Filestore لنظام الملفات المشترك
resource "google_filestore_instance" "energent_shared" {
name = "energent-shared-${var.environment}"
location = var.gcp_zone
tier = "BASIC_HDD"
file_shares {
capacity_gb = 1024
name = "energent-share"
}
networks {
network = google_compute_network.vpc.name
modes = ["MODE_IPV4"]
}
labels = {
environment = var.environment
purpose = "shared-storage"
}
}
5. المكونات بدون خادم
5.1 وظائف السحابة
5.1.1 خدمة المصادقة
# وظيفة السحابة للمصادقة
resource "google_cloudfunctions2_function" "auth_service" {
name = "energent-auth-${var.environment}"
location = var.gcp_region
build_config {
runtime = "python311"
entry_point = "auth_handler"
source {
storage_source {
bucket = google_storage_bucket.functions_source.name
object = google_storage_bucket_object.auth_source.name
}
}
}
service_config {
max_instance_count = 100
min_instance_count = 1
available_memory = "512Mi"
timeout_seconds = 60
environment_variables = {
FIRESTORE_PROJECT = var.project_id
SECRET_MANAGER_PROJECT = var.project_id
ENVIRONMENT = var.environment
}
vpc_connector = google_vpc_access_connector.connector.id
vpc_connector_egress_settings = "ALL_TRAFFIC"
service_account_email = google_service_account.functions_service_account.email
}
event_trigger {
trigger_region = var.gcp_region
event_type = "google.cloud.pubsub.topic.v1.messagePublished"
pubsub_topic = google_pubsub_topic.auth_events.id
}
labels = {
environment = var.environment
service = "authentication"
}
}
5.1.2 خدمة الفوترة
# وظيفة السحابة للفوترة
resource "google_cloudfunctions2_function" "billing_service" {
name = "energent-billing-${var.environment}"
location = var.gcp_region
build_config {
runtime = "python311"
entry_point = "billing_handler"
source {
storage_source {
bucket = google_storage_bucket.functions_source.name
object = google_storage_bucket_object.billing_source.name
}
}
}
service_config {
max_instance_count = 50
min_instance_count = 0
available_memory = "1Gi"
timeout_seconds = 300
environment_variables = {
FIRESTORE_PROJECT = var.project_id
STORAGE_BUCKET = google_storage_bucket.energent_storage.name
}
service_account_email = google_service_account.functions_service_account.email
}
}
5.2 تكوين بوابة API
# بوابة API لوظائف بدون خادم
resource "google_api_gateway_api" "energent_api" {
provider = google-beta
api_id = "energent-api-${var.environment}"
project = var.project_id
labels = {
environment = var.environment
service = "api-gateway"
}
}
resource "google_api_gateway_api_config" "energent_api_config" {
provider = google-beta
api = google_api_gateway_api.energent_api.api_id
api_config_id = "energent-config-${var.environment}"
project = var.project_id
openapi_documents {
document {
path = "spec.yaml"
contents = base64encode(templatefile("${path.module}/api-spec.yaml", {
project_id = var.project_id
region = var.gcp_region
}))
}
}
lifecycle {
create_before_destroy = true
}
}
resource "google_api_gateway_gateway" "energent_gateway" {
provider = google-beta
gateway_id = "energent-gateway-${var.environment}"
api_config = google_api_gateway_api_config.energent_api_config.id
location = var.gcp_region
project = var.project_id
labels = {
environment = var.environment
service = "api-gateway"
}
}
6. الأمن والامتثال
6.1 أمان الشبكة
6.1.1 تكوين VPC
# شبكة VPC وقواعد الجدار الناري
resource "google_compute_network" "vpc" {
name = "energent-vpc-${var.environment}"
auto_create_subnetworks = false
mtu = 1460
}
resource "google_compute_subnetwork" "subnet" {
name = "energent-subnet-${var.environment}"
ip_cidr_range = "10.0.0.0/16"
region = var.gcp_region
network = google_compute_network.vpc.id
secondary_ip_range {
range_name = "k8s-pod-range"
ip_cidr_range = "10.1.0.0/16"
}
secondary_ip_range {
range_name = "k8s-service-range"
ip_cidr_range = "10.2.0.0/16"
}
private_ip_google_access = true
}
resource "google_compute_firewall" "allow_internal" {
name = "energent-allow-internal"
network = google_compute_network.vpc.name
allow {
protocol = "tcp"
ports = ["0-65535"]
}
allow {
protocol = "udp"
ports = ["0-65535"]
}
allow {
protocol = "icmp"
}
source_ranges = ["10.0.0.0/8"]
}
resource "google_compute_firewall" "allow_https" {
name = "energent-allow-https"
network = google_compute_network.vpc.name
allow {
protocol = "tcp"
ports = ["443"]
}
source_ranges = ["0.0.0.0/0"]
target_tags = ["https-server"]
}
6.1.2 قواعد الجدار الناري
| الاتجاه | البروتوكول | نطاق المنافذ | المصدر/الوجهة | الغرض |
|---|
| وارد | HTTPS | 443 | 0.0.0.0/0 | الوصول إلى API |
| وارد | TCP | 1024-65535 | 10.0.0.0/8 | حركة المرور الداخلية |
| صادر | HTTPS | 443 | 0.0.0.0/0 | استدعاءات API الخارجية |
| صادر | TCP | 53 | 0.0.0.0/0 | حل DNS |
6.2 معايير التشفير
| حالة البيانات | طريقة التشفير | إدارة المفاتيح | الامتثال |
|---|
| في الراحة | AES-256-GCM | Cloud KMS مع التدوير التلقائي | SOC 2، FIPS 140-2 المستوى 3 |
| في النقل | TLS 1.3 | شهادات مُدارة من Google | SOC 2، PCI DSS |
| في الذاكرة | على مستوى التطبيق | وحدة أمان الأجهزة | SOC 2 |
| النسخ الاحتياطي | AES-256 | Cloud KMS عبر المناطق | SOC 2، GDPR |
6.3 IAM وحسابات الخدمة
6.3.1 حسابات خدمة GKE
# حساب خدمة GKE
resource "google_service_account" "gke_service_account" {
account_id = "energent-gke-${var.environment}"
display_name = "Energent GKE Service Account"
project = var.project_id
}
resource "google_project_iam_member" "gke_permissions" {
for_each = toset([
"roles/logging.logWriter",
"roles/monitoring.metricWriter",
"roles/monitoring.viewer",
"roles/storage.objectViewer"
])
project = var.project_id
role = each.value
member = "serviceAccount:${google_service_account.gke_service_account.email}"
}
# ربط هوية عبء العمل
resource "google_service_account_iam_member" "workload_identity" {
service_account_id = google_service_account.gke_service_account.name
role = "roles/iam.workloadIdentityUser"
member = "serviceAccount:${var.project_id}.svc.id.goog[energent-ai/energent-platform]"
}
7. هندسة الشبكة
7.1 تصميم VPC
┌─────────────────────────────────────────────────────────────────┐
│ VPC (10.0.0.0/16) │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │
│ │ Public Subnet │ │ Public Subnet │ │ Public Sub │ │
│ │ (10.0.1.0/24) │ │ (10.0.2.0/24) │ │(10.0.3.0/24)│ │
│ │ │ │ │ │ │ │
│ │ Cloud NAT │ │ Cloud NAT │ │ Cloud NAT │ │
│ │ Load Balancer │ │ Load Balancer │ │Load Balancer│ │
│ └─────────────────┘ └─────────────────┘ └─────────────┘ │
│ │ │ │ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │
│ │ Private Subnet │ │ Private Subnet │ │Private Sub │ │
│ │ (10.1.0.0/16) │ │ (10.1.0.0/16) │ │(10.1.0.0/16)│ │
│ │ │ │ │ │ │ │
│ │ GKE Nodes │ │ GKE Nodes │ │ GKE Nodes │ │
│ │ Functions VPC │ │ Functions VPC │ │ Functions │ │
│ └─────────────────┘ └─────────────────┘ └─────────────┘ │
│ │ │ │ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │
│ │ Services Subnet │ │ Services Subnet │ │Services Sub │ │
│ │ (10.2.0.0/16) │ │ (10.2.0.0/16) │ │(10.2.0.0/16)│ │
│ │ │ │ │ │ │ │
│ │ Firestore │ │ Firestore │ │ Firestore │ │
│ │ Cloud Storage │ │ Cloud Storage │ │Cloud Storage│ │
│ └─────────────────┘ └─────────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────────┘
7.2 اتصالات الخدمة الخاصة
| الخدمة | النوع | الغرض |
|---|
| Cloud Storage | نقطة نهاية خاصة | الوصول إلى تخزين الكائنات |
| Firestore | نقطة نهاية خاصة | الوصول إلى البيانات الوصفية |
| GKE | عنقود خاص | الوصول إلى واجهة برمجة التطبيقات للعنقود |
| Container Registry | نقطة نهاية خاصة | سجل الحاويات |
| Cloud Monitoring | نقطة نهاية خاصة | المراقبة وتسجيل الأحداث |
| Secret Manager | نقطة نهاية خاصة | الوصول إلى الأسرار |
8. خط أنابيب CI/CD
8.1 البنية التحتية ككود (Terraform)
8.1.1 هيكل Terraform
terraform/
├── environments/
│ ├── dev/
│ ├── staging/
│ └── production/
├── modules/
│ ├── gke/
│ ├── networking/
│ ├── security/
│ └── storage/
├── shared/
│ └── backend.tf
└── global/
└── iam.tf
8.1.2 خط أنابيب Terraform (Cloud Build)
# cloudbuild.yaml
steps:
# Terraform Init
- name: 'hashicorp/terraform:1.6.0'
entrypoint: 'sh'
args:
- '-c'
- |
cd terraform/environments/${_ENVIRONMENT}
terraform init -backend-config="bucket=${_TF_STATE_BUCKET}"
# Terraform Plan
- name: 'hashicorp/terraform:1.6.0'
entrypoint: 'sh'
args:
- '-c'
- |
cd terraform/environments/${_ENVIRONMENT}
terraform plan -var-file="${_ENVIRONMENT}.tfvars" -out=tfplan
# Terraform Apply (only on main branch)
- name: 'hashicorp/terraform:1.6.0'
entrypoint: 'sh'
args:
- '-c'
- |
if [ "${BRANCH_NAME}" = "main" ]; then
cd terraform/environments/${_ENVIRONMENT}
terraform apply -auto-approve tfplan
else
echo "Skipping apply for non-main branch"
fi
substitutions:
_ENVIRONMENT: 'production'
_TF_STATE_BUCKET: 'energent-terraform-state'
options:
logging: CLOUD_LOGGING_ONLY
machineType: 'E2_HIGHCPU_8'
timeout: 1200s
8.2 Kubernetes GitOps (Flux)
8.2.1 إعداد Flux
# flux-system/gotk-sync.yaml
apiVersion: source.toolkit.fluxcd.io/v1beta2
kind: GitRepository
metadata:
name: energent-k8s
namespace: flux-system
spec:
interval: 1m
ref:
branch: main
url: https://github.com/energent-ai/k8s-manifests
---
apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
kind: Kustomization
metadata:
name: energent-apps
namespace: flux-system
spec:
interval: 10m
path: './apps'
prune: true
sourceRef:
kind: GitRepository
name: energent-k8s
validation: client
8.3 النشر بدون خوادم (Cloud Build)
8.3.1 إعداد نشر الوظائف
# cloudbuild-functions.yaml
steps:
# Deploy Auth Function
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk:latest'
entrypoint: 'bash'
args:
- '-c'
- |
cd functions/auth
gcloud functions deploy energent-auth-${_ENVIRONMENT} \
--runtime python311 \
--trigger-http \
--entry-point auth_handler \
--memory 512MB \
--timeout 60s \
--region ${_REGION} \
--vpc-connector ${_VPC_CONNECTOR} \
--set-env-vars ENVIRONMENT=${_ENVIRONMENT}
# Deploy Billing Function
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk:latest'
entrypoint: 'bash'
args:
- '-c'
- |
cd functions/billing
gcloud functions deploy energent-billing-${_ENVIRONMENT} \
--runtime python311 \
--trigger-topic billing-events \
--entry-point billing_handler \
--memory 1024MB \
--timeout 300s \
--region ${_REGION}
substitutions:
_ENVIRONMENT: 'production'
_REGION: 'us-central1'
_VPC_CONNECTOR: 'energent-vpc-connector'
options:
logging: CLOUD_LOGGING_ONLY
9. المراقبة والقابلية للملاحظة
9.1 إعداد Cloud Monitoring
9.1.1 مراقبة GKE
# Cloud Monitoring for GKE
resource "google_monitoring_dashboard" "gke_dashboard" {
dashboard_json = jsonencode({
displayName = "Energent GKE Dashboard"
mosaicLayout = {
tiles = [
{
width = 6
height = 4
widget = {
title = "GKE Cluster CPU Utilization"
xyChart = {
dataSets = [{
timeSeriesQuery = {
timeSeriesFilter = {
filter = "resource.type=\"k8s_cluster\" AND metric.type=\"kubernetes.io/container/cpu/core_usage_time\""
}
}
}]
}
}
}
]
}
})
}
# Log-based Metrics
resource "google_logging_metric" "error_rate" {
name = "energent_error_rate"
filter = "resource.type=\"k8s_container\" AND resource.labels.namespace_name=\"energent-ai\" AND severity=\"ERROR\""
metric_descriptor {
metric_kind = "GAUGE"
value_type = "INT64"
display_name = "Energent Error Rate"
}
}
9.2 مقاييس التطبيق
| فئة المقاييس | المقاييس | الهدف | عتبة التنبيه |
|---|
| التوافر | وقت التشغيل، فحوصات الصحة | 99.9% | < 99.5% |
| الأداء | وقت الاستجابة، الإنتاجية | < 2s, > 1000 RPS | > 5s, < 500 RPS |
| استخدام الموارد | CPU، ذاكرة، تخزين | < 80% | > 90% |
| معدلات الأخطاء | أخطاء 4xx، 5xx | < 1% | > 5% |
9.3 تسجيل التدقيق
# Cloud Audit Logs Configuration
resource "google_project_iam_audit_config" "project_audit" {
project = var.project_id
service = "allServices"
audit_log_config {
log_type = "ADMIN_READ"
}
audit_log_config {
log_type = "DATA_READ"
}
audit_log_config {
log_type = "DATA_WRITE"
}
}
# Log Sink for Security Events
resource "google_logging_project_sink" "security_sink" {
name = "energent-security-sink"
destination = "storage.googleapis.com/${google_storage_bucket.audit_logs.name}"
filter = "protoPayload.serviceName=\"container.googleapis.com\" OR protoPayload.serviceName=\"iam.googleapis.com\""
unique_writer_identity = true
}
10. عملية النشر
10.1 الجدول الزمني للنشر
| المرحلة | المدة | الأنشطة | أصحاب المصلحة |
|---|
| ما قبل النشر | 2-3 أيام | تخطيط البنية التحتية، مراجعة الأمان | فريق تكنولوجيا المعلومات، الأمان، حلول Energent |
| البنية التحتية | 1-2 أيام | نشر Terraform، إعداد VPC | فريق DevOps، منصة Energent |
| عنقود GKE | 0.5 يوم | توفير العنقود، تجمعات العقد | فريق DevOps، منصة Energent |
| التطبيق | 0.5 يوم | نشر Flux، طرح التطبيق | فريق منصة Energent |
| التكامل | 1-2 أيام | IAM، المراقبة، الاختبار | فريق تكنولوجيا المعلومات، دعم Energent |
| الانتقال إلى الإنتاج | 0.5 يوم | الانتقال إلى الإنتاج، التحقق | جميع أصحاب المصلحة |
10.2 أوامر النشر
10.2.1 نشر البنية التحتية
# Infrastructure Deployment with Terraform
cd terraform/environments/production
terraform init -backend-config="bucket=energent-terraform-state"
terraform plan -var-file="production.tfvars"
terraform apply -auto-approve
# Verify GKE cluster
gcloud container clusters get-credentials energent-production --region us-central1
kubectl get nodes
10.2.2 نشر التطبيق
# Install Flux GitOps
flux bootstrap github \
--owner=energent-ai \
--repository=k8s-manifests \
--branch=main \
--path=./clusters/production
# Deploy serverless components
gcloud builds submit --config cloudbuild-functions.yaml \
--substitutions _ENVIRONMENT=production,_REGION=us-central1
# التحقق من النشر
kubectl get pods -n energent-ai
kubectl get ingress -n energent-ai
10.3 التحقق من النشر
# نقاط التحقق الصحي
curl -k https://api.energent.example.com/health
curl -k https://api.energent.example.com/metrics
# التحقق من Kubernetes
kubectl top nodes
kubectl get hpa -n energent-ai
kubectl logs -n energent-ai -l app=energent-platform
11. العمليات والصيانة
11.1 النسخ الاحتياطي واستعادة الكوارث
11.1.1 استراتيجية النسخ الاحتياطي
| المكون | التكرار | الاحتفاظ | RTO | RPO |
|---|
| حالة GKE Cluster | يوميًا | 30 يومًا | < 4 ساعات | < 24 ساعة |
| بيانات التطبيق | في الوقت الفعلي | 90 يومًا | < 1 ساعة | < 15 دقيقة |
| التكوين | عند التغيير | 1 سنة | < 30 دقيقة | 0 |
| سجلات التدقيق | في الوقت الفعلي | 7 سنوات | < 24 ساعة | 0 |
11.1.2 إجراءات استعادة الكوارث
# النسخ الاحتياطي لـ GKE cluster باستخدام Velero
velero backup create energent-cluster-backup \
--include-namespaces energent-ai \
--storage-location gcp
# استعادة نقطة زمنية لـ Firestore
gcloud firestore databases restore \
--source-database=energent-metadata-production \
--destination-database=energent-metadata-restored \
--backup-time=2025-05-28T10:00:00Z
11.2 التوسع والأداء
11.2.1 تكوين التوسع التلقائي
# Horizontal Pod Autoscaler
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: energent-platform-hpa
namespace: energent-ai
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: energent-platform
minReplicas: 3
maxReplicas: 50
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 80
11.3 التحديث والصيانة
11.3.1 التحديثات التدريجية
# تحديث GKE cluster
gcloud container clusters upgrade energent-production \
--master \
--cluster-version 1.30 \
--region us-central1
# تحديث تدريجي للتطبيق عبر Flux
git commit -am "Update energent-platform to v2.1.0"
git push origin main
# Flux يكتشف التغييرات ويطبقها تلقائيًا
12. الدعم والتصعيد
12.1 مستويات الدعم
| المستوى | وقت الاستجابة | القنوات | النطاق |
|---|
| L1 - أساسي | < 4 ساعات | البريد الإلكتروني، البوابة | الأسئلة العامة، الوثائق |
| L2 - قياسي | < 2 ساعات | الهاتف، البريد الإلكتروني، الاجتماع | المشكلات التقنية، دعم التكامل |
| L3 - مميز | < 1 ساعة | الهاتف، الاجتماع، الفيديو | المشكلات التقنية المعقدة، الهندسة |
| L4 - حرج | < 30 دقيقة | الهاتف، الرسائل النصية، التصعيد | انقطاعات الإنتاج، الحوادث الأمنية |
12.2 تغطية الدعم على مدار الساعة
دعم المؤسسات:
تصعيد الطوارئ:
12.3 اتفاقيات مستوى الخدمة
| الخدمة | SLA | العقوبة |
|---|
| توفر المنصة | 99.9% وقت تشغيل | 10% خصم شهري لكل 0.1% نقص |
| وقت الاستجابة (P95) | < 2 ثانية | 5% خصم شهري إذا كان > 5 ثوانٍ |
| استجابة الدعم | حسب المستوى أعلاه | التصعيد إلى المستوى التالي |
| استعادة البيانات | RTO < 4 ساعات | 25% خصم شهري إذا تم تجاوزه |
الملاحق
الملحق أ: تكاليف خدمات GCP
| الخدمة | التكلفة الشهرية المقدرة | عامل التوسع |
|---|
| GKE Cluster | $75 | ثابت لكل مجموعة |
| Compute Engine (3x n2-standard-4) | $850 | خطي لكل عقدة |
| Persistent Disks (300GB) | $60 | خطي لكل GB |
| Cloud Storage (1TB) | $20 | خطي لكل GB |
| Firestore | $120 | حسب الاستخدام |
| Cloud Functions | $35 | حسب الطلب |
| إجمالي التكلفة الأساسية | ~$1,160/شهريًا | لـ 100 مستأجر |
الملحق ب: قائمة التحقق من الامتثال الأمني
الملحق ج: دليل استكشاف الأخطاء وإصلاحها
المشكلات الشائعة:
-
عقد GKE لا تنضم إلى المجموعة
- تحقق من أذونات حساب الخدمة
- تحقق من توجيه الشبكة الفرعية وCloud NAT
-
حاويات التطبيق CrashLooping
- تحقق من حدود الموارد والطلبات
- تحقق من مطالبات الحجم المستمر
-
مشكلات الاتصال بالشبكة
- تحقق من تكوين موصل VPC
- تحقق من قواعد الجدار الناري
- تصنيف الوثيقة: عام
- الإصدار: 3.0
- آخر تحديث: 2025-05-28
- المراجعة التالية: 2025-08-28
- الاتصال: support@energent.ai