Przewodnik wdrożeniowy GCP dla przedsiębiorstw - Energent.ai

Energent.ai dostarcza wirtualnych agentów desktopowych zasilanych przez AI, którzy automatyzują złożone przepływy pracy obejmujące wiele aplikacji dla użytkowników korporacyjnych. Ten przewodnik zawiera szczegółowe specyfikacje wdrożeniowe Google Cloud Platform z wykorzystaniem nowoczesnej architektury natywnej dla chmury z GKE, projektowania wielodostępnego i zabezpieczeń klasy korporacyjnej.

  • Klasyfikacja dokumentu: Publiczny
  • Wersja: 3.0
  • Ostatnia aktualizacja: 2025-05-28
  • Architektura: GCP GKE + Hybrydowa bezserwerowa
  • Zgodność: SOC 2, Najlepsze praktyki bezpieczeństwa Google Cloud

Spis treści

  1. Przegląd architektury
  2. Wymagania infrastruktury GCP
  3. Specyfikacje klastra GKE
  4. Architektura warstwy danych
  5. Komponenty bezserwerowe
  6. Bezpieczeństwo i zgodność
  7. Architektura sieciowa
  8. Pipeline CI/CD
  9. Monitorowanie i obserwowalność
  10. Proces wdrożenia
  11. Operacje i utrzymanie
  12. Wsparcie i eskalacja

1. Przegląd architektury

1.1 Architektura wielodostępna natywna dla chmury

Energent.ai wdraża się na Google Cloud Platform, wykorzystując nowoczesną, skalowalną architekturę, która łączy orkiestrację Kubernetes z komponentami bezserwerowymi dla optymalnej wydajności i efektywności kosztowej.

┌──────────────────────────────────────────────────────────────────┐
│                        ŚRODOWISKO CHMURY GCP                     │
│  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐   │
│  │   KLASTER GKE   │  │   BEZSERWEROWE  │  │   WARSTWA DANYCH │   │
│  │                 │  │                 │  │                 │   │
│  │ • Wielodostępne │  │ • Funkcje Auth  │  │ • Firestore      │   │
│  │ • n2-standard-4 │  │ • Funkcje Bill  │  │ • Cloud Storage  │   │
│  │ • Auto-skalowanie │  │ • API Gateway │  │ • Filestore      │   │
│  │ • Flux GitOps   │  │ • Pub/Sub       │  │ • Secret Mgr     │   │
│  └─────────────────┘  └─────────────────┘  └─────────────────┘   │
│           │                     │                    │           │
│           └─────────────────────┼────────────────────┘           │
│                                 │                                │
│  ┌─────────────────────────────────────────────────────────────┐ │
│  │                    GRANICA BEZPIECZEŃSTWA VPC               │ │
│  │  • Prywatne podsieci • Cloud NAT    • Zasady zapory         │ │
│  │  • Tunele IAP       • Punkty końcowe VPC • Load Balancer    │ │
│  └─────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘

1.2 Modele wdrożenia

ModelOpisPrzypadek użyciaSLA
Wielodostępny GKEWspólny klaster z izolacją przestrzeniStandardowe wdrożenie korporacyjne99.9%
Dedykowany GKEKlaster jedno-dostępnyWysokie bezpieczeństwo, zgodność99.95%
Hybrydowe wdrożenieGKE + integracja z lokalnym klientemIntegracja systemów legacy99.9%

2. Wymagania infrastruktury GCP

2.1 Minimalne specyfikacje infrastruktury

KomponentSpecyfikacjaCel
Wersja klastra GKE1.30+Orkiestracja Kubernetes
Typ instancji puli węzłówn2-standard-4 (4 vCPU, 16 GB RAM)Obciążenia zoptymalizowane
Minimalna konfiguracja węzła1 vCPU, 2 GB RAM na najemcęPrzydział zasobów
Dyski trwałe100 GB SSD, szyfrowaneTrwałe przechowywanie danych
FilestorePodstawowy, szyfrowanyWspólny system plików
Cloud StorageStandardowy, wersjonowanie włączonePrzechowywanie obiektów
FirestoreTryb natywny, szyfrowanie w spoczynkuMetadane i konfiguracja

