Energent.ai poskytuje virtuální desktopové agenty poháněné AI, kteří automatizují složité pracovní postupy mezi více aplikacemi pro podnikové uživatele. Tento průvodce poskytuje komplexní specifikace nasazení na Google Cloud Platform pomocí moderní cloud-native architektury s GKE, designem pro více nájemců a bezpečnostními kontrolami na úrovni enterprise.
- Klasifikace dokumentu: Veřejné
- Verze: 3.0
- Poslední aktualizace: 2025-05-28
- Architektura: GCP GKE + Serverless Hybrid
- Soulad: SOC 2, osvědčené postupy zabezpečení Google Cloud
Obsah
- Přehled architektury
- Požadavky na infrastrukturu GCP
- Specifikace clusteru GKE
- Architektura datové vrstvy
- Serverless komponenty
- Zabezpečení & Soulad
- Síťová architektura
- CI/CD pipeline
- Monitoring & Observabilita
- Proces nasazení
- Provoz & Údržba
- Podpora & Eskalace
1. Přehled architektury
1.1 Cloud-native architektura pro více nájemců
Energent.ai je nasazen na Google Cloud Platform pomocí moderní, škálovatelné architektury, která kombinuje orchestraci Kubernetes se serverless komponenty pro optimální výkon a nákladovou efektivitu.
┌──────────────────────────────────────────────────────────────────┐
│ PROSTŘEDÍ GCP CLOUD │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ CLUSTER GKE │ │ SERVERLESS │ │ DATOVÁ VRSTVA │ │
│ │ │ │ │ │ │ │
│ │ • Více nájemců │ │ • Funkce Auth │ │ • Firestore │ │
│ │ • n2-standard-4 │ │ • Funkce Bill │ │ • Cloud Storage │ │
│ │ • Auto-scaling │ │ • API Gateway │ │ • Filestore │ │
│ │ • Flux GitOps │ │ • Pub/Sub │ │ • Secret Mgr │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
│ │ │ │ │
│ └─────────────────────┼────────────────────┘ │
│ │ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ HRANICE ZABEZPEČENÍ VPC │ │
│ │ • Privátní subnety • Cloud NAT • Pravidla firewallu │ │
│ │ • Tunely IAP • Koncové body VPC • Load Balancer │ │
│ └─────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
1.2 Modely nasazení
| Model | Popis | Použití | SLA |
|---|
| Multi-Tenant GKE | Sdílený cluster s izolací namespace | Standardní podnikové nasazení | 99.9% |
| Dedicated GKE | Cluster pro jednoho nájemce | Vysoká bezpečnost, regulační soulad | 99.95% |
| Hybrid Deployment | GKE + integrace zákaznického on-prem | Integrace legacy systémů | 99.9% |
2. Požadavky na infrastrukturu GCP
2.1 Minimální specifikace infrastruktury
| Komponenta | Specifikace | Účel |
|---|
| Verze clusteru GKE | 1.30+ | Orchestrace Kubernetes |
| Typ instance Node Pool | n2-standard-4 (4 vCPU, 16 GB RAM) | Pracovní zátěže optimalizované pro výpočet |
| Minimální konfigurace nodu | 1 vCPU, 2 GB RAM na nájemce | Přidělení zdrojů |
| Persistentní disky | 100 GB SSD, šifrované | Persistentní úložiště podů |
| Filestore | Základní, šifrované | Sdílený souborový systém |
| Cloud Storage | Standardní, povolené verzování | Objektové úložiště |
| Firestore | Nativní režim, šifrování v klidu | Metadata a konfigurace |
2.2 Závislosti na službách GCP
| Služba | Účel | Konfigurace |
|---|
| Google GKE | Orchestrace Kubernetes | Privátní cluster, povolené logování |
| Compute Engine | Dynamické škálování nodů | Auto-scaling, preemptible instance |
| Cloud Load Balancing | Distribuce provozu | SSL terminace, Cloud Armor |
| Cloud Functions | Serverless funkce | Runtime: Python 3.11, VPC konektor |
| API Gateway | Správa API | Omezení rychlosti, autentizace |
| Cloud Monitoring | Monitoring a logování | Monitoring GKE, vlastní metriky |
| Secret Manager | Správa tajemství | Automatická rotace, šifrování |
| Cloud KMS | Správa klíčů | Klíče spravované zákazníkem, automatická rotace |
3. Specifikace clusteru GKE
3.1 Konfigurace clusteru
# Konfigurace Terraform pro cluster GKE
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 Konfigurace Node Pool
# Primární 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 Přidělení zdrojů pro více nájemců
| Úroveň nájemce | Limit CPU | Limit paměti | Úložiště | Současné pracovní postupy |
|---|
| Basic | 1 vCPU | 2 GB | 10 GB | 1 |
| Standard | 2 vCPU | 4 GB | 25 GB | 2 |
| Premium | 4 vCPU | 8 GB | 50 GB | 4 |
| Enterprise | 8 vCPU | 16 GB | 100 GB | 8 |
4. Architektura datové vrstvy
4.1 Architektura úložiště
4.1.1 Konfigurace Cloud Storage
# Úložiště Cloud Storage pro objektové úložiště
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 dní
}
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 Konfigurace Firestore
# Databáze Firestore pro metadata a konfiguraci
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"
}
# Bezpečnostní pravidla Firestore
resource "google_firestore_database" "security_rules" {
depends_on = [google_firestore_database.energent_metadata]
# Obsah bezpečnostních pravidel by byl definován zde
# Implementace izolace nájemníků a kontrol přístupu
}
4.1.3 Sdílené úložiště Filestore
# Filestore pro sdílený souborový systém
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. Bezserverové komponenty
5.1 Funkce Cloud Functions
5.1.1 Služba autentizace
# Cloud Function pro autentizaci
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 Služba fakturace
# Cloud Function pro fakturaci
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 Konfigurace API Gateway
# API Gateway pro bezserverové funkce
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. Bezpečnost a shoda
6.1 Síťová bezpečnost
6.1.1 Konfigurace VPC
# Síť VPC a pravidla firewallu
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 Pravidla firewallu
| Směr | Protokol | Rozsah portů | Zdroj/Destinace | Účel |
|---|
| Příchozí | HTTPS | 443 | 0.0.0.0/0 | Přístup k API |
| Příchozí | TCP | 1024-65535 | 10.0.0.0/8 | Interní provoz |
| Odchozí | HTTPS | 443 | 0.0.0.0/0 | Externí API volání |
| Odchozí | TCP | 53 | 0.0.0.0/0 | DNS rozlišení |
6.2 Standardy šifrování
| Stav dat | Metoda šifrování | Správa klíčů | Shoda |
|---|
| V klidu | AES-256-GCM | Cloud KMS s automatickou rotací | SOC 2, FIPS 140-2 Level 3 |
| V přenosu | TLS 1.3 | Certifikáty spravované Google | SOC 2, PCI DSS |
| V paměti | Na úrovni aplikace | Modul hardwarové bezpečnosti | SOC 2 |
| Záloha | AES-256 | Cloud KMS mezi regiony | SOC 2, GDPR |
6.3 IAM a servisní účty
6.3.1 Servisní účty GKE
# Servisní účet GKE
resource "google_service_account" "gke_service_account" {
account_id = "energent-gke-${var.environment}"
display_name = "Energent GKE Service Account"
project = var.project_id
}
resource "google_project_iam_member" "gke_permissions" {
for_each = toset([
"roles/logging.logWriter",
"roles/monitoring.metricWriter",
"roles/monitoring.viewer",
"roles/storage.objectViewer"
])
project = var.project_id
role = each.value
member = "serviceAccount:${google_service_account.gke_service_account.email}"
}
# Vazba identity pracovního zatížení
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. Síťová architektura
7.1 Návrh VPC
┌─────────────────────────────────────────────────────────────────┐
│ VPC (10.0.0.0/16) │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │
│ │ Veřejná podsíť │ │ Veřejná podsíť │ │ Veřejná pod │ │
│ │ (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│ │
│ └─────────────────┘ └─────────────────┘ └─────────────┘ │
│ │ │ │ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │
│ │ Soukromá podsíť │ │ Soukromá podsíť │ │Soukromá pod │ │
│ │ (10.1.0.0/16) │ │ (10.1.0.0/16) │ │(10.1.0.0/16)│ │
│ │ │ │ │ │ │ │
│ │ GKE uzly │ │ GKE uzly │ │ GKE uzly │ │
│ │ Funkce VPC │ │ Funkce VPC │ │ Funkce │ │
│ └─────────────────┘ └─────────────────┘ └─────────────┘ │
│ │ │ │ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │
│ │ Podsíť služeb │ │ Podsíť služeb │ │Podsíť služ │ │
│ │ (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 Soukromá připojení služeb
| Služba | Typ | Účel |
|---|
| Cloud Storage | Soukromý endpoint | Přístup k objektovému úložišti |
| Firestore | Soukromý endpoint | Přístup k metadatům |
| GKE | Soukromý cluster | Přístup k API clusteru |
| Container Registry | Soukromý endpoint | Registr kontejnerů |
| Cloud Monitoring | Soukromý endpoint | Monitorování a logování |
| Secret Manager | Soukromý endpoint | Přístup k tajemstvím |
8. CI/CD Pipeline
8.1 Infrastruktura jako kód (Terraform)
8.1.1 Struktura Terraformu
terraform/
├── environments/
│ ├── dev/
│ ├── staging/
│ └── production/
├── modules/
│ ├── gke/
│ ├── networking/
│ ├── security/
│ └── storage/
├── shared/
│ └── backend.tf
└── global/
└── iam.tf
8.1.2 Pipeline Terraformu (Cloud Build)
# cloudbuild.yaml
steps:
# Inicializace Terraformu
- name: 'hashicorp/terraform:1.6.0'
entrypoint: 'sh'
args:
- '-c'
- |
cd terraform/environments/${_ENVIRONMENT}
terraform init -backend-config="bucket=${_TF_STATE_BUCKET}"
# Plán Terraformu
- name: 'hashicorp/terraform:1.6.0'
entrypoint: 'sh'
args:
- '-c'
- |
cd terraform/environments/${_ENVIRONMENT}
terraform plan -var-file="${_ENVIRONMENT}.tfvars" -out=tfplan
# Aplikace Terraformu (pouze na hlavní větvi)
- 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 "Přeskakuji aplikaci pro ne-hlavní větev"
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 Konfigurace Fluxu
# 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 Nasazení bez serveru (Cloud Build)
8.3.1 Konfigurace nasazení funkcí
# cloudbuild-functions.yaml
steps:
# Nasazení autentizační funkce
- 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}
# Nasazení fakturační funkce
- 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. Monitorování a pozorovatelnost
9.1 Konfigurace Cloud Monitoringu
9.1.1 Monitorování GKE
# Cloud Monitoring pro GKE
resource "google_monitoring_dashboard" "gke_dashboard" {
dashboard_json = jsonencode({
displayName = "Energent GKE Dashboard"
mosaicLayout = {
tiles = [
{
width = 6
height = 4
widget = {
title = "Využití CPU clusteru GKE"
xyChart = {
dataSets = [{
timeSeriesQuery = {
timeSeriesFilter = {
filter = "resource.type=\"k8s_cluster\" AND metric.type=\"kubernetes.io/container/cpu/core_usage_time\""
}
}
}]
}
}
}
]
}
})
}
# Metriky založené na logech
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 Metriky aplikací
| Kategorie metrik | Metriky | Cíl | Prahová hodnota pro alert |
|---|
| Dostupnost | Uptime, Kontroly zdraví | 99.9% | < 99.5% |
| Výkon | Čas odezvy, Prostupnost | < 2s, > 1000 RPS | > 5s, < 500 RPS |
| Využití zdrojů | CPU, Paměť, Úložiště | < 80% | > 90% |
| Chybovost | 4xx, 5xx chyby | < 1% | > 5% |
9.3 Auditní logování
# Konfigurace auditních logů Cloud
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 pro bezpečnostní události
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 nasazení
10.1 Časová osa nasazení
| Fáze | Trvání | Aktivity | Zainteresované strany |
|---|
| Před nasazením | 2-3 dny | Plánování infrastruktury, bezpečnostní revize | IT zákazníka, Bezpečnost, Energent Solutions |
| Infrastruktura | 1-2 dny | Nasazení Terraformu, nastavení VPC | DevOps zákazníka, Energent Platform |
| GKE Cluster | 0.5 dne | Zajištění clusteru, uzly | DevOps zákazníka, Energent Platform |
| Aplikace | 0.5 dne | Nasazení Fluxu, nasazení aplikace | Tým Energent Platform |
| Integrace | 1-2 dny | IAM, monitorování, testování | IT zákazníka, Podpora Energent |
| Go-Live | 0.5 dne | Přepnutí do produkce, validace | Všichni zainteresovaní |
10.2 Příkazy pro nasazení
10.2.1 Nasazení infrastruktury
# Nasazení infrastruktury pomocí Terraformu
cd terraform/environments/production
terraform init -backend-config="bucket=energent-terraform-state"
terraform plan -var-file="production.tfvars"
terraform apply -auto-approve
# Ověření GKE clusteru
gcloud container clusters get-credentials energent-production --region us-central1
kubectl get nodes
10.2.2 Nasazení aplikace
# Instalace Flux GitOps
flux bootstrap github \
--owner=energent-ai \
--repository=k8s-manifests \
--branch=main \
--path=./clusters/production
# Nasazení bezserverových komponent
gcloud builds submit --config cloudbuild-functions.yaml \
--substitutions _ENVIRONMENT=production,_REGION=us-central1
# Ověření nasazení
kubectl get pods -n energent-ai
kubectl get ingress -n energent-ai
10.3 Validace nasazení
# Kontrolní body zdraví
curl -k https://api.energent.example.com/health
curl -k https://api.energent.example.com/metrics
# Validace Kubernetes
kubectl top nodes
kubectl get hpa -n energent-ai
kubectl logs -n energent-ai -l app=energent-platform
11. Provoz a údržba
11.1 Zálohování a obnova po havárii
11.1.1 Strategie zálohování
| Komponenta | Frekvence | Retence | RTO | RPO |
|---|
| Stav clusteru GKE | Denně | 30 dní | < 4 hodiny | < 24 hodin |
| Data aplikace | V reálném čase | 90 dní | < 1 hodina | < 15 minut |
| Konfigurace | Při změně | 1 rok | < 30 minut | 0 |
| Auditní logy | V reálném čase | 7 let | < 24 hodin | 0 |
11.1.2 Postupy obnovy po havárii
# Zálohování clusteru GKE pomocí Velero
velero backup create energent-cluster-backup \
--include-namespaces energent-ai \
--storage-location gcp
# Obnova Firestore k určitému bodu v čase
gcloud firestore databases restore \
--source-database=energent-metadata-production \
--destination-database=energent-metadata-restored \
--backup-time=2025-05-28T10:00:00Z
11.2 Škálování a výkon
11.2.1 Konfigurace automatického škálování
# Horizontální automatický škálovač podů
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 Aktualizace a údržba
11.3.1 Postupné aktualizace
# Aktualizace clusteru GKE
gcloud container clusters upgrade energent-production \
--master \
--cluster-version 1.30 \
--region us-central1
# Postupná aktualizace aplikace pomocí Flux
git commit -am "Update energent-platform to v2.1.0"
git push origin main
# Flux automaticky detekuje a aplikuje změny
12. Podpora a eskalace
12.1 Úrovně podpory
| Úroveň | Doba odezvy | Kanály | Rozsah |
|---|
| L1 - Základní | < 4 hodiny | E-mail, Portál | Obecné dotazy, dokumentace |
| L2 - Standardní | < 2 hodiny | Telefon, E-mail, Meet | Technické problémy, podpora integrace |
| L3 - Prémiová | < 1 hodina | Telefon, Meet, Video | Složité technické problémy, architektura |
| L4 - Kritická | < 30 minut | Telefon, SMS, Eskalace | Výpadky produkce, bezpečnostní incidenty |
12.2 Nepřetržitá podpora 24/7
Podpora pro podniky:
Nouzová eskalace:
12.3 Smlouvy o úrovni služeb
| Služba | SLA | Sankce |
|---|
| Dostupnost platformy | 99.9% uptime | 10% měsíční kredit za každých 0.1% nedosažení |
| Doba odezvy (P95) | < 2 sekundy | 5% měsíční kredit, pokud > 5 sekund |
| Odezva podpory | Podle úrovně výše | Eskalace na další úroveň |
| Obnova dat | RTO < 4 hodiny | 25% měsíční kredit, pokud překročeno |
Přílohy
Příloha A: Náklady na služby GCP
| Služba | Odhadované měsíční náklady | Faktor škálování |
|---|
| Cluster GKE | $75 | Fixní na cluster |
| Compute Engine (3x n2-standard-4) | $850 | Lineární na uzel |
| Persistentní disky (300GB) | $60 | Lineární na GB |
| Cloud Storage (1TB) | $20 | Lineární na GB |
| Firestore | $120 | Závislé na využití |
| Cloud Functions | $35 | Závislé na požadavcích |
| Celkové základní náklady | ~$1,160/měsíc | Pro 100 nájemců |
Příloha B: Kontrolní seznam bezpečnostní shody
Příloha C: Průvodce řešením problémů
Běžné problémy:
-
Uzly GKE se nepřipojují ke clusteru
- Ověřte oprávnění účtu služby
- Zkontrolujte směrování podsítě a Cloud NAT
-
Aplikační pody se restartují
- Zkontrolujte limity a požadavky na zdroje
- Ověřte požadavky na trvalé objemy
-
Problémy s konektivitou sítě
- Ověřte konfiguraci VPC konektoru
- Zkontrolujte pravidla firewallu
- Klasifikace dokumentu: Veřejný
- Verze: 3.0
- Poslední aktualizace: 2025-05-28
- Další revize: 2025-08-28
- Kontakt: support@energent.ai