diff --git a/manifests/acb-bots/bot-assassin-deployment.yml b/manifests/acb-bots/bot-assassin-deployment.yml new file mode 100644 index 0000000..d1a6e00 --- /dev/null +++ b/manifests/acb-bots/bot-assassin-deployment.yml @@ -0,0 +1,72 @@ +# bot-assassin: AssassinBot — Rust strategy bot +# High-priority target elimination, aggressive engagement. Higher CPU/memory due to Rust compilation. +# HTTP server on port 8080, POST /turn, GET /health. +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: bot-assassin + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-assassin + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot + annotations: + argocd-image-updater.argoproj.io/image-list: app=ronaldraygun/acb-bot-assassin + argocd-image-updater.argoproj.io/app.update-strategy: name + argocd-image-updater.argoproj.io/app.allow-tags: 'regexp:^sha-[0-9a-f]+$' + argocd-image-updater.argoproj.io/write-back-method: argocd + reloader.stakater.com/auto: "true" +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: bot-assassin + template: + metadata: + labels: + app.kubernetes.io/name: bot-assassin + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot + spec: + restartPolicy: Always + imagePullSecrets: + - name: docker-hub-registry + containers: + - name: bot + image: ronaldraygun/acb-bot-assassin:sha-placeholder + imagePullPolicy: Always + env: + - name: BOT_PORT + value: "8080" + - name: BOT_SECRET + valueFrom: + secretKeyRef: + name: acb-bot-assassin-secret + key: shared-secret + ports: + - name: http + containerPort: 8080 + protocol: TCP + livenessProbe: + httpGet: + path: /health + port: http + initialDelaySeconds: 10 + periodSeconds: 30 + failureThreshold: 3 + readinessProbe: + httpGet: + path: /health + port: http + initialDelaySeconds: 5 + periodSeconds: 10 + failureThreshold: 3 + resources: + requests: + cpu: 100m + memory: 128Mi + limits: + memory: 256Mi diff --git a/manifests/acb-bots/bot-assassin-externalsecret.yml b/manifests/acb-bots/bot-assassin-externalsecret.yml new file mode 100644 index 0000000..ad593a1 --- /dev/null +++ b/manifests/acb-bots/bot-assassin-externalsecret.yml @@ -0,0 +1,27 @@ +# bot-assassin: ExternalSecret for AssassinBot shared secret +# Pulls shared_secret from OpenBao at rs-manager/ai-code-battle/bots/assassin +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: acb-bot-assassin-secret + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-assassin + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot +spec: + refreshInterval: 1h + secretStoreRef: + name: openbao + kind: ClusterSecretStore + target: + name: acb-bot-assassin-secret + creationPolicy: Owner + data: + - secretKey: shared-secret + remoteRef: + key: rs-manager/ai-code-battle/bots/assassin + property: shared_secret diff --git a/manifests/acb-bots/bot-assassin-service.yml b/manifests/acb-bots/bot-assassin-service.yml new file mode 100644 index 0000000..99fe776 --- /dev/null +++ b/manifests/acb-bots/bot-assassin-service.yml @@ -0,0 +1,22 @@ +# bot-assassin: Service for AssassinBot +# DNS: http://bot-assassin.acb-bots.svc.cluster.local +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: v1 +kind: Service +metadata: + name: bot-assassin + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-assassin + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot +spec: + selector: + app.kubernetes.io/name: bot-assassin + ports: + - name: http + port: 80 + targetPort: http + protocol: TCP diff --git a/manifests/acb-bots/bot-defender-deployment.yml b/manifests/acb-bots/bot-defender-deployment.yml new file mode 100644 index 0000000..ea09f38 --- /dev/null +++ b/manifests/acb-bots/bot-defender-deployment.yml @@ -0,0 +1,72 @@ +# bot-defender: DefenderBot — C# strategy bot +# Defensive positioning, core protection, tactical response. Medium-high resource footprint. +# HTTP server on port 8080, POST /turn, GET /health. +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: bot-defender + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-defender + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot + annotations: + argocd-image-updater.argoproj.io/image-list: app=ronaldraygun/acb-bot-defender + argocd-image-updater.argoproj.io/app.update-strategy: name + argocd-image-updater.argoproj.io/app.allow-tags: 'regexp:^sha-[0-9a-f]+$' + argocd-image-updater.argoproj.io/write-back-method: argocd + reloader.stakater.com/auto: "true" +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: bot-defender + template: + metadata: + labels: + app.kubernetes.io/name: bot-defender + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot + spec: + restartPolicy: Always + imagePullSecrets: + - name: docker-hub-registry + containers: + - name: bot + image: ronaldraygun/acb-bot-defender:sha-placeholder + imagePullPolicy: Always + env: + - name: BOT_PORT + value: "8080" + - name: BOT_SECRET + valueFrom: + secretKeyRef: + name: acb-bot-defender-secret + key: shared-secret + ports: + - name: http + containerPort: 8080 + protocol: TCP + livenessProbe: + httpGet: + path: /health + port: http + initialDelaySeconds: 15 + periodSeconds: 30 + failureThreshold: 3 + readinessProbe: + httpGet: + path: /health + port: http + initialDelaySeconds: 10 + periodSeconds: 10 + failureThreshold: 3 + resources: + requests: + cpu: 100m + memory: 128Mi + limits: + memory: 256Mi diff --git a/manifests/acb-bots/bot-defender-externalsecret.yml b/manifests/acb-bots/bot-defender-externalsecret.yml new file mode 100644 index 0000000..11113ac --- /dev/null +++ b/manifests/acb-bots/bot-defender-externalsecret.yml @@ -0,0 +1,27 @@ +# bot-defender: ExternalSecret for DefenderBot shared secret +# Pulls shared_secret from OpenBao at rs-manager/ai-code-battle/bots/defender +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: acb-bot-defender-secret + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-defender + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot +spec: + refreshInterval: 1h + secretStoreRef: + name: openbao + kind: ClusterSecretStore + target: + name: acb-bot-defender-secret + creationPolicy: Owner + data: + - secretKey: shared-secret + remoteRef: + key: rs-manager/ai-code-battle/bots/defender + property: shared_secret diff --git a/manifests/acb-bots/bot-defender-service.yml b/manifests/acb-bots/bot-defender-service.yml new file mode 100644 index 0000000..52c013e --- /dev/null +++ b/manifests/acb-bots/bot-defender-service.yml @@ -0,0 +1,22 @@ +# bot-defender: Service for DefenderBot +# DNS: http://bot-defender.acb-bots.svc.cluster.local +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: v1 +kind: Service +metadata: + name: bot-defender + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-defender + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot +spec: + selector: + app.kubernetes.io/name: bot-defender + ports: + - name: http + port: 80 + targetPort: http + protocol: TCP diff --git a/manifests/acb-bots/bot-farmer-deployment.yml b/manifests/acb-bots/bot-farmer-deployment.yml new file mode 100644 index 0000000..923a3d2 --- /dev/null +++ b/manifests/acb-bots/bot-farmer-deployment.yml @@ -0,0 +1,72 @@ +# bot-farmer: FarmerBot — Go strategy bot +# Sustainable energy harvesting, efficient resource management. Lightweight footprint. +# HTTP server on port 8080, POST /turn, GET /health. +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: bot-farmer + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-farmer + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot + annotations: + argocd-image-updater.argoproj.io/image-list: app=ronaldraygun/acb-bot-farmer + argocd-image-updater.argoproj.io/app.update-strategy: name + argocd-image-updater.argoproj.io/app.allow-tags: 'regexp:^sha-[0-9a-f]+$' + argocd-image-updater.argoproj.io/write-back-method: argocd + reloader.stakater.com/auto: "true" +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: bot-farmer + template: + metadata: + labels: + app.kubernetes.io/name: bot-farmer + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot + spec: + restartPolicy: Always + imagePullSecrets: + - name: docker-hub-registry + containers: + - name: bot + image: ronaldraygun/acb-bot-farmer:sha-placeholder + imagePullPolicy: Always + env: + - name: BOT_PORT + value: "8080" + - name: BOT_SECRET + valueFrom: + secretKeyRef: + name: acb-bot-farmer-secret + key: shared-secret + ports: + - name: http + containerPort: 8080 + protocol: TCP + livenessProbe: + httpGet: + path: /health + port: http + initialDelaySeconds: 5 + periodSeconds: 30 + failureThreshold: 3 + readinessProbe: + httpGet: + path: /health + port: http + initialDelaySeconds: 3 + periodSeconds: 10 + failureThreshold: 3 + resources: + requests: + cpu: 50m + memory: 64Mi + limits: + memory: 128Mi diff --git a/manifests/acb-bots/bot-farmer-externalsecret.yml b/manifests/acb-bots/bot-farmer-externalsecret.yml new file mode 100644 index 0000000..0f26503 --- /dev/null +++ b/manifests/acb-bots/bot-farmer-externalsecret.yml @@ -0,0 +1,27 @@ +# bot-farmer: ExternalSecret for FarmerBot shared secret +# Pulls shared_secret from OpenBao at rs-manager/ai-code-battle/bots/farmer +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: acb-bot-farmer-secret + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-farmer + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot +spec: + refreshInterval: 1h + secretStoreRef: + name: openbao + kind: ClusterSecretStore + target: + name: acb-bot-farmer-secret + creationPolicy: Owner + data: + - secretKey: shared-secret + remoteRef: + key: rs-manager/ai-code-battle/bots/farmer + property: shared_secret diff --git a/manifests/acb-bots/bot-farmer-service.yml b/manifests/acb-bots/bot-farmer-service.yml new file mode 100644 index 0000000..3ea0ee4 --- /dev/null +++ b/manifests/acb-bots/bot-farmer-service.yml @@ -0,0 +1,22 @@ +# bot-farmer: Service for FarmerBot +# DNS: http://bot-farmer.acb-bots.svc.cluster.local +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: v1 +kind: Service +metadata: + name: bot-farmer + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-farmer + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot +spec: + selector: + app.kubernetes.io/name: bot-farmer + ports: + - name: http + port: 80 + targetPort: http + protocol: TCP diff --git a/manifests/acb-bots/bot-kamikaze-deployment.yml b/manifests/acb-bots/bot-kamikaze-deployment.yml new file mode 100644 index 0000000..9992a14 --- /dev/null +++ b/manifests/acb-bots/bot-kamikaze-deployment.yml @@ -0,0 +1,72 @@ +# bot-kamikaze: KamikazeBot — Node.js strategy bot +# Aggressive sacrifice tactics, high-risk high-reward engagements. Lightweight-medium footprint. +# HTTP server on port 8080, POST /turn, GET /health. +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: bot-kamikaze + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-kamikaze + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot + annotations: + argocd-image-updater.argoproj.io/image-list: app=ronaldraygun/acb-bot-kamikaze + argocd-image-updater.argoproj.io/app.update-strategy: name + argocd-image-updater.argoproj.io/app.allow-tags: 'regexp:^sha-[0-9a-f]+$' + argocd-image-updater.argoproj.io/write-back-method: argocd + reloader.stakater.com/auto: "true" +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: bot-kamikaze + template: + metadata: + labels: + app.kubernetes.io/name: bot-kamikaze + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot + spec: + restartPolicy: Always + imagePullSecrets: + - name: docker-hub-registry + containers: + - name: bot + image: ronaldraygun/acb-bot-kamikaze:sha-placeholder + imagePullPolicy: Always + env: + - name: BOT_PORT + value: "8080" + - name: BOT_SECRET + valueFrom: + secretKeyRef: + name: acb-bot-kamikaze-secret + key: shared-secret + ports: + - name: http + containerPort: 8080 + protocol: TCP + livenessProbe: + httpGet: + path: /health + port: http + initialDelaySeconds: 5 + periodSeconds: 30 + failureThreshold: 3 + readinessProbe: + httpGet: + path: /health + port: http + initialDelaySeconds: 3 + periodSeconds: 10 + failureThreshold: 3 + resources: + requests: + cpu: 50m + memory: 64Mi + limits: + memory: 128Mi diff --git a/manifests/acb-bots/bot-kamikaze-externalsecret.yml b/manifests/acb-bots/bot-kamikaze-externalsecret.yml new file mode 100644 index 0000000..e3a5e14 --- /dev/null +++ b/manifests/acb-bots/bot-kamikaze-externalsecret.yml @@ -0,0 +1,27 @@ +# bot-kamikaze: ExternalSecret for KamikazeBot shared secret +# Pulls shared_secret from OpenBao at rs-manager/ai-code-battle/bots/kamikaze +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: acb-bot-kamikaze-secret + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-kamikaze + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot +spec: + refreshInterval: 1h + secretStoreRef: + name: openbao + kind: ClusterSecretStore + target: + name: acb-bot-kamikaze-secret + creationPolicy: Owner + data: + - secretKey: shared-secret + remoteRef: + key: rs-manager/ai-code-battle/bots/kamikaze + property: shared_secret diff --git a/manifests/acb-bots/bot-kamikaze-service.yml b/manifests/acb-bots/bot-kamikaze-service.yml new file mode 100644 index 0000000..86da11b --- /dev/null +++ b/manifests/acb-bots/bot-kamikaze-service.yml @@ -0,0 +1,22 @@ +# bot-kamikaze: Service for KamikazeBot +# DNS: http://bot-kamikaze.acb-bots.svc.cluster.local +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: v1 +kind: Service +metadata: + name: bot-kamikaze + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-kamikaze + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot +spec: + selector: + app.kubernetes.io/name: bot-kamikaze + ports: + - name: http + port: 80 + targetPort: http + protocol: TCP diff --git a/manifests/acb-bots/bot-nomad-deployment.yml b/manifests/acb-bots/bot-nomad-deployment.yml new file mode 100644 index 0000000..fc3c1ee --- /dev/null +++ b/manifests/acb-bots/bot-nomad-deployment.yml @@ -0,0 +1,72 @@ +# bot-nomad: NomadBot — Python strategy bot +# Roaming strategy, dynamic resource acquisition, adaptable positioning. Lightweight footprint. +# HTTP server on port 8080, POST /turn, GET /health. +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: bot-nomad + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-nomad + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot + annotations: + argocd-image-updater.argoproj.io/image-list: app=ronaldraygun/acb-bot-nomad + argocd-image-updater.argoproj.io/app.update-strategy: name + argocd-image-updater.argoproj.io/app.allow-tags: 'regexp:^sha-[0-9a-f]+$' + argocd-image-updater.argoproj.io/write-back-method: argocd + reloader.stakater.com/auto: "true" +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: bot-nomad + template: + metadata: + labels: + app.kubernetes.io/name: bot-nomad + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot + spec: + restartPolicy: Always + imagePullSecrets: + - name: docker-hub-registry + containers: + - name: bot + image: ronaldraygun/acb-bot-nomad:sha-placeholder + imagePullPolicy: Always + env: + - name: BOT_PORT + value: "8080" + - name: BOT_SECRET + valueFrom: + secretKeyRef: + name: acb-bot-nomad-secret + key: shared-secret + ports: + - name: http + containerPort: 8080 + protocol: TCP + livenessProbe: + httpGet: + path: /health + port: http + initialDelaySeconds: 5 + periodSeconds: 30 + failureThreshold: 3 + readinessProbe: + httpGet: + path: /health + port: http + initialDelaySeconds: 3 + periodSeconds: 10 + failureThreshold: 3 + resources: + requests: + cpu: 50m + memory: 64Mi + limits: + memory: 128Mi diff --git a/manifests/acb-bots/bot-nomad-externalsecret.yml b/manifests/acb-bots/bot-nomad-externalsecret.yml new file mode 100644 index 0000000..5bb0629 --- /dev/null +++ b/manifests/acb-bots/bot-nomad-externalsecret.yml @@ -0,0 +1,27 @@ +# bot-nomad: ExternalSecret for NomadBot shared secret +# Pulls shared_secret from OpenBao at rs-manager/ai-code-battle/bots/nomad +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: acb-bot-nomad-secret + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-nomad + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot +spec: + refreshInterval: 1h + secretStoreRef: + name: openbao + kind: ClusterSecretStore + target: + name: acb-bot-nomad-secret + creationPolicy: Owner + data: + - secretKey: shared-secret + remoteRef: + key: rs-manager/ai-code-battle/bots/nomad + property: shared_secret diff --git a/manifests/acb-bots/bot-nomad-service.yml b/manifests/acb-bots/bot-nomad-service.yml new file mode 100644 index 0000000..e481d67 --- /dev/null +++ b/manifests/acb-bots/bot-nomad-service.yml @@ -0,0 +1,22 @@ +# bot-nomad: Service for NomadBot +# DNS: http://bot-nomad.acb-bots.svc.cluster.local +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: v1 +kind: Service +metadata: + name: bot-nomad + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-nomad + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot +spec: + selector: + app.kubernetes.io/name: bot-nomad + ports: + - name: http + port: 80 + targetPort: http + protocol: TCP diff --git a/manifests/acb-bots/bot-opportunist-deployment.yml b/manifests/acb-bots/bot-opportunist-deployment.yml new file mode 100644 index 0000000..8a4a727 --- /dev/null +++ b/manifests/acb-bots/bot-opportunist-deployment.yml @@ -0,0 +1,72 @@ +# bot-opportunist: OpportunistBot — Go strategy bot +# Capitalizes on enemy mistakes, scavenges energy from conflicts. Lightweight footprint. +# HTTP server on port 8080, POST /turn, GET /health. +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: bot-opportunist + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-opportunist + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot + annotations: + argocd-image-updater.argoproj.io/image-list: app=ronaldraygun/acb-bot-opportunist + argocd-image-updater.argoproj.io/app.update-strategy: name + argocd-image-updater.argoproj.io/app.allow-tags: 'regexp:^sha-[0-9a-f]+$' + argocd-image-updater.argoproj.io/write-back-method: argocd + reloader.stakater.com/auto: "true" +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: bot-opportunist + template: + metadata: + labels: + app.kubernetes.io/name: bot-opportunist + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot + spec: + restartPolicy: Always + imagePullSecrets: + - name: docker-hub-registry + containers: + - name: bot + image: ronaldraygun/acb-bot-opportunist:sha-placeholder + imagePullPolicy: Always + env: + - name: BOT_PORT + value: "8080" + - name: BOT_SECRET + valueFrom: + secretKeyRef: + name: acb-bot-opportunist-secret + key: shared-secret + ports: + - name: http + containerPort: 8080 + protocol: TCP + livenessProbe: + httpGet: + path: /health + port: http + initialDelaySeconds: 5 + periodSeconds: 30 + failureThreshold: 3 + readinessProbe: + httpGet: + path: /health + port: http + initialDelaySeconds: 3 + periodSeconds: 10 + failureThreshold: 3 + resources: + requests: + cpu: 50m + memory: 64Mi + limits: + memory: 128Mi diff --git a/manifests/acb-bots/bot-opportunist-externalsecret.yml b/manifests/acb-bots/bot-opportunist-externalsecret.yml new file mode 100644 index 0000000..7f4aaf7 --- /dev/null +++ b/manifests/acb-bots/bot-opportunist-externalsecret.yml @@ -0,0 +1,27 @@ +# bot-opportunist: ExternalSecret for OpportunistBot shared secret +# Pulls shared_secret from OpenBao at rs-manager/ai-code-battle/bots/opportunist +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: acb-bot-opportunist-secret + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-opportunist + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot +spec: + refreshInterval: 1h + secretStoreRef: + name: openbao + kind: ClusterSecretStore + target: + name: acb-bot-opportunist-secret + creationPolicy: Owner + data: + - secretKey: shared-secret + remoteRef: + key: rs-manager/ai-code-battle/bots/opportunist + property: shared_secret diff --git a/manifests/acb-bots/bot-opportunist-service.yml b/manifests/acb-bots/bot-opportunist-service.yml new file mode 100644 index 0000000..2b86bbf --- /dev/null +++ b/manifests/acb-bots/bot-opportunist-service.yml @@ -0,0 +1,22 @@ +# bot-opportunist: Service for OpportunistBot +# DNS: http://bot-opportunist.acb-bots.svc.cluster.local +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: v1 +kind: Service +metadata: + name: bot-opportunist + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-opportunist + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot +spec: + selector: + app.kubernetes.io/name: bot-opportunist + ports: + - name: http + port: 80 + targetPort: http + protocol: TCP diff --git a/manifests/acb-bots/bot-pacifist-deployment.yml b/manifests/acb-bots/bot-pacifist-deployment.yml new file mode 100644 index 0000000..b321ffa --- /dev/null +++ b/manifests/acb-bots/bot-pacifist-deployment.yml @@ -0,0 +1,72 @@ +# bot-pacifist: PacifistBot — Node.js strategy bot +# Avoids combat entirely, focuses on resource gathering, defensive only. Lightweight-medium footprint. +# HTTP server on port 8080, POST /turn, GET /health. +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: bot-pacifist + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-pacifist + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot + annotations: + argocd-image-updater.argoproj.io/image-list: app=ronaldraygun/acb-bot-pacifist + argocd-image-updater.argoproj.io/app.update-strategy: name + argocd-image-updater.argoproj.io/app.allow-tags: 'regexp:^sha-[0-9a-f]+$' + argocd-image-updater.argoproj.io/write-back-method: argocd + reloader.stakater.com/auto: "true" +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: bot-pacifist + template: + metadata: + labels: + app.kubernetes.io/name: bot-pacifist + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot + spec: + restartPolicy: Always + imagePullSecrets: + - name: docker-hub-registry + containers: + - name: bot + image: ronaldraygun/acb-bot-pacifist:sha-placeholder + imagePullPolicy: Always + env: + - name: BOT_PORT + value: "8080" + - name: BOT_SECRET + valueFrom: + secretKeyRef: + name: acb-bot-pacifist-secret + key: shared-secret + ports: + - name: http + containerPort: 8080 + protocol: TCP + livenessProbe: + httpGet: + path: /health + port: http + initialDelaySeconds: 5 + periodSeconds: 30 + failureThreshold: 3 + readinessProbe: + httpGet: + path: /health + port: http + initialDelaySeconds: 3 + periodSeconds: 10 + failureThreshold: 3 + resources: + requests: + cpu: 50m + memory: 64Mi + limits: + memory: 128Mi diff --git a/manifests/acb-bots/bot-pacifist-externalsecret.yml b/manifests/acb-bots/bot-pacifist-externalsecret.yml new file mode 100644 index 0000000..915312f --- /dev/null +++ b/manifests/acb-bots/bot-pacifist-externalsecret.yml @@ -0,0 +1,27 @@ +# bot-pacifist: ExternalSecret for PacifistBot shared secret +# Pulls shared_secret from OpenBao at rs-manager/ai-code-battle/bots/pacifist +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: acb-bot-pacifist-secret + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-pacifist + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot +spec: + refreshInterval: 1h + secretStoreRef: + name: openbao + kind: ClusterSecretStore + target: + name: acb-bot-pacifist-secret + creationPolicy: Owner + data: + - secretKey: shared-secret + remoteRef: + key: rs-manager/ai-code-battle/bots/pacifist + property: shared_secret diff --git a/manifests/acb-bots/bot-pacifist-service.yml b/manifests/acb-bots/bot-pacifist-service.yml new file mode 100644 index 0000000..c7a9021 --- /dev/null +++ b/manifests/acb-bots/bot-pacifist-service.yml @@ -0,0 +1,22 @@ +# bot-pacifist: Service for PacifistBot +# DNS: http://bot-pacifist.acb-bots.svc.cluster.local +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: v1 +kind: Service +metadata: + name: bot-pacifist + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-pacifist + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot +spec: + selector: + app.kubernetes.io/name: bot-pacifist + ports: + - name: http + port: 80 + targetPort: http + protocol: TCP diff --git a/manifests/acb-bots/bot-phalanx-deployment.yml b/manifests/acb-bots/bot-phalanx-deployment.yml new file mode 100644 index 0000000..dc214b1 --- /dev/null +++ b/manifests/acb-bots/bot-phalanx-deployment.yml @@ -0,0 +1,72 @@ +# bot-phalanx: PhalanxBot — Rust strategy bot +# Formation-based defense, coordinated unit movement, defensive stronghold. Higher CPU/memory due to Rust compilation. +# HTTP server on port 8080, POST /turn, GET /health. +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: bot-phalanx + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-phalanx + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot + annotations: + argocd-image-updater.argoproj.io/image-list: app=ronaldraygun/acb-bot-phalanx + argocd-image-updater.argoproj.io/app.update-strategy: name + argocd-image-updater.argoproj.io/app.allow-tags: 'regexp:^sha-[0-9a-f]+$' + argocd-image-updater.argoproj.io/write-back-method: argocd + reloader.stakater.com/auto: "true" +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: bot-phalanx + template: + metadata: + labels: + app.kubernetes.io/name: bot-phalanx + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot + spec: + restartPolicy: Always + imagePullSecrets: + - name: docker-hub-registry + containers: + - name: bot + image: ronaldraygun/acb-bot-phalanx:sha-placeholder + imagePullPolicy: Always + env: + - name: BOT_PORT + value: "8080" + - name: BOT_SECRET + valueFrom: + secretKeyRef: + name: acb-bot-phalanx-secret + key: shared-secret + ports: + - name: http + containerPort: 8080 + protocol: TCP + livenessProbe: + httpGet: + path: /health + port: http + initialDelaySeconds: 10 + periodSeconds: 30 + failureThreshold: 3 + readinessProbe: + httpGet: + path: /health + port: http + initialDelaySeconds: 5 + periodSeconds: 10 + failureThreshold: 3 + resources: + requests: + cpu: 100m + memory: 128Mi + limits: + memory: 256Mi diff --git a/manifests/acb-bots/bot-phalanx-externalsecret.yml b/manifests/acb-bots/bot-phalanx-externalsecret.yml new file mode 100644 index 0000000..fdd9f11 --- /dev/null +++ b/manifests/acb-bots/bot-phalanx-externalsecret.yml @@ -0,0 +1,27 @@ +# bot-phalanx: ExternalSecret for PhalanxBot shared secret +# Pulls shared_secret from OpenBao at rs-manager/ai-code-battle/bots/phalanx +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: acb-bot-phalanx-secret + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-phalanx + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot +spec: + refreshInterval: 1h + secretStoreRef: + name: openbao + kind: ClusterSecretStore + target: + name: acb-bot-phalanx-secret + creationPolicy: Owner + data: + - secretKey: shared-secret + remoteRef: + key: rs-manager/ai-code-battle/bots/phalanx + property: shared_secret diff --git a/manifests/acb-bots/bot-phalanx-service.yml b/manifests/acb-bots/bot-phalanx-service.yml new file mode 100644 index 0000000..6cdf2c2 --- /dev/null +++ b/manifests/acb-bots/bot-phalanx-service.yml @@ -0,0 +1,22 @@ +# bot-phalanx: Service for PhalanxBot +# DNS: http://bot-phalanx.acb-bots.svc.cluster.local +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: v1 +kind: Service +metadata: + name: bot-phalanx + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-phalanx + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot +spec: + selector: + app.kubernetes.io/name: bot-phalanx + ports: + - name: http + port: 80 + targetPort: http + protocol: TCP diff --git a/manifests/acb-bots/bot-raider-deployment.yml b/manifests/acb-bots/bot-raider-deployment.yml new file mode 100644 index 0000000..78c6ec4 --- /dev/null +++ b/manifests/acb-bots/bot-raider-deployment.yml @@ -0,0 +1,72 @@ +# bot-raider: RaiderBot — Java strategy bot +# Rapid strike tactics, hit-and-run engagements, resource disruption. Higher CPU/memory due to JVM. +# HTTP server on port 8080, POST /turn, GET /health. +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: bot-raider + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-raider + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot + annotations: + argocd-image-updater.argoproj.io/image-list: app=ronaldraygun/acb-bot-raider + argocd-image-updater.argoproj.io/app.update-strategy: name + argocd-image-updater.argoproj.io/app.allow-tags: 'regexp:^sha-[0-9a-f]+$' + argocd-image-updater.argoproj.io/write-back-method: argocd + reloader.stakater.com/auto: "true" +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: bot-raider + template: + metadata: + labels: + app.kubernetes.io/name: bot-raider + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot + spec: + restartPolicy: Always + imagePullSecrets: + - name: docker-hub-registry + containers: + - name: bot + image: ronaldraygun/acb-bot-raider:sha-placeholder + imagePullPolicy: Always + env: + - name: BOT_PORT + value: "8080" + - name: BOT_SECRET + valueFrom: + secretKeyRef: + name: acb-bot-raider-secret + key: shared-secret + ports: + - name: http + containerPort: 8080 + protocol: TCP + livenessProbe: + httpGet: + path: /health + port: http + initialDelaySeconds: 15 + periodSeconds: 30 + failureThreshold: 3 + readinessProbe: + httpGet: + path: /health + port: http + initialDelaySeconds: 10 + periodSeconds: 10 + failureThreshold: 3 + resources: + requests: + cpu: 100m + memory: 128Mi + limits: + memory: 256Mi diff --git a/manifests/acb-bots/bot-raider-externalsecret.yml b/manifests/acb-bots/bot-raider-externalsecret.yml new file mode 100644 index 0000000..52f8011 --- /dev/null +++ b/manifests/acb-bots/bot-raider-externalsecret.yml @@ -0,0 +1,27 @@ +# bot-raider: ExternalSecret for RaiderBot shared secret +# Pulls shared_secret from OpenBao at rs-manager/ai-code-battle/bots/raider +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: acb-bot-raider-secret + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-raider + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot +spec: + refreshInterval: 1h + secretStoreRef: + name: openbao + kind: ClusterSecretStore + target: + name: acb-bot-raider-secret + creationPolicy: Owner + data: + - secretKey: shared-secret + remoteRef: + key: rs-manager/ai-code-battle/bots/raider + property: shared_secret diff --git a/manifests/acb-bots/bot-raider-service.yml b/manifests/acb-bots/bot-raider-service.yml new file mode 100644 index 0000000..8ad0739 --- /dev/null +++ b/manifests/acb-bots/bot-raider-service.yml @@ -0,0 +1,22 @@ +# bot-raider: Service for RaiderBot +# DNS: http://bot-raider.acb-bots.svc.cluster.local +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: v1 +kind: Service +metadata: + name: bot-raider + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-raider + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot +spec: + selector: + app.kubernetes.io/name: bot-raider + ports: + - name: http + port: 80 + targetPort: http + protocol: TCP diff --git a/manifests/acb-bots/bot-scout-deployment.yml b/manifests/acb-bots/bot-scout-deployment.yml new file mode 100644 index 0000000..8d84a91 --- /dev/null +++ b/manifests/acb-bots/bot-scout-deployment.yml @@ -0,0 +1,72 @@ +# bot-scout: ScoutBot — Python strategy bot +# Fast exploration, maps terrain, identifies energy clusters. Lightweight resource footprint. +# HTTP server on port 8080, POST /turn, GET /health. +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: bot-scout + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-scout + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot + annotations: + argocd-image-updater.argoproj.io/image-list: app=ronaldraygun/acb-bot-scout + argocd-image-updater.argoproj.io/app.update-strategy: name + argocd-image-updater.argoproj.io/app.allow-tags: 'regexp:^sha-[0-9a-f]+$' + argocd-image-updater.argoproj.io/write-back-method: argocd + reloader.stakater.com/auto: "true" +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: bot-scout + template: + metadata: + labels: + app.kubernetes.io/name: bot-scout + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot + spec: + restartPolicy: Always + imagePullSecrets: + - name: docker-hub-registry + containers: + - name: bot + image: ronaldraygun/acb-bot-scout:sha-placeholder + imagePullPolicy: Always + env: + - name: BOT_PORT + value: "8080" + - name: BOT_SECRET + valueFrom: + secretKeyRef: + name: acb-bot-scout-secret + key: shared-secret + ports: + - name: http + containerPort: 8080 + protocol: TCP + livenessProbe: + httpGet: + path: /health + port: http + initialDelaySeconds: 5 + periodSeconds: 30 + failureThreshold: 3 + readinessProbe: + httpGet: + path: /health + port: http + initialDelaySeconds: 3 + periodSeconds: 10 + failureThreshold: 3 + resources: + requests: + cpu: 50m + memory: 64Mi + limits: + memory: 128Mi diff --git a/manifests/acb-bots/bot-scout-externalsecret.yml b/manifests/acb-bots/bot-scout-externalsecret.yml new file mode 100644 index 0000000..1def20c --- /dev/null +++ b/manifests/acb-bots/bot-scout-externalsecret.yml @@ -0,0 +1,27 @@ +# bot-scout: ExternalSecret for ScoutBot shared secret +# Pulls shared_secret from OpenBao at rs-manager/ai-code-battle/bots/scout +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: acb-bot-scout-secret + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-scout + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot +spec: + refreshInterval: 1h + secretStoreRef: + name: openbao + kind: ClusterSecretStore + target: + name: acb-bot-scout-secret + creationPolicy: Owner + data: + - secretKey: shared-secret + remoteRef: + key: rs-manager/ai-code-battle/bots/scout + property: shared_secret diff --git a/manifests/acb-bots/bot-scout-service.yml b/manifests/acb-bots/bot-scout-service.yml new file mode 100644 index 0000000..25726f4 --- /dev/null +++ b/manifests/acb-bots/bot-scout-service.yml @@ -0,0 +1,22 @@ +# bot-scout: Service for ScoutBot +# DNS: http://bot-scout.acb-bots.svc.cluster.local +# +# Staging file — sync to declarative-config/k8s/iad-acb/acb-bots/ +--- +apiVersion: v1 +kind: Service +metadata: + name: bot-scout + namespace: acb-bots + labels: + app.kubernetes.io/name: bot-scout + app.kubernetes.io/part-of: ai-code-battle + app.kubernetes.io/component: strategy-bot +spec: + selector: + app.kubernetes.io/name: bot-scout + ports: + - name: http + port: 80 + targetPort: http + protocol: TCP