Enterprise GCP Implementeringsveiledning - Energent.ai

Energent.ai leverer AI-drevne virtuelle skrivebordsagenter som automatiserer komplekse multi-applikasjons arbeidsflyter for bedriftsbrukere. Denne veiledningen gir omfattende spesifikasjoner for implementering på Google Cloud Platform ved bruk av moderne skybasert arkitektur med GKE, multi-leietaker design og sikkerhetskontroller på bedriftsnivå.

  • Dokumentklassifisering: Offentlig
  • Versjon: 3.0
  • Sist oppdatert: 2025-05-28
  • Arkitektur: GCP GKE + Serverløs Hybrid
  • Samsvar: SOC 2, Google Cloud Security Beste Praksis

Innholdsfortegnelse

  1. Arkitekturoversikt
  2. GCP Infrastrukturkrav
  3. GKE Klynge Spesifikasjoner
  4. Databaselag Arkitektur
  5. Serverløse Komponenter
  6. Sikkerhet & Samsvar
  7. Nettverksarkitektur
  8. CI/CD Pipeline
  9. Overvåking & Observabilitet
  10. Implementeringsprosess
  11. Drift & Vedlikehold
  12. Støtte & Eskalering

1. Arkitekturoversikt

1.1 Skybasert Multi-Leietaker Arkitektur

Energent.ai implementeres på Google Cloud Platform ved bruk av en moderne, skalerbar arkitektur som kombinerer Kubernetes orkestrering med serverløse komponenter for optimal ytelse og kostnadseffektivitet.

┌──────────────────────────────────────────────────────────────────┐
│                        GCP SKYMILJØ                              │
│  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐   │
│  │   GKE KLYNGE    │  │   SERVERLØS     │  │   DATA LAG      │   │
│  │                 │  │                 │  │                 │   │
│  │ • Multi-leietaker│  │ • Funksjoner Auth│  │ • Firestore     │   │
│  │ • n2-standard-4 │  │ • Funksjoner Bill│  │ • Cloud Storage │   │
│  │ • Auto-skalering│  │ • API Gateway   │  │ • Filestore     │   │
│  │ • Flux GitOps   │  │ • Pub/Sub       │  │ • Hemmelighetshåndtering │   │
│  └─────────────────┘  └─────────────────┘  └─────────────────┘   │
│           │                     │                    │           │
│           └─────────────────────┼────────────────────┘           │
│                                 │                                │
│  ┌─────────────────────────────────────────────────────────────┐ │
│  │                    VPC SIKKERHETSGRENSE                     │ │
│  │  • Private Subnets • Cloud NAT    • Brannmurregler          │ │
│  │  • IAP Tunneler    • VPC Endepunkter • Lastbalanserer       │ │
│  └─────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘

1.2 Implementeringsmodeller

ModellBeskrivelseBrukstilfelleSLA
Multi-Leietaker GKEDelt klynge med navneområdeisolasjonStandard bedriftsimplementering99.9%
Dedikert GKEEnkelt-leietaker klyngeHøysikkerhet, regulatorisk samsvar99.95%
Hybrid ImplementeringGKE + kunde lokal integrasjonLegacy systemintegrasjon99.9%

2. GCP Infrastrukturkrav

2.1 Minimum Infrastrukturspesifikasjoner

KomponentSpesifikasjonFormål
GKE Klynge Versjon1.30+Kubernetes orkestrering
Node Pool Instans Typen2-standard-4 (4 vCPU, 16 GB RAM)Compute-optimaliserte arbeidsbelastninger
Minimum Node Konfigurasjon1 vCPU, 2 GB RAM per leietakerRessurstildeling
Persistent Disks100 GB SSD, kryptertPod persistent lagring
FilestoreBasic, kryptertDelt filsystem
Cloud StorageStandard, versjonering aktivertObjektlagring
FirestoreNative mode, kryptering i roMetadata og konfigurasjon

2.2 GCP Tjenesteavhengigheter

TjenesteFormålKonfigurasjon
Google GKEKubernetes orkestreringPrivat klynge, logging aktivert
Compute EngineDynamisk node skaleringAuto-skalering, preemptible instanser
Cloud Load BalancingTrafikkdistribusjonSSL terminering, Cloud Armor
Cloud FunctionsServerløse funksjonerRuntime: Python 3.11, VPC connector
API GatewayAPI administrasjonRatebegrensning, autentisering
Cloud MonitoringOvervåking og loggingGKE overvåking, tilpassede metrikker
HemmelighetshåndteringHemmelighetshåndteringAutomatisk rotasjon, kryptering
Cloud KMSNøkkelhåndteringKundeadministrerte nøkler, auto-rotasjon

3. GKE Klynge Spesifikasjoner

3.1 Klyngekonfigurasjon

# GKE Klynge Terraform Konfigurasjon
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 Konfigurasjon

# 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-Leietaker Ressurstildeling

