apiVersion: v1
kind: Secret
metadata:
  name: google-services-api-keys
  namespace: gemini-flow
  labels:
    app.kubernetes.io/name: gemini-flow
    app.kubernetes.io/component: security
  annotations:
    reloader.stakater.com/match: "true"
type: Opaque
stringData:
  # Vertex AI and Core Services
  vertex-ai-key: "${VERTEX_AI_KEY}"
  gemini-api-key: "${GEMINI_API_KEY}"
  
  # Video Generation (Veo3)
  veo3-api-key: "${VEO3_API_KEY}"
  veo3-project-id: "${GCP_PROJECT_ID}"
  veo3-region: "us-central1"
  
  # Image Generation (Imagen4)
  imagen4-api-key: "${IMAGEN4_API_KEY}"
  imagen4-project-id: "${GCP_PROJECT_ID}"
  imagen4-region: "us-central1"
  
  # Music Composition (Lyria)
  lyria-api-key: "${LYRIA_API_KEY}"
  lyria-project-id: "${GCP_PROJECT_ID}"
  lyria-region: "us-central1"
  
  # Audio Processing (Chirp)
  chirp-api-key: "${CHIRP_API_KEY}"
  chirp-project-id: "${GCP_PROJECT_ID}"
  chirp-region: "us-central1"
  
  # Research (Co-Scientist)
  co-scientist-api-key: "${CO_SCIENTIST_API_KEY}"
  co-scientist-project-id: "${GCP_PROJECT_ID}"

---
apiVersion: v1
kind: Secret
metadata:
  name: google-services-config
  namespace: gemini-flow
  labels:
    app.kubernetes.io/name: gemini-flow
    app.kubernetes.io/component: security
type: Opaque
stringData:
  google-services-config.json: |
    {
      "services": {
        "veo3": {
          "enabled": true,
          "endpoint": "https://veo3.googleapis.com/v1",
          "rateLimits": {
            "requestsPerMinute": 60,
            "requestsPerDay": 10000
          },
          "resourceLimits": {
            "maxVideoDurationSeconds": 300,
            "maxResolution": "4K",
            "concurrentJobs": 5
          }
        },
        "imagen4": {
          "enabled": true,
          "endpoint": "https://imagen4.googleapis.com/v1",
          "rateLimits": {
            "requestsPerMinute": 120,
            "requestsPerDay": 50000
          },
          "resourceLimits": {
            "maxImageSize": "8192x8192",
            "maxBatchSize": 10,
            "concurrentJobs": 10
          }
        },
        "lyria": {
          "enabled": true,
          "endpoint": "https://lyria.googleapis.com/v1",
          "rateLimits": {
            "requestsPerMinute": 30,
            "requestsPerDay": 5000
          },
          "resourceLimits": {
            "maxCompositionDurationMinutes": 10,
            "maxTracks": 16,
            "concurrentJobs": 3
          }
        },
        "chirp": {
          "enabled": true,
          "endpoint": "https://chirp.googleapis.com/v1",
          "rateLimits": {
            "requestsPerMinute": 100,
            "requestsPerDay": 25000
          },
          "resourceLimits": {
            "maxAudioDurationMinutes": 60,
            "maxFileSize": "100MB",
            "concurrentJobs": 8
          }
        },
        "coScientist": {
          "enabled": true,
          "endpoint": "https://co-scientist.googleapis.com/v1",
          "rateLimits": {
            "requestsPerMinute": 50,
            "requestsPerDay": 15000
          },
          "resourceLimits": {
            "maxResearchDepth": 10,
            "maxConcurrentQueries": 5
          }
        }
      },
      "monitoring": {
        "metricsEnabled": true,
        "tracingEnabled": true,
        "logLevel": "INFO",
        "healthCheckInterval": "30s"
      },
      "security": {
        "encryptionInTransit": true,
        "encryptionAtRest": true,
        "auditLogging": true,
        "accessLogging": true
      }
    }

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: google-services-rollout-config
  namespace: gemini-flow
  labels:
    app.kubernetes.io/name: gemini-flow
    app.kubernetes.io/component: deployment
data:
  rollout-strategy.yaml: |
    canaryDeployment:
      enabled: true
      steps:
        - name: "traffic-5-percent"
          trafficWeight: 5
          duration: "5m"
          healthChecks:
            - endpoint: "/health/google-services"
              expectedStatus: 200
              timeout: "30s"
        - name: "traffic-10-percent"
          trafficWeight: 10
          duration: "10m"
          validationChecks:
            - metric: "veo3_success_rate"
              threshold: 0.95
            - metric: "imagen4_success_rate"
              threshold: 0.95
        - name: "traffic-25-percent"
          trafficWeight: 25
          duration: "15m"
          performanceChecks:
            - metric: "p95_latency"
              threshold: "30s"
            - metric: "error_rate"
              threshold: 0.01
        - name: "traffic-50-percent"
          trafficWeight: 50
          duration: "20m"
          loadTesting:
            enabled: true
            duration: "10m"
            rps: 100
        - name: "traffic-100-percent"
          trafficWeight: 100
          duration: "5m"
          finalValidation: true
      
      rollbackTriggers:
        - condition: "error_rate > 0.05"
          action: "immediate_rollback"
        - condition: "p95_latency > 60s"
          action: "immediate_rollback"
        - condition: "gpu_utilization > 98%"
          action: "pause_rollout"
        - condition: "memory_usage > 95%"
          action: "immediate_rollback"

  emergency-procedures.yaml: |
    emergencyProcedures:
      disableAllGoogleServices:
        steps:
          - name: "disable-feature-flags"
            action: "kubectl patch configmap gemini-flow-config --patch '{\"data\":{\"app.json\":\"features disabled\"}}'"
          - name: "scale-down-workers"
            action: "kubectl scale deployment gemini-flow-worker --replicas=1"
          - name: "drain-queues"
            action: "kubectl exec -it deployment/gemini-flow -- npm run drain-queues"
      
      rollbackToLastKnownGood:
        steps:
          - name: "identify-last-good-version"
            action: "kubectl rollout history deployment/gemini-flow"
          - name: "rollback"
            action: "kubectl rollout undo deployment/gemini-flow"
          - name: "wait-for-rollback"
            action: "kubectl rollout status deployment/gemini-flow --timeout=300s"
      
      isolateFailingService:
        steps:
          - name: "identify-service"
            action: "check metrics and logs"
          - name: "disable-specific-service"
            action: "update feature flags via API"
          - name: "restart-affected-pods"
            action: "kubectl rollout restart deployment/gemini-flow"