4 Commits
Author SHA1 Message Date
Gitea Actions 452eedd6d6 Release 0.1.6 [auto-version-bump] 2026-10-20 12:33:52 +02:00
Ein Anderssono 1aa22cf871 Allow rule workers on the small workload node
Build and publish rule engine / release (push) Successful in 2m34s
2026-10-20 12:33:41 +02:00
Gitea Actions f33a956494 Release 0.1.5 [auto-version-bump] 2026-10-20 11:42:34 +02:00
Ein Anderssono c4403f297a Restrict worker egress and publish manifest
Build and publish rule engine / release (push) Successful in 2m48s
2026-10-20 11:42:13 +02:00
10 changed files with 43 additions and 13 deletions
+6 -3
View File
@@ -100,9 +100,12 @@ jobs:
install "$RUNNER_TEMP/oras/oras" "$RUNNER_TEMP/oras-bin" install "$RUNNER_TEMP/oras/oras" "$RUNNER_TEMP/oras-bin"
printf '%s' "$HARBOR_PASSWORD" | "$RUNNER_TEMP/oras-bin" login harbor.k3s.k0.nu --username "$HARBOR_USERNAME" --password-stdin printf '%s' "$HARBOR_PASSWORD" | "$RUNNER_TEMP/oras-bin" login harbor.k3s.k0.nu --username "$HARBOR_USERNAME" --password-stdin
unset HARBOR_PASSWORD unset HARBOR_PASSWORD
"$RUNNER_TEMP/oras-bin" push --artifact-type application/vnd.ai-spel.kubernetes-manifest.v1 \ (
"harbor.k3s.k0.nu/ai-spel/rule-engine-manifest:$version" \ cd "$package_dir"
"$package_dir/manifest.yaml:application/yaml" "$RUNNER_TEMP/oras-bin" push --artifact-type application/vnd.ai-spel.kubernetes-manifest.v1 \
"harbor.k3s.k0.nu/ai-spel/rule-engine-manifest:$version" \
"manifest.yaml:application/yaml"
)
echo "version=$version" >> "$GITHUB_OUTPUT" echo "version=$version" >> "$GITHUB_OUTPUT"
- name: Deploy rule engine through Argo CD - name: Deploy rule engine through Argo CD
Generated
+1 -1
View File
@@ -13,7 +13,7 @@ dependencies = [
[[package]] [[package]]
name = "ai-spel-rule-engine" name = "ai-spel-rule-engine"
version = "0.1.4" version = "0.1.6"
dependencies = [ dependencies = [
"async-nats", "async-nats",
"axum", "axum",
+1 -1
View File
@@ -3,7 +3,7 @@ members = ["crates/rule-engine"]
resolver = "2" resolver = "2"
[workspace.package] [workspace.package]
version = "0.1.4" version = "0.1.6"
edition = "2024" edition = "2024"
license = "MIT" license = "MIT"
+3 -1
View File
@@ -14,7 +14,9 @@ Responses echo the correlation ID and have status `evaluated` or `rejected`.
The NATS user may subscribe only to the evaluation subject and publish only to The NATS user may subscribe only to the evaluation subject and publish only to
reply inboxes. The service receives no credentials other than its own NATS reply inboxes. The service receives no credentials other than its own NATS
identity and has no configured database or AI-provider secrets. identity and has no configured database or AI-provider secrets. Its chart
limits pod egress to NATS and cluster DNS; Luau evaluation has no external
network path.
## Local commands ## Local commands
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"$schema": "https://json-schema.org/draft/2020-12/schema", "$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://gitea.k3s.k0.nu/ai-spel/ai-spel-rule-engine/raw/tag/v0.1.4/contracts/rule-evaluation-v1.schema.json", "$id": "https://gitea.k3s.k0.nu/ai-spel/ai-spel-rule-engine/raw/tag/v0.1.6/contracts/rule-evaluation-v1.schema.json",
"title": "AI Spel Luau rule evaluation contract v1", "title": "AI Spel Luau rule evaluation contract v1",
"type": "object", "type": "object",
"additionalProperties": false, "additionalProperties": false,
+1 -1
View File
@@ -8,7 +8,7 @@ spec:
source: source:
repoURL: harbor.k3s.k0.nu/ai-spel repoURL: harbor.k3s.k0.nu/ai-spel
chart: ai-spel-rule-engine chart: ai-spel-rule-engine
targetRevision: "0.1.4" targetRevision: "0.1.6"
helm: helm:
releaseName: ai-spel-rule-engine releaseName: ai-spel-rule-engine
destination: destination:
+2 -2
View File
@@ -2,5 +2,5 @@ apiVersion: v2
name: ai-spel-rule-engine name: ai-spel-rule-engine
description: Isolated, sandboxed Luau proposal evaluator description: Isolated, sandboxed Luau proposal evaluator
type: application type: application
version: 0.1.4 version: 0.1.6
appVersion: "0.1.4" appVersion: "0.1.6"
@@ -26,6 +26,27 @@ spec:
imagePullSecrets: imagePullSecrets:
- name: {{ . | quote }} - name: {{ . | quote }}
{{- end }} {{- end }}
{{- with .Values.pod.tolerations }}
tolerations: {{- toYaml . | nindent 8 }}
{{- end }}
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
topologyKey: kubernetes.io/hostname
labelSelector:
matchLabels:
app.kubernetes.io/name: {{ .Chart.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
topologySpreadConstraints:
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
app.kubernetes.io/name: {{ .Chart.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
containers: containers:
- name: rule-engine - name: rule-engine
image: "{{ .Values.image.repository }}:{{ .Chart.AppVersion }}" image: "{{ .Values.image.repository }}:{{ .Chart.AppVersion }}"
@@ -12,6 +12,7 @@ spec:
- to: - to:
- podSelector: - podSelector:
matchLabels: matchLabels:
app.kubernetes.io/name: ai-spel-nats
app.kubernetes.io/instance: ai-spel-nats app.kubernetes.io/instance: ai-spel-nats
ports: ports:
- protocol: TCP - protocol: TCP
@@ -20,9 +21,6 @@ spec:
- namespaceSelector: - namespaceSelector:
matchLabels: matchLabels:
kubernetes.io/metadata.name: kube-system kubernetes.io/metadata.name: kube-system
podSelector:
matchLabels:
k8s-app: kube-dns
ports: ports:
- protocol: UDP - protocol: UDP
port: 53 port: 53
@@ -8,6 +8,12 @@ deployment:
maxSurge: 1 maxSurge: 1
minReadySeconds: 5 minReadySeconds: 5
progressDeadlineSeconds: 600 progressDeadlineSeconds: 600
pod:
tolerations:
- key: workload-tier
operator: Equal
value: small
effect: NoSchedule
service: service:
port: 8080 port: 8080
nats: nats: