Enterprise GCP Implementeringsvejledning - Energent.ai

Energent.ai leverer AI-drevne virtuelle desktop-agenter, der automatiserer komplekse multi-applikations workflows for virksomhedens brugere. Denne vejledning giver omfattende Google Cloud Platform implementeringsspecifikationer ved hjælp af moderne cloud-native arkitektur med GKE, multi-lejer design og virksomhedsklasse sikkerhedskontroller.

  • Dokumentklassifikation: Offentlig
  • Version: 3.0
  • Sidst opdateret: 2025-05-28
  • Arkitektur: GCP GKE + Serverløse Hybrid
  • Overholdelse: SOC 2, Google Cloud Security bedste praksis

Indholdsfortegnelse

  1. Arkitekturoversigt
  2. GCP Infrastrukturkrav
  3. GKE Klynge Specifikationer
  4. Data Lag Arkitektur
  5. Serverløse Komponenter
  6. Sikkerhed & Overholdelse
  7. Netværksarkitektur
  8. CI/CD Pipeline
  9. Overvågning & Observabilitet
  10. Implementeringsproces
  11. Drift & Vedligeholdelse
  12. Support & Eskalering

1. Arkitekturoversigt

1.1 Cloud-Native Multi-Lejer Arkitektur

Energent.ai implementeres på Google Cloud Platform ved hjælp af en moderne, skalerbar arkitektur, der kombinerer Kubernetes orkestrering med serverløse komponenter for optimal ydeevne og omkostningseffektivitet.

┌──────────────────────────────────────────────────────────────────┐
│                        GCP CLOUD MILJØ                          │
│  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐   │
│  │   GKE KLYNGE    │  │   SERVERLØSE    │  │   DATA LAG      │   │
│  │                 │  │                 │  │                 │   │
│  │ • Multi-lejer   │  │ • Funktioner Auth│  │ • Firestore     │   │
│  │ • n2-standard-4 │  │ • Funktioner Fakt│  │ • Cloud Storage │   │
│  │ • Auto-skalering│  │ • API Gateway   │  │ • Filestore     │   │
│  │ • Flux GitOps   │  │ • Pub/Sub       │  │ • Secret Mgr    │   │
│  └─────────────────┘  └─────────────────┘  └─────────────────┘   │
│           │                     │                    │           │
│           └─────────────────────┼────────────────────┘           │
│                                 │                                │
│  ┌─────────────────────────────────────────────────────────────┐ │
│  │                    VPC SIKKERHEDS GRÆNSE                    │ │
│  │  • Private Subnets • Cloud NAT    • Firewall Regler          │ │
│  │  • IAP Tunneler    • VPC Endpoints • Load Balancer           │ │
│  └─────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘

1.2 Implementeringsmodeller

ModelBeskrivelseBrugsscenarieSLA
Multi-Lejer GKEDelt klynge med namespace isolationStandard virksomhedsimplementering99.9%
Dedikeret GKEEnkelt-lejer klyngeHøj sikkerhed, regulatorisk krav99.95%
Hybrid ImplementeringGKE + kundens on-premises integrationLegacy system integration99.9%

2. GCP Infrastrukturkrav

2.1 Minimum Infrastruktur Specifikationer

KomponentSpecifikationFormål
GKE Klynge Version1.30+Kubernetes orkestrering
Node Pool Instance Typen2-standard-4 (4 vCPU, 16 GB RAM)Compute-optimerede workloads
Minimum Node Konfiguration1 vCPU, 2 GB RAM per lejerRessourceallokering
Persistent Disks100 GB SSD, krypteretPod persistent lager
FilestoreBasis, krypteretDelt filsystem
Cloud StorageStandard, versionering aktiveretObjektlager
FirestoreNative mode, kryptering i hvileMetadata og konfiguration

2.2 GCP Serviceafhængigheder

ServiceFormålKonfiguration
Google GKEKubernetes orkestreringPrivat klynge, logning aktiveret
Compute EngineDynamisk node skaleringAuto-skalering, preemptible instances
Cloud Load BalancingTrafikdistributionSSL termination, Cloud Armor
Cloud FunctionsServerløse funktionerRuntime: Python 3.11, VPC connector
API GatewayAPI managementRate limiting, autentifikation
Cloud MonitoringOvervågning og logningGKE overvågning, brugerdefinerede metrics
Secret ManagerHåndtering af hemmelighederAutomatisk rotation, kryptering
Cloud KMSNøglehåndteringKundeadministrerede nøgler, auto-rotation

3. GKE Klynge Specifikationer

3.1 Klynge Konfiguration

# GKE Klynge 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-Lejer Ressourceallokering

Lejer NiveauCPU GrænseHukommelsesgrænseLagerSamtidige Workflows
Basis1 vCPU2 GB10 GB1
Standard2 vCPU4 GB25 GB2
Premium4 vCPU8 GB50 GB4
Enterprise8 vCPU16 GB100 GB8

4. Data Lag Arkitektur

4.1 Lager Arkitektur

4.1.1 Cloud Storage Konfiguration


# 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 dage
  }

  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 Configuration

# 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. Serverless Components

5.1 Cloud Functions

5.1.1 Authentication Service

# 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 Billing Service

# 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 API Gateway Configuration

# 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. Security & Compliance

6.1 Network Security

6.1.1 VPC Configuration

# 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 Firewall Rules

DirectionProtocolPort RangeSource/DestinationPurpose
InboundHTTPS4430.0.0.0/0API adgang
InboundTCP1024-6553510.0.0.0/8Intern trafik
OutboundHTTPS4430.0.0.0/0Eksterne API-kald
OutboundTCP530.0.0.0/0DNS-opløsning

6.2 Encryption Standards

Data StateEncryption MethodKey ManagementCompliance
At RestAES-256-GCMCloud KMS med auto-rotationSOC 2, FIPS 140-2 Niveau 3
In TransitTLS 1.3Google-administrerede certifikaterSOC 2, PCI DSS
In MemoryApplikationsniveauHardware Security ModuleSOC 2
BackupAES-256Cross-region Cloud KMSSOC 2, GDPR

6.3 IAM and Service Accounts

6.3.1 GKE Service Accounts

# 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. Netværksarkitektur

7.1 VPC Design

┌─────────────────────────────────────────────────────────────────┐
│                         VPC (10.0.0.0/16)                       │
│                                                                 │
│  ┌─────────────────┐    ┌─────────────────┐    ┌─────────────┐  │
│  │  Offentlig Subnet │    │  Offentlig Subnet │    │ Offentlig 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│  │
│  └─────────────────┘    └─────────────────┘    └─────────────┘  │
│           │                       │                     │       │
│  ┌─────────────────┐    ┌─────────────────┐    ┌─────────────┐  │
│  │ Privat Subnet   │    │ Privat Subnet   │    │Privat 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   │  │
│  └─────────────────┘    └─────────────────┘    └─────────────┘  │
│           │                       │                     │       │
│  ┌─────────────────┐    ┌─────────────────┐    ┌─────────────┐  │
│  │ Tjenester Subnet │    │ Tjenester Subnet │    │Tjenester 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

TjenesteTypeFormål
Cloud StoragePrivat endpointAdgang til objektlager
FirestorePrivat endpointMetadata adgang
GKEPrivat klyngeKlynge API adgang
Container RegistryPrivat endpointContainer registry
Cloud MonitoringPrivat endpointOvervågning og logning
Secret ManagerPrivat endpointAdgang til hemmeligheder

8. CI/CD Pipeline

