Enterprise GCP Implementeringsguide - Energent.ai

Energent.ai levererar AI-drivna virtuella skrivbordsagenter som automatiserar komplexa multi-applikationsarbetsflöden för företagsanvändare. Denna guide tillhandahåller omfattande implementeringsspecifikationer för Google Cloud Platform med hjälp av modern molnbaserad arkitektur med GKE, multi-tenant design och säkerhetskontroller på företagsnivå.

  • Dokumentklassificering: Offentlig
  • Version: 3.0
  • Senast uppdaterad: 2025-05-28
  • Arkitektur: GCP GKE + Serverlös Hybrid
  • Efterlevnad: SOC 2, Google Cloud Security Bästa Praxis

Innehållsförteckning

  1. Arkitekturöversikt
  2. GCP Infrastrukturkrav
  3. GKE Klusterspecifikationer
  4. Datalagerarkitektur
  5. Serverlösa Komponenter
  6. Säkerhet & Efterlevnad
  7. Nätverksarkitektur
  8. CI/CD Pipeline
  9. Övervakning & Observabilitet
  10. Implementeringsprocess
  11. Drift & Underhåll
  12. Support & Eskalering

1. Arkitekturöversikt

1.1 Molnbaserad Multi-Tenant Arkitektur

Energent.ai implementeras på Google Cloud Platform med en modern, skalbar arkitektur som kombinerar Kubernetes orkestrering med serverlösa komponenter för optimal prestanda och kostnadseffektivitet.

┌──────────────────────────────────────────────────────────────────┐
│                        GCP MOLNMILJÖ                             │
│  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐   │
│  │   GKE KLUSTER   │  │   SERVERLÖS     │  │   DATALAGER     │   │
│  │                 │  │                 │  │                 │   │
│  │ • Multi-tenant  │  │ • Functions Auth│  │ • Firestore     │   │
│  │ • n2-standard-4 │  │ • Functions Bill│  │ • Cloud Storage │   │
│  │ • Auto-skalning │  │ • API Gateway   │  │ • Filestore     │   │
│  │ • Flux GitOps   │  │ • Pub/Sub       │  │ • Secret Mgr    │   │
│  └─────────────────┘  └─────────────────┘  └─────────────────┘   │
│           │                     │                    │           │
│           └─────────────────────┼────────────────────┘           │
│                                 │                                │
│  ┌─────────────────────────────────────────────────────────────┐ │
│  │                    VPC SÄKERHETSGRÄNS                       │ │
│  │  • Privata Subnät • Cloud NAT    • Brandväggsregler         │ │
│  │  • IAP Tunnlar    • VPC Endpoints • Lastbalanserare         │ │
│  └─────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘

1.2 Implementeringsmodeller

ModellBeskrivningAnvändningsfallSLA
Multi-Tenant GKEDelat kluster med namespace-isoleringStandard företagsimplementering99.9%
Dedikerad GKEEnkeltenant klusterHög säkerhet, regulatorisk efterlevnad99.95%
Hybrid ImplementeringGKE + kundens lokala integrationIntegration av legacy-system99.9%

2. GCP Infrastrukturkrav

2.1 Minimikrav för Infrastruktur

KomponentSpecifikationSyfte
GKE Klusterversion1.30+Kubernetes orkestrering
Node Pool Instanstypn2-standard-4 (4 vCPU, 16 GB RAM)Compute-optimerade arbetsbelastningar
Minimikonfiguration för Node1 vCPU, 2 GB RAM per tenantResurstilldelning
Persistenta Disks100 GB SSD, krypteradPod persistent lagring
FilestoreGrundläggande, krypteradDelat filsystem
Cloud StorageStandard, versionering aktiveradObjektlagring
FirestoreNative mode, kryptering vid vilaMetadata och konfiguration

2.2 GCP Tjänstberoenden

TjänstSyfteKonfiguration
Google GKEKubernetes orkestreringPrivat kluster, loggning aktiverad
Compute EngineDynamisk nodskalningAuto-skalning, preemptible instanser
Cloud Load BalancingTrafikdistributionSSL-terminering, Cloud Armor
Cloud FunctionsServerlösa funktionerRuntime: Python 3.11, VPC-anslutning
API GatewayAPI-hanteringHastighetsbegränsning, autentisering
Cloud MonitoringÖvervakning och loggningGKE övervakning, anpassade metrik
Secret ManagerHemlighetshanteringAutomatisk rotation, kryptering
Cloud KMSNyckelhanteringKundhanterade nycklar, auto-rotation

3. GKE Klusterspecifikationer

3.1 Klusterkonfiguration

# GKE Kluster Terraform Konfiguration
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 Node Pool Konfiguration

# Primär Node Pool
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 Multi-Tenant Resurstilldelning

Tenant NivåCPU BegränsningMinnesbegränsningLagringSamtidiga Arbetsflöden
Grundläggande1 vCPU2 GB10 GB1
Standard2 vCPU4 GB25 GB2
Premium4 vCPU8 GB50 GB4
Företag8 vCPU16 GB100 GB8