2.2 Zależności usług GCP

UsługaCelKonfiguracja
Google GKEOrkiestracja KubernetesPrywatny klaster, rejestrowanie włączone
Compute EngineDynamiczne skalowanie węzłówAuto-skalowanie, instancje preemptive
Cloud Load BalancingDystrybucja ruchuTerminacja SSL, Cloud Armor
Cloud FunctionsFunkcje bezserweroweRuntime: Python 3.11, VPC connector
API GatewayZarządzanie APIOgraniczanie szybkości, uwierzytelnianie
Cloud MonitoringMonitorowanie i rejestrowanieMonitorowanie GKE, metryki niestandardowe
Secret ManagerZarządzanie sekretamiAutomatyczna rotacja, szyfrowanie
Cloud KMSZarządzanie kluczamiKlucze zarządzane przez klienta, auto-rotacja

3. Specyfikacje klastra GKE

3.1 Konfiguracja klastra

# Konfiguracja klastra 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 Konfiguracja puli węzłów

# Główna pula węzłów
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 Przydział zasobów dla wielodostępnych

Poziom najemcyLimit CPULimit pamięciPrzechowywanieRównoczesne przepływy pracy
Podstawowy1 vCPU2 GB10 GB1
Standardowy2 vCPU4 GB25 GB2
Premium4 vCPU8 GB50 GB4
Enterprise8 vCPU16 GB100 GB8

4. Architektura warstwy danych

4.1 Architektura przechowywania

4.1.1 Konfiguracja Cloud Storage


# Cloud Storage Bucket for Object 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 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 Konfiguracja Firestore

# Firestore Database for Metadata and Configuration
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 Security Rules
resource "google_firestore_database" "security_rules" {
  depends_on = [google_firestore_database.energent_metadata]

  # Security rules content would be defined here
  # Implementing tenant isolation and access controls
}

4.1.3 Filestore Shared Storage

# Filestore for Shared File System
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. Komponenty bezserwerowe

5.1 Funkcje w chmurze

5.1.1 Usługa uwierzytelniania

# Cloud Function for Authentication
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 Usługa rozliczeniowa

# Cloud Function for Billing
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 Konfiguracja API Gateway

# API Gateway for Serverless Functions
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. Bezpieczeństwo i zgodność

6.1 Bezpieczeństwo sieci

6.1.1 Konfiguracja VPC

# VPC Network and Firewall Rules
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 Zasady zapory

KierunekProtokółZakres portówŹródło/DestynacjaCel
PrzychodzącyHTTPS4430.0.0.0/0Dostęp do API
PrzychodzącyTCP1024-6553510.0.0.0/8Ruch wewnętrzny
WychodzącyHTTPS4430.0.0.0/0Zewnętrzne wywołania API
WychodzącyTCP530.0.0.0/0Rozwiązywanie DNS

6.2 Standardy szyfrowania

Stan danychMetoda szyfrowaniaZarządzanie kluczamiZgodność
W spoczynkuAES-256-GCMCloud KMS z automatyczną rotacjąSOC 2, FIPS 140-2 Poziom 3
W tranzycieTLS 1.3Certyfikaty zarządzane przez GoogleSOC 2, PCI DSS
W pamięciNa poziomie aplikacjiModuł bezpieczeństwa sprzętowegoSOC 2
Kopia zapasowaAES-256Cloud KMS między regionamiSOC 2, GDPR

6.3 IAM i konta usługowe

6.3.1 Konta usługowe GKE

# GKE Service Account
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}"
}

# Workload Identity binding
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. Architektura sieci

7.1 Projektowanie 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 Prywatne połączenia usługowe

UsługaTypCel
Cloud StoragePrywatny punktDostęp do przechowywania obiektów
FirestorePrywatny punktDostęp do metadanych
GKEPrywatny klasterDostęp do API klastra
Container RegistryPrywatny punktRejestr kontenerów
Cloud MonitoringPrywatny punktMonitorowanie i logowanie
Secret ManagerPrywatny punktDostęp do sekretów

8. Pipeline CI/CD

8.1 Infrastruktura jako kod (Terraform)

8.1.1 Struktura Terraform

terraform/
├── environments/
│   ├── dev/
│   ├── staging/
│   └── production/
├── modules/
│   ├── gke/
│   ├── networking/
│   ├── security/
│   └── storage/
├── shared/
│   └── backend.tf
└── global/
    └── iam.tf

8.1.2 Pipeline 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 Konfiguracja 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 Deployment bezserwerowy (Cloud Build)

8.3.1 Konfiguracja wdrożenia funkcji

# 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. Monitorowanie i obserwowalność

9.1 Konfiguracja Cloud Monitoring

9.1.1 Monitorowanie 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 Metryki aplikacji

Kategoria metrykMetrykiCelPróg alertu
DostępnośćCzas działania, Kontrole zdrowia99.9%< 99.5%
WydajnośćCzas odpowiedzi, Przepustowość< 2s, > 1000 RPS> 5s, < 500 RPS
Użycie zasobówCPU, Pamięć, Przechowywanie< 80%> 90%
Wskaźniki błędówBłędy 4xx, 5xx< 1%> 5%

9.3 Logowanie audytowe

# 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. Proces wdrożenia

10.1 Harmonogram wdrożenia

FazaCzas trwaniaAktywnościInteresariusze
Przed wdrożeniem2-3 dniPlanowanie infrastruktury, przegląd bezpieczeństwaIT klienta, Bezpieczeństwo, Energent Solutions
Infrastruktura1-2 dniWdrożenie Terraform, konfiguracja VPCDevOps klienta, Platforma Energent
Klaster GKE0.5 dniaProvisioning klastra, pule węzłówDevOps klienta, Platforma Energent
Aplikacja0.5 dniaWdrożenie Flux, rollout aplikacjiZespół platformy Energent
Integracja1-2 dniIAM, monitorowanie, testowanieIT klienta, Wsparcie Energent
Uruchomienie0.5 dniaPrzejście na produkcję, walidacjaWszyscy interesariusze

10.2 Polecenia wdrożeniowe

10.2.1 Wdrożenie infrastruktury

# 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 Wdrożenie aplikacji

# 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

# Zweryfikuj wdrożenie
kubectl get pods -n energent-ai
kubectl get ingress -n energent-ai

10.3 Walidacja Wdrożenia

# Punkty kontrolne zdrowia
curl -k https://api.energent.example.com/health
curl -k https://api.energent.example.com/metrics

# Walidacja Kubernetes
kubectl top nodes
kubectl get hpa -n energent-ai
kubectl logs -n energent-ai -l app=energent-platform

11. Operacje i Utrzymanie

11.1 Kopie Zapasowe i Odzyskiwanie Po Awarii

11.1.1 Strategia Kopii Zapasowych

KomponentCzęstotliwośćRetencjaRTORPO
Stan klastra GKECodziennie30 dni< 4 godziny< 24 godziny
Dane aplikacjiW czasie rzeczywistym90 dni< 1 godzina< 15 minut
KonfiguracjaPrzy zmianie1 rok< 30 minut0
Logi audytoweW czasie rzeczywistym7 lat< 24 godziny0

11.1.2 Procedury Odzyskiwania Po Awarii

# Kopia zapasowa klastra GKE za pomocą Velero
velero backup create energent-cluster-backup \
  --include-namespaces energent-ai \
  --storage-location gcp

# Odzyskiwanie punktowe Firestore
gcloud firestore databases restore \
  --source-database=energent-metadata-production \
  --destination-database=energent-metadata-restored \
  --backup-time=2025-05-28T10:00:00Z