8.1 Infrastruktur som kode (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 (kun på 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 Deployment (Cloud Build)

8.3.1 Funktion Deploy Konfiguration

# 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. Overvågning og Observabilitet

9.1 Cloud Overvågningskonfiguration

9.1.1 GKE Overvågning

# 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-baserede 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 Applikations Metrics

Metric KategoriMetricsMålAlarm Grænse
TilgængelighedOppetid, Sundhedstjek99.9%< 99.5%
YdeevneResponstid, Gennemstrømning< 2s, > 1000 RPS> 5s, < 500 RPS
RessourcebrugCPU, Hukommelse, Lager< 80%> 90%
Fejlrate4xx, 5xx fejl< 1%> 5%

9.3 Audit Logging

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

10.1 Udrulningstidslinje

FaseVarighedAktiviteterInteressenter
Pre-Udrulning2-3 dageInfrastrukturplanlægning, sikkerhedsreviewKunde IT, Sikkerhed, Energent Solutions
Infrastruktur1-2 dageTerraform udrulning, VPC opsætningKunde DevOps, Energent Platform
GKE Klynge0.5 dagKlynge provisionering, node poolsKunde DevOps, Energent Platform
Applikation0.5 dagFlux udrulning, applikationsudrulningEnergent Platform Team
Integration1-2 dageIAM, overvågning, testKunde IT, Energent Support
Go-Live0.5 dagProduktionsskift, valideringAlle interessenter

10.2 Udrulningskommandoer

10.2.1 Infrastruktur Udrulning

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

# Verificer GKE klynge
gcloud container clusters get-credentials energent-production --region us-central1
kubectl get nodes

10.2.2 Applikationsudrulning

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

# Udrul serverløse komponenter
gcloud builds submit --config cloudbuild-functions.yaml \
  --substitutions _ENVIRONMENT=production,_REGION=us-central1

# Verificer implementering
kubectl get pods -n energent-ai
kubectl get ingress -n energent-ai

10.3 Implementeringsvalidering

# Sundhedstjek-endepunkter
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 & Vedligeholdelse

11.1 Backup & Katastrofeberedskab

11.1.1 Backup-strategi

KomponentFrekvensBeholdningRTORPO
GKE Cluster StateDagligt30 dage< 4 timer< 24 timer
ApplikationsdataRealtime90 dage< 1 time< 15 minutter
KonfigurationVed ændring1 år< 30 minutter0
RevisionslogsRealtime7 år< 24 timer0

11.1.2 Katastrofeberedskabsprocedurer

# GKE cluster-backup ved brug af Velero
velero backup create energent-cluster-backup \
  --include-namespaces energent-ai \
  --storage-location gcp

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

11.2 Skalering & Ydeevne

11.2.1 Auto-skalering konfiguration

# 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 Opdatering & Vedligeholdelse

11.3.1 Rullende opdateringer

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

# Applikationsrullende opdatering via Flux
git commit -am "Update energent-platform to v2.1.0"
git push origin main
# Flux opdager og anvender ændringer automatisk

12. Support & Eskalering

12.1 Supportniveauer

NiveauResponstidKanalerOmfang
L1 - Basis< 4 timerEmail, PortalGenerelle spørgsmål, dokumentation
L2 - Standard< 2 timerTelefon, Email, MeetTekniske problemer, integrationssupport
L3 - Premium< 1 timeTelefon, Meet, VideoKomplekse tekniske problemer, arkitektur
L4 - Kritisk< 30 minutterTelefon, SMS, EskaleringProduktionsnedbrud, sikkerhedshændelser

12.2 24/7 Supportdækning

Enterprise Support:

Nød-eskalering:

12.3 Service Level Agreements

ServiceSLAStraf
Platformtilgængelighed99.9% oppetid10% månedlig kredit pr. 0.1% mangel
Responstid (P95)< 2 sekunder5% månedlig kredit, hvis > 5 sekunder
SupportresponsPer niveau ovenforEskalering til næste niveau
DatagendannelseRTO < 4 timer25% månedlig kredit, hvis overskredet

Appendikser

Appendiks A: GCP Serviceomkostninger

ServiceEstimeret månedlig omkostningSkaleringsfaktor
GKE Cluster$75Fast pr. cluster
Compute Engine (3x n2-standard-4)$850Lineær pr. node
Persistent Disks (300GB)$60Lineær pr. GB
Cloud Storage (1TB)$20Lineær pr. GB
Firestore$120Brugsbaseret
Cloud Functions$35Anmodningsbaseret
Samlet basisomkostning~$1,160/månedFor 100 lejere

Appendiks B: Sikkerhedsoverholdelsestjekliste

  • VPC med private subnets implementeret
  • Firewall-regler med mindst mulig adgang
  • Cloud KMS-kryptering for alle data i hvile
  • TLS 1.3 for alle data i transit
  • IAM med minimale tilladelser
  • Cloud Audit Logs aktiveret
  • Security Command Center aktiveret
  • Organisationspolitikbegrænsninger aktiveret
  • Secret Manager til alle legitimationsoplysninger
  • Regelmæssige sikkerhedsscanninger og vurderinger

Appendiks C: Fejlfinding Guide

Almindelige problemer:

  1. GKE-noder tilslutter sig ikke cluster

    • Verificer servicekonto-tilladelser
    • Tjek subnet-routing og Cloud NAT
  2. Applikationspods CrashLooping

    • Tjek ressourcegrænser og -anmodninger
    • Verificer vedvarende volumenkrav
  3. Netværksforbindelsesproblemer

    • Verificer VPC-connector-konfiguration
    • Tjek firewall-regler

  • Dokumentklassifikation: Offentlig
  • Version: 3.0
  • Sidst opdateret: 2025-05-28
  • Næste gennemgang: 2025-08-28
  • Kontakt: support@energent.ai