apiVersion: apps/v1
kind: Deployment
metadata:
  name: load-tester
spec:
  replicas: 2
  template:
    spec:
      serviceAccountName: load-tester-sa
      nodeSelector:
        kubernetes.io/arch: amd64
        cloud.google.com/machine-family: c2  # Compute optimized instances
      tolerations:
      - key: "load-testing"
        operator: "Equal"
        value: "true"
        effect: "NoSchedule"
      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 100
            podAffinityTerm:
              labelSelector:
                matchExpressions:
                - key: app
                  operator: In
                  values:
                  - load-tester
              topologyKey: kubernetes.io/hostname
      containers:
      - name: load-tester
        resources:
          requests:
            memory: "4Gi"
            cpu: "2000m"
          limits:
            memory: "16Gi"
            cpu: "8000m"
        env:
        - name: NODE_ENV
          value: "production"
        - name: GOOGLE_CLOUD_PROJECT
          valueFrom:
            fieldRef:
              fieldPath: metadata.annotations['cloud.google.com/project-id']
        - name: GCP_REGION
          valueFrom:
            fieldRef:
              fieldPath: metadata.annotations['topology.kubernetes.io/region']
        - name: GCP_ZONE
          valueFrom:
            fieldRef:
              fieldPath: metadata.annotations['topology.kubernetes.io/zone']