forked from roger/k3s-cluster
Compare commits
17 Commits
fix/argocd
...
fix/litell
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9c134d5dd0 | ||
|
|
6df0be81c9 | ||
| a5291da0b2 | |||
|
|
075bdd8ca3 | ||
|
|
e44d7ba1fc | ||
|
|
f1005cd426 | ||
|
|
43c0c2561e | ||
| 8334cd48f8 | |||
|
|
ba7e05a73d | ||
|
|
8bc3025296 | ||
|
|
7a7d67bedc | ||
|
|
19cdc77880 | ||
|
|
8983f482d0 | ||
|
|
0b27cefd13 | ||
|
|
279cc1f235 | ||
|
|
cf6e2784fe | ||
|
|
dad38347e7 |
@@ -11,6 +11,8 @@ spec:
|
|||||||
repoURL: https://git.rogi.casa/roger/k3s-cluster.git
|
repoURL: https://git.rogi.casa/roger/k3s-cluster.git
|
||||||
targetRevision: main
|
targetRevision: main
|
||||||
path: argocd
|
path: argocd
|
||||||
|
directory:
|
||||||
|
recurse: false
|
||||||
destination:
|
destination:
|
||||||
server: https://kubernetes.default.svc
|
server: https://kubernetes.default.svc
|
||||||
namespace: argocd
|
namespace: argocd
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ metadata:
|
|||||||
namespace: gitea
|
namespace: gitea
|
||||||
labels:
|
labels:
|
||||||
app: gitea
|
app: gitea
|
||||||
|
annotations:
|
||||||
|
kubectl.kubernetes.io/restartedAt: "2026-07-21T13:30:00Z"
|
||||||
spec:
|
spec:
|
||||||
replicas: 1
|
replicas: 1
|
||||||
selector:
|
selector:
|
||||||
@@ -101,6 +103,8 @@ metadata:
|
|||||||
namespace: gitea
|
namespace: gitea
|
||||||
labels:
|
labels:
|
||||||
app: gitea-runner
|
app: gitea-runner
|
||||||
|
annotations:
|
||||||
|
kubectl.kubernetes.io/restartedAt: "2026-07-21T13:30:00Z"
|
||||||
spec:
|
spec:
|
||||||
replicas: 1
|
replicas: 1
|
||||||
selector:
|
selector:
|
||||||
@@ -115,7 +119,14 @@ spec:
|
|||||||
kubernetes.io/arch: arm64
|
kubernetes.io/arch: arm64
|
||||||
containers:
|
containers:
|
||||||
- name: gitea-runner
|
- name: gitea-runner
|
||||||
image: vegardit/gitea-act-runner:latest
|
image: vegardit/gitea-act-runner:v0.12.0
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
memory: "512Mi"
|
||||||
|
cpu: "250m"
|
||||||
|
limits:
|
||||||
|
memory: "1Gi"
|
||||||
|
cpu: "500m"
|
||||||
env:
|
env:
|
||||||
- name: GITEA_INSTANCE_URL
|
- name: GITEA_INSTANCE_URL
|
||||||
valueFrom:
|
valueFrom:
|
||||||
|
|||||||
@@ -58,9 +58,9 @@ spec:
|
|||||||
image: ghcr.io/home-assistant/home-assistant:stable
|
image: ghcr.io/home-assistant/home-assistant:stable
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
memory: "256Mi"
|
|
||||||
limits:
|
|
||||||
memory: "512Mi"
|
memory: "512Mi"
|
||||||
|
limits:
|
||||||
|
memory: "1Gi"
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 8123
|
- containerPort: 8123
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
|
|||||||
@@ -11,18 +11,30 @@ metadata:
|
|||||||
data:
|
data:
|
||||||
config.yaml: |
|
config.yaml: |
|
||||||
model_list:
|
model_list:
|
||||||
- model_name: gpt-5-mini
|
- model_name: gpt-5.6-luna
|
||||||
litellm_params:
|
litellm_params:
|
||||||
model: openai/gpt-5-mini-2025-08-07
|
model: openai/gpt-5.6-luna
|
||||||
api_key: "os.environ/OPENAI_API_KEY"
|
api_key: "os.environ/OPENAI_API_KEY"
|
||||||
- model_name: claude-4.5-haiku
|
- model_name: claude-haiku-4.5
|
||||||
litellm_params:
|
litellm_params:
|
||||||
model: "anthropic/claude-haiku-4-5-20251001"
|
model: "anthropic/claude-haiku-4-5-20251001"
|
||||||
api_key: "os.environ/ANTHROPIC_API_KEY"
|
api_key: "os.environ/ANTHROPIC_API_KEY"
|
||||||
|
- model_name: claude-sonnet-5
|
||||||
|
litellm_params:
|
||||||
|
model: "anthropic/claude-sonnet-5"
|
||||||
|
api_key: "os.environ/ANTHROPIC_API_KEY"
|
||||||
- model_name: gemini-3-flash
|
- model_name: gemini-3-flash
|
||||||
litellm_params:
|
litellm_params:
|
||||||
model: gemini/gemini-3-flash-preview
|
model: gemini/gemini-3-flash-preview
|
||||||
api_key: "os.environ/GEMINI_API_KEY"
|
api_key: "os.environ/GEMINI_API_KEY"
|
||||||
|
- model_name: tencent/hy3:free
|
||||||
|
litellm_params:
|
||||||
|
model: openrouter/tencent/hy3:free
|
||||||
|
api_key: "os.environ/OPENROUTER_API_KEY"
|
||||||
|
- model_name: z-ai/glm-5.2
|
||||||
|
litellm_params:
|
||||||
|
model: openrouter/z-ai/glm-5.2
|
||||||
|
api_key: "os.environ/OPENROUTER_API_KEY"
|
||||||
- model_name: glm-4.7-flash
|
- model_name: glm-4.7-flash
|
||||||
litellm_params:
|
litellm_params:
|
||||||
model: ollama/glm-4.7-flash
|
model: ollama/glm-4.7-flash
|
||||||
@@ -100,6 +112,13 @@ spec:
|
|||||||
env:
|
env:
|
||||||
- name: STORE_MODEL_IN_DB
|
- name: STORE_MODEL_IN_DB
|
||||||
value: "True"
|
value: "True"
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
memory: "512Mi"
|
||||||
|
cpu: "250m"
|
||||||
|
limits:
|
||||||
|
memory: "2Gi"
|
||||||
|
cpu: "1000m"
|
||||||
volumes:
|
volumes:
|
||||||
- name: config-volume
|
- name: config-volume
|
||||||
configMap:
|
configMap:
|
||||||
|
|||||||
@@ -15,9 +15,10 @@ spec:
|
|||||||
labels:
|
labels:
|
||||||
app: prometheus
|
app: prometheus
|
||||||
spec:
|
spec:
|
||||||
# Prevent scheduling on Raspberry Pi due to resource requirements (512Mi-1Gi memory, 500m-1000m CPU)
|
# Target the nucbox (amd64, 24Gi RAM) which is the only node with enough memory for Prometheus.
|
||||||
nodeSelector:
|
nodeSelector:
|
||||||
hardware: high-memory
|
kubernetes.io/os: linux
|
||||||
|
kubernetes.io/arch: amd64
|
||||||
serviceAccountName: prometheus
|
serviceAccountName: prometheus
|
||||||
containers:
|
containers:
|
||||||
- name: prometheus
|
- name: prometheus
|
||||||
|
|||||||
@@ -54,6 +54,16 @@ spec:
|
|||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: myorg-assistant-secret
|
name: myorg-assistant-secret
|
||||||
key: LITELLM_API_KEY
|
key: LITELLM_API_KEY
|
||||||
|
- name: WEB_SECRET_KEY
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: myorg-assistant-secret
|
||||||
|
key: WEB_SECRET_KEY
|
||||||
|
- name: GIT_TOKEN
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: myorg-assistant-secret
|
||||||
|
key: GIT_TOKEN
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: myorg-data
|
- name: myorg-data
|
||||||
mountPath: /data/myorg
|
mountPath: /data/myorg
|
||||||
|
|||||||
@@ -54,6 +54,16 @@ spec:
|
|||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: myorg-assistant-secret
|
name: myorg-assistant-secret
|
||||||
key: LITELLM_API_KEY
|
key: LITELLM_API_KEY
|
||||||
|
- name: WEB_SECRET_KEY
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: myorg-assistant-secret
|
||||||
|
key: WEB_SECRET_KEY
|
||||||
|
- name: GIT_TOKEN
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: myorg-assistant-secret
|
||||||
|
key: GIT_TOKEN
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: myorg-data
|
- name: myorg-data
|
||||||
mountPath: /data/myorg
|
mountPath: /data/myorg
|
||||||
|
|||||||
@@ -24,6 +24,43 @@ spec:
|
|||||||
restartPolicy: OnFailure
|
restartPolicy: OnFailure
|
||||||
imagePullSecrets:
|
imagePullSecrets:
|
||||||
- name: gitea-registry
|
- name: gitea-registry
|
||||||
|
initContainers:
|
||||||
|
- name: git-clone
|
||||||
|
image: alpine/git:latest
|
||||||
|
command:
|
||||||
|
- sh
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
if [ ! -d /data/myorg/.git ]; then
|
||||||
|
echo "Cloning repository..."
|
||||||
|
git clone ${GIT_REPO_URL} /data/myorg
|
||||||
|
cd /data/myorg
|
||||||
|
git config user.name "${GIT_USERNAME}"
|
||||||
|
git config user.email "${GIT_USERNAME}@rogi.casa"
|
||||||
|
git config credential.helper store
|
||||||
|
echo "https://${GIT_USERNAME}:${GIT_TOKEN}@git.rogi.casa" > ~/.git-credentials
|
||||||
|
else
|
||||||
|
echo "Repository already exists, skipping clone."
|
||||||
|
fi
|
||||||
|
env:
|
||||||
|
- name: GIT_REPO_URL
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: myorg-assistant-secret
|
||||||
|
key: GIT_REPO_URL
|
||||||
|
- name: GIT_USERNAME
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: myorg-assistant-secret
|
||||||
|
key: GIT_USERNAME
|
||||||
|
- name: GIT_TOKEN
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: myorg-assistant-secret
|
||||||
|
key: GIT_TOKEN
|
||||||
|
volumeMounts:
|
||||||
|
- name: myorg-data
|
||||||
|
mountPath: /data/myorg
|
||||||
containers:
|
containers:
|
||||||
- name: git-sync
|
- name: git-sync
|
||||||
image: git.rogi.casa/roger/myorg-assistant/myorg-assistant:fcf79bf
|
image: git.rogi.casa/roger/myorg-assistant/myorg-assistant:fcf79bf
|
||||||
@@ -69,6 +106,11 @@ spec:
|
|||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: myorg-assistant-secret
|
name: myorg-assistant-secret
|
||||||
key: LITELLM_API_KEY
|
key: LITELLM_API_KEY
|
||||||
|
- name: WEB_SECRET_KEY
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: myorg-assistant-secret
|
||||||
|
key: WEB_SECRET_KEY
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: myorg-data
|
- name: myorg-data
|
||||||
mountPath: /data/myorg
|
mountPath: /data/myorg
|
||||||
|
|||||||
@@ -61,6 +61,16 @@ spec:
|
|||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: myorg-assistant-secret
|
name: myorg-assistant-secret
|
||||||
key: LITELLM_API_KEY
|
key: LITELLM_API_KEY
|
||||||
|
- name: WEB_SECRET_KEY
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: myorg-assistant-secret
|
||||||
|
key: WEB_SECRET_KEY
|
||||||
|
- name: GIT_TOKEN
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: myorg-assistant-secret
|
||||||
|
key: GIT_TOKEN
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: myorg-data
|
- name: myorg-data
|
||||||
mountPath: /data/myorg
|
mountPath: /data/myorg
|
||||||
|
|||||||
@@ -54,6 +54,16 @@ spec:
|
|||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: myorg-assistant-secret
|
name: myorg-assistant-secret
|
||||||
key: LITELLM_API_KEY
|
key: LITELLM_API_KEY
|
||||||
|
- name: WEB_SECRET_KEY
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: myorg-assistant-secret
|
||||||
|
key: WEB_SECRET_KEY
|
||||||
|
- name: GIT_TOKEN
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: myorg-assistant-secret
|
||||||
|
key: GIT_TOKEN
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: myorg-data
|
- name: myorg-data
|
||||||
mountPath: /data/myorg
|
mountPath: /data/myorg
|
||||||
|
|||||||
@@ -53,15 +53,17 @@ spec:
|
|||||||
value: http
|
value: http
|
||||||
- name: N8N_PORT
|
- name: N8N_PORT
|
||||||
value: "5678"
|
value: "5678"
|
||||||
|
- name: NODE_OPTIONS
|
||||||
|
value: "--max-old-space-size=768"
|
||||||
image: n8nio/n8n
|
image: n8nio/n8n
|
||||||
name: n8n
|
name: n8n
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 5678
|
- containerPort: 5678
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
memory: "250Mi"
|
memory: "512Mi"
|
||||||
limits:
|
limits:
|
||||||
memory: "500Mi"
|
memory: "1Gi"
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- mountPath: /home/node/.n8n
|
- mountPath: /home/node/.n8n
|
||||||
name: n8n-claim0
|
name: n8n-claim0
|
||||||
|
|||||||
@@ -9,10 +9,10 @@ spec:
|
|||||||
ingressClassName: traefik
|
ingressClassName: traefik
|
||||||
tls:
|
tls:
|
||||||
- hosts:
|
- hosts:
|
||||||
- openai.rogi.casa
|
- ai.rogi.casa
|
||||||
secretName: openwebui-tls
|
secretName: openwebui-tls
|
||||||
rules:
|
rules:
|
||||||
- host: openai.rogi.casa
|
- host: ai.rogi.casa
|
||||||
http:
|
http:
|
||||||
paths:
|
paths:
|
||||||
- path: /
|
- path: /
|
||||||
|
|||||||
@@ -59,6 +59,16 @@ data:
|
|||||||
cron:
|
cron:
|
||||||
wrap_response: false
|
wrap_response: false
|
||||||
|
|
||||||
|
discord:
|
||||||
|
allowed_channels: '1470909384162017444' # DISCORD_HOME_CHANNEL
|
||||||
|
free_response_channels: '1470909384162017444' # no @mention needed here
|
||||||
|
# Per-platform gateway auth. Paired with GATEWAY_ALLOW_ALL_USERS=true in
|
||||||
|
# the env (secret.yaml), this lets the bot reply to inbound DMs and
|
||||||
|
# group messages from anyone. Tighten later by switching to
|
||||||
|
# DISCORD_ALLOWED_USERS=<id> in the secret and dropping these two lines.
|
||||||
|
dm_policy: open
|
||||||
|
group_policy: open
|
||||||
|
|
||||||
memory:
|
memory:
|
||||||
memory_enabled: true
|
memory_enabled: true
|
||||||
user_profile_enabled: true
|
user_profile_enabled: true
|
||||||
|
|||||||
@@ -125,6 +125,13 @@ spec:
|
|||||||
env:
|
env:
|
||||||
- name: HERMES_HOME
|
- name: HERMES_HOME
|
||||||
value: /opt/data
|
value: /opt/data
|
||||||
|
# Hermes' file-write tool refuses any path outside HERMES_WRITE_SAFE_ROOT.
|
||||||
|
# When unset it defaults to HERMES_HOME (/opt/data), which blocks the
|
||||||
|
# agent's only GitOps remediation path (editing manifests under
|
||||||
|
# /workspace/k3s-cluster). Whitelist the whole filesystem — consistent
|
||||||
|
# with yolo:true, approvals.mode:off, and the agent having no k8s RBAC.
|
||||||
|
- name: HERMES_WRITE_SAFE_ROOT
|
||||||
|
value: "/"
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: data
|
- name: data
|
||||||
mountPath: /opt/data
|
mountPath: /opt/data
|
||||||
|
|||||||
Reference in New Issue
Block a user