4. Datalagerarkitektur

4.1 Lagringsarkitektur

4.1.1 Cloud Storage Konfiguration


# Molnlagringshink för objektlagring
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 dagar
  }

  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-konfiguration

# Firestore-databas för metadata och konfiguration
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-säkerhetsregler
resource "google_firestore_database" "security_rules" {
  depends_on = [google_firestore_database.energent_metadata]

  # Säkerhetsregler innehåll skulle definieras här
  # Implementering av hyresgästisolering och åtkomstkontroller
}

4.1.3 Filestore delad lagring

# Filestore för delat filsystem
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. Serverlösa komponenter

5.1 Cloud Functions

5.1.1 Autentiseringstjänst

# Cloud Function för autentisering
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 Faktureringstjänst

# Cloud Function för fakturering
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-konfiguration

# API Gateway för serverlösa funktioner
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. Säkerhet & efterlevnad

6.1 Nätverkssäkerhet

6.1.1 VPC-konfiguration

# VPC-nätverk och brandväggsregler
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 Brandväggsregler

RiktningProtokollPortintervallKälla/DestinationSyfte
InkommandeHTTPS4430.0.0.0/0API-åtkomst
InkommandeTCP1024-6553510.0.0.0/8Intern trafik
UtgåendeHTTPS4430.0.0.0/0Externa API-anrop
UtgåendeTCP530.0.0.0/0DNS-upplösning

6.2 Krypteringsstandarder

DatatillståndKrypteringsmetodNyckelhanteringEfterlevnad
I vilaAES-256-GCMCloud KMS med automatisk rotationSOC 2, FIPS 140-2 Nivå 3
Under transportTLS 1.3Google-hanterade certifikatSOC 2, PCI DSS
I minnetApplikationsnivåHårdvarusäkerhetsmodulSOC 2
BackupAES-256Cross-region Cloud KMSSOC 2, GDPR

6.3 IAM och tjänstekonton

6.3.1 GKE-tjänstekonton

# GKE-tjänstekonto
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}"
}

# Arbetsbelastningsidentitetsbindning
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. Nätverksarkitektur

7.1 VPC Design

┌─────────────────────────────────────────────────────────────────┐
│                         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-noder      │    │  GKE-noder      │    │ GKE-noder   │  │
│  │  Funktioner VPC │    │  Funktioner VPC │    │ Funktioner  │  │
│  └─────────────────┘    └─────────────────┘    └─────────────┘  │
│           │                       │                     │       │
│  ┌─────────────────┐    ┌─────────────────┐    ┌─────────────┐  │
│  │ Tjänster Subnet │    │ Tjänster Subnet │    │Tjänster 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 Private Service Connections

TjänstTypSyfte
Cloud StoragePrivat endpointObjektlagringstillgång
FirestorePrivat endpointMetadataåtkomst
GKEPrivat klusterKluster-API-åtkomst
Container RegistryPrivat endpointContainerregister
Cloud MonitoringPrivat endpointÖvervakning och loggning
Secret ManagerPrivat endpointÅtkomst till hemligheter

8. CI/CD Pipeline

8.1 Infrastruktur som kod (Terraform)

8.1.1 Terraform-struktur

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

