proteus: Deploy for staging

This commit is contained in:
2026-07-24 14:09:24 +02:00
parent 16178cf2d6
commit 8e410f761a
6 changed files with 132 additions and 84 deletions
@@ -3,10 +3,6 @@ kind: ConfigMap
metadata: metadata:
name: staging-atlantis-actor-config name: staging-atlantis-actor-config
data: data:
XTRACT_IMAGE: "git.oceanbox.io/oceanbox/katamari/excavator:v1.5.1" TEMPORAL_ADDRESS: "temporal-grpc.ekman.oceanbox.io:443"
XTRACT_QUEUE: "dev-queue" TEMPORAL_TLS: "true"
PLUME_IMAGE: "git.oceanbox.io/oceanbox/katamari/plume:v1.5.1"
PLUME_QUEUE: "dev-queue"
TEMPORAL_ADDRESS: "temporal-frontend.temporal:7233"
TEMPORAL_NAMESPACE: "staging-atlantis" TEMPORAL_NAMESPACE: "staging-atlantis"
TEMPORAL_TASK_QUEUE: "atlantis"
@@ -0,0 +1,18 @@
{{- if .Values.clusterConfig.cilium.enabled }}
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
name: allow-temporal
namespace: {{ .Release.Namespace }}
spec:
endpointSelector:
matchLabels:
app.kubernetes.io/name: atlantis
egress:
- toFQDNs:
- matchName: temporal-grpc.ekman.oceanbox.io
toPorts:
- ports:
- port: "443"
protocol: TCP
{{- end }}
+3 -10
View File
@@ -16,9 +16,6 @@ spec:
- ports: - ports:
- port: "7233" - port: "7233"
protocol: TCP protocol: TCP
# k8s API server (for batch/v1 Job create/poll/delete)
- toEntities:
- kube-apiserver
# DNS # DNS
- toEndpoints: - toEndpoints:
- matchLabels: - matchLabels:
@@ -30,15 +27,11 @@ spec:
protocol: UDP protocol: UDP
- port: "53" - port: "53"
protocol: TCP protocol: TCP
# RabbitMQ on oceanbox: NodePorts (30672/31672) or MetalLB IPs on standard port 5672 # OTel collector (tos1 LoadBalancer 10.255.241.12) for Temporal traces, exported cross-cluster
- toCIDR: - toCIDR:
- 10.255.241.0/24 - 10.255.241.12/32
toPorts: toPorts:
- ports: - ports:
- port: "5672" - port: "4317"
protocol: TCP
- port: "30672"
protocol: TCP
- port: "31672"
protocol: TCP protocol: TCP
{{- end }} {{- end }}
+37
View File
@@ -0,0 +1,37 @@
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-proteus-ceph-archives
spec:
accessModes:
- ReadWriteMany
capacity:
storage: 1Gi
csi:
driver: rook-ceph.cephfs.csi.ceph.com
nodeStageSecretRef:
name: rook-csi-cephfs-node
namespace: rook-ceph
volumeAttributes:
clusterID: rook-ceph
fsName: data
rootPath: /
staticVolume: "true"
volumeHandle: pv-proteus-ceph-archives
persistentVolumeReclaimPolicy: Retain
volumeMode: Filesystem
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: proteus-ceph-archives
namespace: proteus
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
storageClassName: ""
volumeMode: Filesystem
volumeName: pv-proteus-ceph-archives
-55
View File
@@ -1,55 +0,0 @@
# TODO: the SA the temporal-worker-controller assigns to the pod (assumed `default`).
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: proteus-dev-queue
namespace: dev-queue
rules:
- apiGroups: ["batch"]
resources: ["jobs"]
verbs: ["create", "delete", "get", "list", "watch"]
- apiGroups: [""]
resources: ["pods", "pods/log"]
verbs: ["get", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: proteus-dev-queue
namespace: dev-queue
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: proteus-dev-queue
subjects:
- kind: ServiceAccount
name: default
namespace: proteus
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: proteus-prod-queue
namespace: prod-queue
rules:
- apiGroups: ["batch"]
resources: ["jobs"]
verbs: ["create", "delete", "get", "list", "watch"]
- apiGroups: [""]
resources: ["pods", "pods/log"]
verbs: ["get", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: proteus-prod-queue
namespace: prod-queue
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: proteus-prod-queue
subjects:
- kind: ServiceAccount
name: default
namespace: proteus
+72 -13
View File
@@ -1,14 +1,10 @@
# TEMPORAL_NAMESPACE : {env}-atlantis
# ARCHIVE_PVC : the queue's archive PVC (prod+beta -> prod-queue, staging -> dev-queue)
# Status/inbox/quota now flow via Temporal activities to the Atlantis notify worker; no RabbitMQ.
# ---
# apiVersion: temporal.io/v1alpha1 # apiVersion: temporal.io/v1alpha1
# kind: WorkerDeployment # kind: WorkerDeployment
# metadata: # metadata:
# name: proteus-prod # name: proteus-prod
# namespace: proteus # namespace: proteus
# spec: # spec:
# replicas: 1 # replicas: 2
# workerOptions: # workerOptions:
# temporalNamespace: prod-atlantis # temporalNamespace: prod-atlantis
# connectionRef: # connectionRef:
@@ -21,14 +17,20 @@
# securityContext: # securityContext:
# runAsUser: 0 # runAsUser: 0
# runAsGroup: 0 # runAsGroup: 0
# volumes:
# - name: archives
# persistentVolumeClaim:
# claimName: proteus-ceph-archives
# containers: # containers:
# - name: proteus # - name: proteus
# image: git.oceanbox.io/oceanbox/poseidon/proteus:CHANGEME # image: git.oceanbox.io/oceanbox/poseidon/proteus:v2.17.0
# resources: # resources:
# requests: # requests:
# memory: 256Mi # cpu: "1"
# limits:
# memory: 1Gi # memory: 1Gi
# limits:
# cpu: "2"
# memory: 4Gi
# env: # env:
# - name: TEMPORAL_TASK_QUEUES # - name: TEMPORAL_TASK_QUEUES
# value: plume,xtract # value: plume,xtract
@@ -38,6 +40,32 @@
# value: prod # value: prod
# - name: ARCHIVE_PVC # - name: ARCHIVE_PVC
# value: prod-queue-ceph-archives # value: prod-queue-ceph-archives
# - name: MAX_CONCURRENT_ACTIVITIES
# value: "2"
# - name: OTEL_EXPORTER_OTLP_ENDPOINT
# value: http://10.255.241.12:4317
# volumeMounts:
# - name: archives
# mountPath: /data
# ports:
# - name: health
# containerPort: 8080
# livenessProbe:
# httpGet:
# path: /healthz
# port: health
# initialDelaySeconds: 20
# periodSeconds: 15
# timeoutSeconds: 5
# failureThreshold: 6
# readinessProbe:
# httpGet:
# path: /readyz
# port: health
# initialDelaySeconds: 5
# periodSeconds: 15
# timeoutSeconds: 5
# failureThreshold: 3
# --- # ---
# apiVersion: temporal.io/v1alpha1 # apiVersion: temporal.io/v1alpha1
# kind: WorkerDeployment # kind: WorkerDeployment
@@ -73,10 +101,9 @@
# value: beta-atlantis # value: beta-atlantis
# - name: APP_ENV # - name: APP_ENV
# value: beta # value: beta
# # beta schedules into prod-queue (same as prod), so the same archive PVC.
# - name: ARCHIVE_PVC # - name: ARCHIVE_PVC
# value: prod-queue-ceph-archives # value: prod-queue-ceph-archives
# --- ---
apiVersion: temporal.io/v1alpha1 apiVersion: temporal.io/v1alpha1
kind: WorkerDeployment kind: WorkerDeployment
metadata: metadata:
@@ -96,14 +123,20 @@ spec:
securityContext: securityContext:
runAsUser: 0 runAsUser: 0
runAsGroup: 0 runAsGroup: 0
volumes:
- name: archives
persistentVolumeClaim:
claimName: proteus-ceph-archives
containers: containers:
- name: proteus - name: proteus
image: git.oceanbox.io/oceanbox/poseidon/proteus:v2.17.0 image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
resources: resources:
requests: requests:
memory: 256Mi cpu: 500m
limits:
memory: 1Gi memory: 1Gi
limits:
cpu: "2"
memory: 4Gi
env: env:
- name: TEMPORAL_TASK_QUEUES - name: TEMPORAL_TASK_QUEUES
value: plume,xtract value: plume,xtract
@@ -113,3 +146,29 @@ spec:
value: staging value: staging
- name: ARCHIVE_PVC - name: ARCHIVE_PVC
value: dev-queue-ceph-archives value: dev-queue-ceph-archives
- name: MAX_CONCURRENT_ACTIVITIES
value: "2"
- name: OTEL_EXPORTER_OTLP_ENDPOINT
value: http://10.255.241.12:4317
volumeMounts:
- name: archives
mountPath: /data
ports:
- name: health
containerPort: 8080
livenessProbe:
httpGet:
path: /healthz
port: health
initialDelaySeconds: 20
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 6
readinessProbe:
httpGet:
path: /readyz
port: health
initialDelaySeconds: 5
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 3