Leietaker NivåCPU GrenseMinne GrenseLagringSamtidige Arbeidsflyter
Basic1 vCPU2 GB10 GB1
Standard2 vCPU4 GB25 GB2
Premium4 vCPU8 GB50 GB4
Enterprise8 vCPU16 GB100 GB8

4. Databaselag Arkitektur

4.1 Lagringsarkitektur

4.1.1 Cloud Storage Konfigurasjon


# Skylagringsbøtte for 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 dager
  }

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

# Firestore-database for metadata og konfigurasjon
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-sikkerhetsregler
resource "google_firestore_database" "security_rules" {
  depends_on = [google_firestore_database.energent_metadata]

  # Sikkerhetsreglerinnhold ville bli definert her
  # Implementering av leietakerisolasjon og tilgangskontroller
}

4.1.3 Filestore delt lagring

# Filestore for delt 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øse komponenter

5.1 Cloud Functions

5.1.1 Autentiseringstjeneste

# Cloud Function for 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 Faktureringstjeneste

# Cloud Function for 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-konfigurasjon

# API Gateway for serverløse funksjoner
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. Sikkerhet og samsvar

6.1 Nettverkssikkerhet

6.1.1 VPC-konfigurasjon

# VPC-nettverk og brannmurregler
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 Brannmurregler

RetningProtokollPortområdeKilde/DestinasjonFormål
InngåendeHTTPS4430.0.0.0/0API-tilgang
InngåendeTCP1024-6553510.0.0.0/8Intern trafikk
UtgåendeHTTPS4430.0.0.0/0Eksterne API-kall
UtgåendeTCP530.0.0.0/0DNS-oppløsning

6.2 Krypteringsstandarder

DatatilstandKrypteringsmetodeNøkkelhåndteringSamsvar
I roAES-256-GCMCloud KMS med auto-rotasjonSOC 2, FIPS 140-2 nivå 3
UnderveisTLS 1.3Google-administrerte sertifikaterSOC 2, PCI DSS
I minneApplikasjonsnivåMaskinvare sikkerhetsmodulSOC 2
BackupAES-256Kryss-region Cloud KMSSOC 2, GDPR

6.3 IAM og tjenestekontoer

6.3.1 GKE-tjenestekontoer

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

# Arbeidsbelastningsidentitetsbinding
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. Nettverksarkitektur

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   │  │
│  │   Lastbalanserer│    │   Lastbalanserer│    │Lastbalanserer│  │
│  └─────────────────┘    └─────────────────┘    └─────────────┘  │
│           │                       │                     │       │
│  ┌─────────────────┐    ┌─────────────────┐    ┌─────────────┐  │
│  │ Privat subnet   │    │ Privat subnet   │    │Privat sub   │  │
│  │  (10.1.0.0/16)  │    │  (10.1.0.0/16)  │    │(10.1.0.0/16)│  │
│  │                 │    │                 │    │             │  │
│  │  GKE-noder      │    │  GKE-noder      │    │ GKE-noder   │  │
│  │  Funksjoner VPC │    │  Funksjoner VPC │    │ Funksjoner  │  │
│  └─────────────────┘    └─────────────────┘    └─────────────┘  │
│           │                       │                     │       │
│  ┌─────────────────┐    ┌─────────────────┐    ┌─────────────┐  │
│  │ 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 tjenestetilkoblinger

TjenesteTypeFormål
Cloud StoragePrivat endepunktObjektlagringstilgang
FirestorePrivat endepunktMetadata-tilgang
GKEPrivat klyngeKlynge-API-tilgang
Container RegistryPrivat endepunktContainerregister
Cloud MonitoringPrivat endepunktOvervåking og logging
Secret ManagerPrivat endepunktHemmelighetstilgang

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å hovedgren)
  - 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-konfigurasjon

# 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 Serverløs distribusjon (Cloud Build)

8.3.1 Funksjonsdistribusjonskonfigurasjon

# cloudbuild-functions.yaml
steps:
  # Distribuer Auth-funksjon
  - 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}

  # Distribuer Billing-funksjon
  - 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åking og observasjon

9.1 Cloud Monitoring-konfigurasjon

9.1.1 GKE-overvåking

# 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\""
                  }
                }
              }]
            }
          }
        }
      ]
    }
  })
}

# Loggbaserte metrikker
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 Applikasjonsmetrikker

MetrikkategoriMetrikkerMålVarselterskel
TilgjengelighetOppetid, helsesjekker99.9%< 99.5%
YtelseResponstid, gjennomstrømning< 2s, > 1000 RPS> 5s, < 500 RPS
RessursbrukCPU, minne, lagring< 80%> 90%
Feilrater4xx, 5xx feil< 1%> 5%

9.3 Revideringslogging

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

10.1 Distribusjonstidslinje