8.1.2 Terraform-pipeline (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-konfiguration

# 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 Serverless-distribution (Cloud Build)

8.3.1 Funktionsdistributionskonfiguration

# 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. Övervakning och Observabilitet

9.1 Cloud Monitoring-konfiguration

9.1.1 GKE-övervakning

# 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 Applikationsmetrik

MetrikkategoriMetrikMålLarmtröskel
TillgänglighetUptime, Hälsokontroller99,9%< 99,5%
PrestandaSvarstid, Genomströmning< 2s, > 1000 RPS> 5s, < 500 RPS
ResursanvändningCPU, Minne, Lagring< 80%> 90%
Felfrekvenser4xx, 5xx fel< 1%> 5%

9.3 Revisionsloggning

# 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. Distributionsprocess

10.1 Distributionsschema

FasVaraktighetAktiviteterIntressenter
Fördistribution2-3 dagarInfrastrukturplanering, säkerhetsgranskningKundens IT, Säkerhet, Energent Solutions
Infrastruktur1-2 dagarTerraform-distribution, VPC-uppsättningKundens DevOps, Energent Platform
GKE-kluster0,5 dagKlusterförsörjning, nodpoolerKundens DevOps, Energent Platform
Applikation0,5 dagFlux-distribution, applikationsutrullningEnergent Platform Team
Integration1-2 dagarIAM, övervakning, testningKundens IT, Energent Support
Go-Live0,5 dagProduktionsövergång, valideringAlla intressenter

10.2 Distributionskommandon

10.2.1 Infrastrukturdistribution

# Infrastrukturdistribution med Terraform
cd terraform/environments/production
terraform init -backend-config="bucket=energent-terraform-state"
terraform plan -var-file="production.tfvars"
terraform apply -auto-approve

# Verifiera GKE-kluster
gcloud container clusters get-credentials energent-production --region us-central1
kubectl get nodes

10.2.2 Applikationsdistribution

# Installera Flux GitOps
flux bootstrap github \
  --owner=energent-ai \
  --repository=k8s-manifests \
  --branch=main \
  --path=./clusters/production

# Distribuera serverlösa komponenter
gcloud builds submit --config cloudbuild-functions.yaml \
  --substitutions _ENVIRONMENT=production,_REGION=us-central1

# Verifiera distribution
kubectl get pods -n energent-ai
kubectl get ingress -n energent-ai

10.3 Validering av distribution

# Kontrollpunkter för hälsa
curl -k https://api.energent.example.com/health
curl -k https://api.energent.example.com/metrics

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

11. Drift & Underhåll

11.1 Backup & Katastrofåterställning

11.1.1 Backupstrategi

KomponentFrekvensRetentionRTORPO
GKE Cluster StateDagligen30 dagar< 4 timmar< 24 timmar
ApplikationsdataRealtid90 dagar< 1 timme< 15 minuter
KonfigurationVid ändring1 år< 30 minuter0
RevisionsloggarRealtid7 år< 24 timmar0

11.1.2 Katastrofåterställningsprocedurer

# GKE-klusterbackup med Velero
velero backup create energent-cluster-backup \
  --include-namespaces energent-ai \
  --storage-location gcp

# Firestore återställning till en viss tidpunkt
gcloud firestore databases restore \
  --source-database=energent-metadata-production \
  --destination-database=energent-metadata-restored \
  --backup-time=2025-05-28T10:00:00Z

11.2 Skalning & Prestanda

11.2.1 Konfiguration för automatisk skalning

# 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 Uppdatering & Underhåll

11.3.1 Rullande uppdateringar

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

# Applikationsuppdatering via Flux
git commit -am "Update energent-platform to v2.1.0"
git push origin main
# Flux upptäcker och tillämpar automatiskt ändringar

12. Support & Eskalering

12.1 Supportnivåer

NivåResponstidKanalerOmfattning
L1 - Grundläggande< 4 timmarE-post, PortalAllmänna frågor, dokumentation
L2 - Standard< 2 timmarTelefon, E-post, MeetTekniska problem, integrationsstöd
L3 - Premium< 1 timmeTelefon, Meet, VideoKomplexa tekniska problem, arkitektur
L4 - Kritisk< 30 minuterTelefon, SMS, EskaleringProduktionsstörningar, säkerhetsincidenter

12.2 24/7 Supporttäckning

Företagsstöd:

Nödeskalering:

12.3 Servicenivåavtal

TjänstSLAStraff
Plattformstillgänglighet99.9% uptime10% månatlig kredit per 0.1% brist
Responstid (P95)< 2 sekunder5% månatlig kredit om > 5 sekunder
SupportresponsEnligt nivå ovanEskalering till nästa nivå
DataåterställningRTO < 4 timmar25% månatlig kredit om överskriden

Bilagor

Bilaga A: Kostnader för GCP-tjänster

TjänstBeräknad månadskostnadSkalningsfaktor
GKE-kluster$75Fast per kluster
Compute Engine (3x n2-standard-4)$850Linjär per nod
Persistent Disks (300GB)$60Linjär per GB
Cloud Storage (1TB)$20Linjär per GB
Firestore$120Användningsbaserad
Cloud Functions$35Begäranbaserad
Total Bas Kostnad~$1,160/månadFör 100 hyresgäster

Bilaga B: Säkerhetsöverensstämmelsechecklista

  • VPC med privata subnät distribuerade
  • Brandväggsregler med minimal åtkomst
  • Cloud KMS-kryptering för all data i vila
  • TLS 1.3 för all data i transit
  • IAM med minimala behörigheter
  • Cloud Audit Logs aktiverade
  • Security Command Center aktiverad
  • Organisationens policybegränsningar aktiverade
  • Secret Manager för alla autentiseringsuppgifter
  • Regelbundna säkerhetsskanningar och bedömningar

Bilaga C: Felsökningsguide

Vanliga problem:

  1. GKE-noder ansluter inte till klustret

    • Kontrollera behörigheter för tjänstekonto
    • Kontrollera subnet-routing och Cloud NAT
  2. Applikationspods CrashLooping

    • Kontrollera resursgränser och begäranden
    • Verifiera anspråk på beständiga volymer
  3. Nätverksanslutningsproblem

    • Verifiera VPC-konnektorkonfiguration
    • Kontrollera brandväggsregler

  • Dokumentklassificering: Offentlig
  • Version: 3.0
  • Senast uppdaterad: 2025-05-28
  • Nästa granskning: 2025-08-28
  • Kontakt: support@energent.ai