feat(nci-11): add Kubernetes manifests for nowchess-analysis service (#381)

Add Argo Rollout (blueGreen), active/preview Services, and HPA for the
new analysis service (port 8087). Wire image pins into all three overlay
kustomizations and register the analysis Warehouse and freight entries in
all three Kargo Stages (staging -> eu-central-1-prod / htwg-1-prod).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Janis Eccarius <eccariusjanis@gmail.com>
Reviewed-on: #381
This commit was merged in pull request #381.
This commit is contained in:
2026-06-15 22:17:45 +02:00
parent b546313e79
commit 0373f61ef7
8 changed files with 167 additions and 0 deletions
+20
View File
@@ -14,6 +14,12 @@ spec:
- name: tagSuffix
value: ""
requestedFreight:
- origin:
kind: Warehouse
name: analysis
sources:
direct: true
requiredSoakTime: 5m0s
- origin:
kind: Warehouse
name: account
@@ -105,6 +111,13 @@ spec:
- name: tagSuffix
value: ""
requestedFreight:
- origin:
kind: Warehouse
name: analysis
sources:
direct: false
stages:
- staging
- origin:
kind: Warehouse
name: account
@@ -204,6 +217,13 @@ spec:
- name: tagSuffix
value: "-x86_v2"
requestedFreight:
- origin:
kind: Warehouse
name: analysis
sources:
direct: false
stages:
- staging
- origin:
kind: Warehouse
name: account
@@ -1,5 +1,20 @@
apiVersion: kargo.akuity.io/v1alpha1
kind: Warehouse
metadata:
name: analysis
namespace: nowchess-kargo
spec:
freightCreationPolicy: Automatic
interval: 5m0s
subscriptions:
- image:
discoveryLimit: 20
imageSelectionStrategy: SemVer
repoURL: ghcr.io/now-chess/now-chess-systems/analysis
strictSemvers: true
---
apiVersion: kargo.akuity.io/v1alpha1
kind: Warehouse
metadata:
name: account
namespace: nowchess-kargo
+22
View File
@@ -1,5 +1,27 @@
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: nowchess-analysis
labels:
app.kubernetes.io/name: nowchess-analysis
app.kubernetes.io/part-of: nowchess
spec:
scaleTargetRef:
apiVersion: argoproj.io/v1alpha1
kind: Rollout
name: nowchess-analysis
minReplicas: 1
maxReplicas: 3
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 90
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: nowchess-account
spec:
+67
View File
@@ -755,6 +755,73 @@ spec:
---
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: nowchess-analysis
labels:
app: nowchess-analysis
app.kubernetes.io/name: nowchess-analysis
app.kubernetes.io/part-of: nowchess
spec:
selector:
matchLabels:
app: nowchess-analysis
template:
metadata:
labels:
app: nowchess-analysis
annotations:
k8s.grafana.com/scrape: "true"
k8s.grafana.com/metrics_path: "/q/metrics"
k8s.grafana.com/metrics_portNumber: "8087"
spec:
imagePullSecrets:
- name: ghcr-pull-secret
containers:
- name: nowchess-analysis
image: ghcr.io/now-chess/now-chess-systems/analysis:latest
imagePullPolicy: Always
envFrom:
- configMapRef:
name: nowchess-env-config
env:
- name: INTERNAL_SECRET
valueFrom:
secretKeyRef:
name: ncs-internal-secret
key: INTERNAL_SECRET
ports:
- containerPort: 8087
protocol: TCP
livenessProbe:
httpGet:
path: /q/health/live
port: 8087
initialDelaySeconds: 0
periodSeconds: 10
readinessProbe:
httpGet:
path: /q/health/ready
port: 8087
initialDelaySeconds: 0
periodSeconds: 5
resources:
requests:
cpu: "5m"
memory: "96Mi"
limits:
cpu: "500m"
memory: "256Mi"
rollbackWindow:
revisions: 3
strategy:
blueGreen:
activeService: nowchess-analysis-active
previewService: nowchess-analysis-preview
autoPromotionEnabled: true
previewReplicaCount: 1
---
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: nowchess-tournament
labels:
+30
View File
@@ -1,5 +1,35 @@
apiVersion: v1
kind: Service
metadata:
name: nowchess-analysis-active
labels:
app.kubernetes.io/name: nowchess-analysis
app.kubernetes.io/part-of: nowchess
spec:
selector:
app: nowchess-analysis
ports:
- protocol: TCP
port: 8087
targetPort: 8087
---
apiVersion: v1
kind: Service
metadata:
name: nowchess-analysis-preview
labels:
app.kubernetes.io/name: nowchess-analysis
app.kubernetes.io/part-of: nowchess
spec:
selector:
app: nowchess-analysis
ports:
- protocol: TCP
port: 8087
targetPort: 8087
---
apiVersion: v1
kind: Service
metadata:
name: nowchess-account-active
spec:
@@ -32,6 +32,8 @@ patches:
kind: ConfigMap
name: nowchess-frontend-env-config
images:
- name: ghcr.io/now-chess/now-chess-systems/analysis
newTag: 0.1.0
- name: ghcr.io/now-chess/now-chess-systems/account
newTag: 0.24.0
- name: ghcr.io/now-chess/now-chess-systems/bot-platform
@@ -21,6 +21,13 @@ patches:
target:
kind: ConfigMap
name: nowchess-env-config
- patch: |-
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: nowchess-analysis
spec:
maxReplicas: 1
- patch: |-
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
@@ -87,6 +94,8 @@ patches:
spec:
replicas: 1
images:
- name: ghcr.io/now-chess/now-chess-systems/analysis
newTag: 0.1.0
- name: ghcr.io/now-chess/now-chess-systems/account
newTag: 0.24.0
- name: ghcr.io/now-chess/now-chess-systems/bot-platform
+2
View File
@@ -31,6 +31,8 @@ patches:
kind: ConfigMap
name: nowchess-frontend-env-config
images:
- name: ghcr.io/now-chess/now-chess-systems/analysis
newTag: 0.1.0-x86_v2
- name: ghcr.io/now-chess/now-chess-systems/account
newTag: 0.24.0-x86_v2
- name: ghcr.io/now-chess/now-chess-systems/bot-platform