FaseVarighetAktiviteterInteressenter
Før distribusjon2-3 dagerInfrastrukturplanlegging, sikkerhetsgjennomgangKunde IT, Sikkerhet, Energent Solutions
Infrastruktur1-2 dagerTerraform-distribusjon, VPC-oppsettKunde DevOps, Energent Platform
GKE-klynge0.5 dagKlyngeklargjøring, nodepuljerKunde DevOps, Energent Platform
Applikasjon0.5 dagFlux-distribusjon, applikasjonsutrullingEnergent Platform Team
Integrasjon1-2 dagerIAM, overvåking, testingKunde IT, Energent Support
Go-Live0.5 dagProduksjonskutting, valideringAlle interessenter

10.2 Distribusjonskommandoer

10.2.1 Infrastrukturdistribusjon

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

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

10.2.2 Applikasjonsdistribusjon

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

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

# Verifiser distribusjon
kubectl get pods -n energent-ai
kubectl get ingress -n energent-ai

10.3 Validering av distribusjon

# Endepunkter for helsesjekk
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 og vedlikehold

11.1 Sikkerhetskopiering og katastrofegjenoppretting

11.1.1 Sikkerhetskopieringsstrategi

KomponentFrekvensBevaringRTORPO
GKE Cluster StateDaglig30 dager< 4 timer< 24 timer
ApplikasjonsdataSanntid90 dager< 1 time< 15 minutter
KonfigurasjonVed endring1 år< 30 minutter0
RevisjonsloggerSanntid7 år< 24 timer0

11.1.2 Katastrofegjenopprettingsprosedyrer

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

# Firestore gjenoppretting til et bestemt tidspunkt
gcloud firestore databases restore \
  --source-database=energent-metadata-production \
  --destination-database=energent-metadata-restored \
  --backup-time=2025-05-28T10:00:00Z

11.2 Skalering og ytelse

11.2.1 Konfigurasjon for autoskalering

# 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 Oppdatering og vedlikehold

11.3.1 Rullerende oppdateringer

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

# Applikasjonsoppdatering via Flux
git commit -am "Update energent-platform to v2.1.0"
git push origin main
# Flux oppdager og anvender endringer automatisk

12. Støtte og eskalering

12.1 Støttenivåer

NivåResponstidKanalerOmfang
L1 - Grunnleggende< 4 timerE-post, PortalGenerelle spørsmål, dokumentasjon
L2 - Standard< 2 timerTelefon, E-post, MeetTekniske problemer, integrasjonsstøtte
L3 - Premium< 1 timeTelefon, Meet, VideoKomplekse tekniske problemer, arkitektur
L4 - Kritisk< 30 minutterTelefon, SMS, EskaleringProduksjonsfeil, sikkerhetshendelser

12.2 24/7 Støttedekning

Enterprise-støtte:

Nød-eskalering:

12.3 Service Level Agreements

TjenesteSLAStraff
Plattformtilgjengelighet99,9% oppetid10% månedlig kreditt per 0,1% avvik
Responstid (P95)< 2 sekunder5% månedlig kreditt hvis > 5 sekunder
StøtteresponsPer nivå ovenforEskalering til neste nivå
DatagjenopprettingRTO < 4 timer25% månedlig kreditt hvis overskredet

Vedlegg

Vedlegg A: GCP-tjenestekostnader

TjenesteAnslått månedlig kostnadSkaleringsfaktor
GKE Cluster$75Fast per cluster
Compute Engine (3x n2-standard-4)$850Lineær per node
Persistent Disks (300GB)$60Lineær per GB
Cloud Storage (1TB)$20Lineær per GB
Firestore$120Bruksbasert
Cloud Functions$35Forespørselsbasert
Totale grunnkostnader~$1,160/månedFor 100 leietakere

Vedlegg B: Sikkerhetskompatibilitetsjekkliste

  • VPC med private subnett distribuert
  • Brannmurregler med minst privilegert tilgang
  • Cloud KMS-kryptering for alle data i ro
  • TLS 1.3 for alle data i transitt
  • IAM med minimale tillatelser
  • Cloud Audit Logs aktivert
  • Security Command Center aktivert
  • Organisasjonspolicy-begrensninger aktivert
  • Secret Manager for alle legitimasjoner
  • Regelmessige sikkerhetsskanninger og vurderinger

Vedlegg C: Feilsøkingsveiledning

Vanlige problemer:

  1. GKE-noder blir ikke med i clusteret

    • Verifiser tjenestekontotillatelser
    • Sjekk subnettruting og Cloud NAT
  2. Applikasjonspods krasjer i loop

    • Sjekk ressursgrenser og forespørsler
    • Verifiser vedvarende volumkrav
  3. Nettverksforbindelsesproblemer

    • Verifiser VPC-koblerkonfigurasjon
    • Sjekk brannmurregler

  • Dokumentklassifisering: Offentlig
  • Versjon: 3.0
  • Sist oppdatert: 2025-05-28
  • Neste gjennomgang: 2025-08-28
  • Kontakt: support@energent.ai