11.2 Skalowanie i Wydajność

11.2.1 Konfiguracja Auto-Skalowania

# Horyzontalny Autoscaler Podów
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 Aktualizacje i Utrzymanie

11.3.1 Aktualizacje Rolling

# Aktualizacja klastra GKE
gcloud container clusters upgrade energent-production \
  --master \
  --cluster-version 1.30 \
  --region us-central1

# Aktualizacja aplikacji za pomocą Flux
git commit -am "Update energent-platform to v2.1.0"
git push origin main
# Flux automatycznie wykrywa i stosuje zmiany

12. Wsparcie i Eskalacja

12.1 Poziomy Wsparcia

PoziomCzas ReakcjiKanałyZakres
L1 - Podstawowy< 4 godzinyEmail, PortalOgólne pytania, dokumentacja
L2 - Standardowy< 2 godzinyTelefon, Email, MeetProblemy techniczne, wsparcie integracji
L3 - Premium< 1 godzinaTelefon, Meet, WideoZłożone problemy techniczne, architektura
L4 - Krytyczny< 30 minutTelefon, SMS, EskalacjaAwaria produkcji, incydenty bezpieczeństwa

12.2 Całodobowe Wsparcie

Wsparcie dla Przedsiębiorstw:

Eskalacja Awaryjna:

12.3 Umowy o Poziomie Usług (SLA)

UsługaSLAKara
Dostępność Platformy99.9% uptime10% miesięcznego kredytu za każde 0.1% braku
Czas Reakcji (P95)< 2 sekundy5% miesięcznego kredytu jeśli > 5 sekund
Reakcja WsparciaZgodnie z poziomem powyżejEskalacja do następnego poziomu
Odzyskiwanie DanychRTO < 4 godziny25% miesięcznego kredytu jeśli przekroczone

Dodatki

Dodatek A: Koszty Usług GCP

UsługaSzacowany Miesięczny KosztWspółczynnik Skalowania
Klaster GKE$75Stały na klaster
Compute Engine (3x n2-standard-4)$850Liniowy na węzeł
Dyski Persistent (300GB)$60Liniowy na GB
Cloud Storage (1TB)$20Liniowy na GB
Firestore$120Na podstawie użycia
Cloud Functions$35Na podstawie żądań
Całkowity Koszt Podstawowy~$1,160/miesiącDla 100 najemców

Dodatek B: Lista Kontrolna Zgodności Bezpieczeństwa

  • VPC z wdrożonymi prywatnymi podsieciami
  • Reguły zapory z dostępem o minimalnych uprawnieniach
  • Szyfrowanie Cloud KMS dla wszystkich danych w spoczynku
  • TLS 1.3 dla wszystkich danych w tranzycie
  • IAM z minimalnymi uprawnieniami
  • Włączone Cloud Audit Logs
  • Włączone Security Command Center
  • Włączone ograniczenia polityki organizacji
  • Secret Manager dla wszystkich poświadczeń
  • Regularne skanowanie i oceny bezpieczeństwa

Dodatek C: Przewodnik Rozwiązywania Problemów

Typowe Problemy:

  1. Węzły GKE Nie Dołączają do Klastra

    • Zweryfikuj uprawnienia konta serwisowego
    • Sprawdź trasowanie podsieci i Cloud NAT
  2. Pody Aplikacji CrashLooping

    • Sprawdź limity zasobów i żądania
    • Zweryfikuj roszczenia wolumenu trwałego
  3. Problemy z Łącznością Sieciową

    • Zweryfikuj konfigurację VPC connector
    • Sprawdź reguły zapory

  • Klasyfikacja Dokumentu: Publiczny
  • Wersja: 3.0
  • Ostatnia Aktualizacja: 2025-05-28
  • Następny Przegląd: 2025-08-28
  • Kontakt: support@energent.ai