Руководство по развертыванию Enterprise GCP - Energent.ai

Energent.ai предоставляет виртуальных агент desktop на базе ИИ, которые автоматизируют сложные рабочие процессы с использованием нескольких приложений для корпоративных пользователей. Это руководство предлагает подробные спецификации развертывания на платформе Google Cloud с использованием современной облачно-нативной архитектуры с GKE, многопользовательским дизайном и средствами безопасности корпоративного уровня.

  • Классификация документа: Публичный
  • Версия: 3.0
  • Последнее обновление: 2025-05-28
  • Архитектура: GCP GKE + гибридная серверless
  • Соответствие требованиям: SOC 2, лучшие практики безопасности Google Cloud

Содержание

  1. Обзор архитектуры
  2. Требования к инфраструктуре GCP
  3. Спецификации кластеров GKE
  4. Архитектура уровня данных
  5. Серверless компоненты
  6. Безопасность и соответствие требованиям
  7. Сетевая архитектура
  8. Конвейер CI/CD
  9. Мониторинг и наблюдаемость
  10. Процесс развертывания
  11. Операции и обслуживание
  12. Поддержка и эскалация

1. Обзор архитектуры

1.1 Облачно-нативная многопользовательская архитектура

Energent.ai развертывается на платформе Google Cloud с использованием современной масштабируемой архитектуры, которая сочетает оркестрацию Kubernetes с серверless компонентами для оптимальной производительности и эффективности затрат.

┌──────────────────────────────────────────────────────────────────┐
│                        ОБЛАЧНАЯ СРЕДА GCP                        │
│  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐   │
│  │   КЛАСТЕР GKE   │  │   SERVERLESS    │  │   УРОВЕНЬ ДАННЫХ │   │
│  │                 │  │                 │  │                 │   │
│  │ • Многопольз.   │  │ • Функции Auth  │  │ • Firestore     │   │
│  │ • n2-standard-4 │  │ • Функции Bill  │  │ • Cloud Storage │   │
│  │ • Авто-масштаб  │  │ • API Gateway   │  │ • Filestore     │   │
│  │ • Flux GitOps   │  │ • Pub/Sub       │  │ • Secret Mgr    │   │
│  └─────────────────┘  └─────────────────┘  └─────────────────┘   │
│           │                     │                    │           │
│           └─────────────────────┼────────────────────┘           │
│                                 │                                │
│  ┌─────────────────────────────────────────────────────────────┐ │
│  │                    ГРАНИЦА БЕЗОПАСНОСТИ VPC                 │ │
│  │  • Приватные подсети • Cloud NAT    • Правила брандмауэра   │ │
│  │  • Туннели IAP       • Конечные точки VPC • Балансировщик   │ │
│  └─────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘

1.2 Модели развертывания

МодельОписаниеСценарий использованияSLA
Многопользовательский GKEОбщий кластер с изоляцией namespaceСтандартное корпоративное развертывание99.9%
Выделенный GKEКластер для одного пользователяВысокая безопасность, соответствие требованиям99.95%
Гибридное развертываниеGKE + интеграция с локальной инфраструктурой клиентаИнтеграция с устаревшими системами99.9%

2. Требования к инфраструктуре GCP

2.1 Минимальные спецификации инфраструктуры

КомпонентСпецификацияНазначение
Версия кластера GKE1.30+Оркестрация Kubernetes
Тип экземпляра пула узловn2-standard-4 (4 vCPU, 16 GB RAM)Оптимизированные вычисления
Минимальная конфигурация узлов1 vCPU, 2 GB RAM на пользователяРаспределение ресурсов
Постоянные диски100 GB SSD, зашифрованныеПостоянное хранилище подов
FilestoreBasic, зашифрованныйОбщая файловая система
Cloud StorageStandard, включено версионированиеХранилище объектов
FirestoreРежим Native, шифрование на дискеМетаданные и конфигурация

2.2 Зависимости сервисов GCP

СервисНазначениеКонфигурация
Google GKEОркестрация KubernetesПриватный кластер, включен логирование
Compute EngineДинамическое масштабирование узловАвто-масштабирование, прерываемые экземпляры
Cloud Load BalancingРаспределение трафикаSSL-терминация, Cloud Armor
Cloud FunctionsСерверless функцииRuntime: 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 Распределение ресурсов для многопользовательской среды

Уровень пользователяОграничение CPUОграничение памятиХранилищеОдновременные рабочие процессы
Базовый1 vCPU2 GB10 GB1
Стандартный2 vCPU4 GB25 GB2
Премиум4 vCPU8 GB50 GB4
Корпоративный8 vCPU16 GB100 GB8

4. Архитектура уровня данных

4.1 Архитектура хранилища

4.1.1 Конфигурация Cloud Storage


# Хранилище объектов в облаке
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 дней
  }

  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 Gateway

# API Gateway для серверных функций
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 Правила межсетевого экрана

НаправлениеПротоколДиапазон портовИсточник/НазначениеНазначение
ВходящийHTTPS4430.0.0.0/0Доступ к API
ВходящийTCP1024-6553510.0.0.0/8Внутренний трафик
ИсходящийHTTPS4430.0.0.0/0Внешние вызовы API
ИсходящийTCP530.0.0.0/0Разрешение DNS

6.2 Стандарты шифрования

Состояние данныхМетод шифрованияУправление ключамиСоответствие
На дискеAES-256-GCMCloud KMS с авто-ротациейSOC 2, FIPS 140-2 Уровень 3
В транзитеTLS 1.3Сертификаты GoogleSOC 2, PCI DSS
В памятиУровень приложенияМодуль аппаратной безопасностиSOC 2
Резервное копированиеAES-256Межрегиональный Cloud KMSSOC 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Приватный кластерДоступ к API кластера
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
  - name: 'hashicorp/terraform:1.6.0'
    entrypoint: 'sh'
    args:
      - '-c'
      - |
        cd terraform/environments/${_ENVIRONMENT}
        terraform init -backend-config="bucket=${_TF_STATE_BUCKET}"

  # План Terraform
  - name: 'hashicorp/terraform:1.6.0'
    entrypoint: 'sh'
    args:
      - '-c'
      - |
        cd terraform/environments/${_ENVIRONMENT}
        terraform plan -var-file="${_ENVIRONMENT}.tfvars" -out=tfplan

  # Применение Terraform (только для основной ветки)
  - 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 "Пропуск применения для неосновной ветки"
        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:
  # Развертывание функции аутентификации
  - 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}

  # Развертывание функции биллинга
  - 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 для 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\""
                  }
                }
              }]
            }
          }
        }
      ]
    }
  })
}

# Метрики на основе логов
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%
ПроизводительностьВремя отклика, пропускная способность< 2с, > 1000 RPS> 5с, < 500 RPS
Использование ресурсовCPU, память, хранилище< 80%> 90%
Уровень ошибокОшибки 4xx, 5xx< 1%> 5%

9.3 Аудит логов

# Конфигурация Cloud Audit Logs
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"
  }
}

# Лог-синк для событий безопасности
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 дняПланирование инфраструктуры, обзор безопасностиIT заказчика, безопасность, Energent Solutions
Инфраструктура1-2 дняРазвертывание Terraform, настройка VPCDevOps заказчика, платформа Energent
Кластер GKE0.5 дняПровизия кластера, пул узловDevOps заказчика, платформа Energent
Приложение0.5 дняРазвертывание Flux, развертывание приложенияКоманда платформы Energent
Интеграция1-2 дняIAM, мониторинг, тестированиеIT заказчика, поддержка Energent
Запуск0.5 дняПереключение на продакшн, проверкаВсе участники

10.2 Команды развертывания

10.2.1 Развертывание инфраструктуры

# Развертывание инфраструктуры с помощью Terraform
cd terraform/environments/production
terraform init -backend-config="bucket=energent-terraform-state"
terraform plan -var-file="production.tfvars"
terraform apply -auto-approve

# Проверка кластера GKE
gcloud container clusters get-credentials energent-production --region us-central1
kubectl get nodes

10.2.2 Развертывание приложения

# Установка Flux GitOps
flux bootstrap github \
  --owner=energent-ai \
  --repository=k8s-manifests \
  --branch=main \
  --path=./clusters/production

# Развертывание компонентов без сервера
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 Стратегия резервного копирования

КомпонентЧастотаСрок храненияRTORPO
Состояние кластера GKEЕжедневно30 дней< 4 часа< 24 часов
Данные приложенияВ реальном времени90 дней< 1 часа< 15 минут
КонфигурацияПри изменении1 год< 30 минут0
Журналы аудитаВ реальном времени7 лет< 24 часов0

11.1.2 Процедуры восстановления после сбоев

# Резервное копирование кластера GKE с использованием 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 Конфигурация авто-масштабирования

# Горизонтальный авто-масштабатор подов
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
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 часовEmail, ПорталОбщие вопросы, документация
L2 - Стандартный< 2 часовТелефон, Email, MeetТехнические проблемы, поддержка интеграции
L3 - Премиум< 1 часаТелефон, Meet, ВидеоСложные технические проблемы, архитектура
L4 - Критический< 30 минутТелефон, SMS, ЭскалацияСбои в производстве, инциденты безопасности

12.2 Круглосуточное покрытие поддержки

Корпоративная поддержка:

Экстренная эскалация:

12.3 Соглашения об уровне обслуживания

СервисSLAШтраф
Доступность платформы99.9% времени10% месячного кредита за каждые 0.1%
Время отклика (P95)< 2 секунд5% месячного кредита, если > 5 секунд
Отклик поддержкиПо уровням вышеЭскалация на следующий уровень
Восстановление данныхRTO < 4 часов25% месячного кредита, если превышено

Приложения

Приложение A: Затраты на услуги GCP

СервисОценочная месячная стоимостьФактор масштабирования
Кластер GKE$75Фиксированная на кластер
Compute Engine (3x n2-standard-4)$850Линейная на узел
Постоянные диски (300GB)$60Линейная на GB
Облачное хранилище (1TB)$20Линейная на GB
Firestore$120Основано на использовании
Облачные функции$35Основано на запросах
Общая базовая стоимость~$1,160/месяцДля 100 арендаторов

Приложение B: Контрольный список соответствия безопасности

  • Развернут VPC с приватными подсетями
  • Правила брандмауэра с минимальным доступом
  • Шифрование Cloud KMS для всех данных в состоянии покоя
  • TLS 1.3 для всех данных в транзите
  • IAM с минимальными разрешениями
  • Включены журналы аудита в облаке
  • Включен Центр команд безопасности
  • Включены ограничения политики организации
  • Менеджер секретов для всех учетных данных
  • Регулярные проверки и оценки безопасности

Приложение C: Руководство по устранению неполадок

Распространенные проблемы:

  1. Узлы GKE не присоединяются к кластеру

    • Проверьте разрешения учетной записи службы
    • Проверьте маршрутизацию подсетей и Cloud NAT
  2. Поды приложения находятся в состоянии CrashLooping

    • Проверьте ограничения и запросы ресурсов
    • Проверьте заявки на постоянные тома
  3. Проблемы с сетевой связью

    • Проверьте конфигурацию соединителя VPC
    • Проверьте правила брандмауэра

  • Классификация документа: Публичный
  • Версия: 3.0
  • Последнее обновление: 2025-05-28
  • Следующий обзор: 2025-08-28
  • Контакт: support@energent.ai