Namespace nex: Brücke zu appsrv08, Zugang für nex-admin, Pull-Secret
ci / test (push) Failing after 22s
ci / test (push) Failing after 22s
Vorbereitung für Agenten im Cluster (nex-Spec 2026-10-19, D259/D263/D265): Services ohne Selector auf die Host-Ports von appsrv08, ServiceAccount mit Role nur für den Namespace nex, Pull-Secret aus einer Datei auf ops. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
02adb2f4b2
commit
31f6435c2f
@@ -10,6 +10,7 @@ Ausgerollt von ops mit `kubectl` (Rolle `k3s-apps`, Playbook `playbooks/k3s.yml`
|
||||
| `nex-speech/` | NEX-Sprachdienste auf gpu-pve52 (Playbook `playbooks/nex-speech-k3s.yml`) |
|
||||
| `nex-searxng/` | NEX-Websuche SearXNG, NodePort 30880 (Playbook `playbooks/nex-searxng-k3s.yml`), Einstellungen aus dem nex-Repo |
|
||||
| `portainer/` | Portainer CE 2.45.1 auf der Dienst-VM k3s, Datenbank von appsrv08 übernommen (Playbook `playbooks/portainer-k3s.yml` mit Rollback BE→CE), NodePort 30779 |
|
||||
| `nex/` | Namespace nex für Agenten im Cluster: Brücke zu den NEX-Diensten auf appsrv08 (Services ohne Selector), Zugang für nex-admin (ServiceAccount, Role), Pull-Secret Gitea (Playbook `playbooks/nex-k3s.yml`); nex-Spec 2026-10-19 |
|
||||
| `rustdesk/` | RustDesk-Server hbbs/hbbr, Service LoadBalancer 21115–21119 auf jeder Knoten-Adresse (Playbook `playbooks/rustdesk-k3s.yml`), Schlüssel im Secret `rustdesk-keys` |
|
||||
|
||||
Portainer: Umgebung „Kubernetes → Agent“, Adresse `<IP eines Knotens>:30778`.
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
# Zugang von nex-admin (läuft auf appsrv08) zum Namespace nex: Agenten als Deployment/PVC/Secret/Service anlegen,
|
||||
# exec, Logs, Skalieren (nex-Spec 2026-10-19 Cluster-Agenten, D265). Kein cluster-admin, nur dieser Namespace.
|
||||
# Token: Secret nex-admin-token (Typ service-account-token, dauerhaft); playbooks/nex-k3s.yml legt es als Datei auf
|
||||
# ops ab (/root/.config/knaster/nex-admin-k8s.token) – von dort in die Stack-Variable NEX_ADMIN_K8S_TOKEN.
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: nex-admin
|
||||
namespace: nex
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: nex-admin
|
||||
namespace: nex
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: [pods, pods/log]
|
||||
verbs: [get, list, watch, create, delete]
|
||||
- apiGroups: [""]
|
||||
resources: [pods/exec]
|
||||
verbs: [create, get]
|
||||
- apiGroups: [""]
|
||||
resources: [services, persistentvolumeclaims, secrets]
|
||||
verbs: [get, list, create, update, patch, delete]
|
||||
- apiGroups: [""]
|
||||
resources: [endpoints, events]
|
||||
verbs: [get, list]
|
||||
- apiGroups: [apps]
|
||||
resources: [deployments, deployments/scale]
|
||||
verbs: [get, list, watch, create, update, patch, delete]
|
||||
- apiGroups: [metrics.k8s.io]
|
||||
resources: [pods]
|
||||
verbs: [get, list]
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: nex-admin
|
||||
namespace: nex
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: nex-admin
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: nex-admin
|
||||
namespace: nex
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: nex-admin-token
|
||||
namespace: nex
|
||||
annotations:
|
||||
kubernetes.io/service-account.name: nex-admin
|
||||
type: kubernetes.io/service-account-token
|
||||
@@ -0,0 +1,87 @@
|
||||
# Brücke zu den NEX-Diensten auf appsrv08 (nex-Spec 2026-10-19 Cluster-Agenten, D259).
|
||||
# Die Agenten-Pods im Namespace nex sprechen dieselben Namen wie die Container im Docker-Netz llm-internal auf
|
||||
# appsrv08 (nex-router, nex-know, nex-access, grp-mcp-intern); hier zeigen Services ohne Selector mit festen
|
||||
# Endpoints auf die Host-Ports von appsrv08 (nur auf 192.168.100.29 veröffentlicht, Stacks nex und grp-mcp-intern).
|
||||
# Zieht ein Dienst in den Cluster (Weg 3), ersetzt sein echter Service den Eintrag – der Name bleibt.
|
||||
# LiteLLM bleibt ohne Brücke: Agenten sprechen nur den Router, der Router LiteLLM (nex AGENTS.md: kein Pfad an
|
||||
# LiteLLM vorbei, und kein zusätzlicher Host-Port dafür).
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: nex-router
|
||||
namespace: nex
|
||||
labels: {knaster.app: nex-bridge}
|
||||
spec:
|
||||
ports:
|
||||
- {name: http, port: 4100, targetPort: 4100}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Endpoints
|
||||
metadata:
|
||||
name: nex-router
|
||||
namespace: nex
|
||||
labels: {knaster.app: nex-bridge}
|
||||
subsets:
|
||||
- addresses: [{ip: 192.168.100.29}]
|
||||
ports: [{name: http, port: 4100}]
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: nex-know
|
||||
namespace: nex
|
||||
labels: {knaster.app: nex-bridge}
|
||||
spec:
|
||||
ports:
|
||||
- {name: http, port: 4200, targetPort: 4200}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Endpoints
|
||||
metadata:
|
||||
name: nex-know
|
||||
namespace: nex
|
||||
labels: {knaster.app: nex-bridge}
|
||||
subsets:
|
||||
- addresses: [{ip: 192.168.100.29}]
|
||||
ports: [{name: http, port: 4200}]
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: nex-access
|
||||
namespace: nex
|
||||
labels: {knaster.app: nex-bridge}
|
||||
spec:
|
||||
ports:
|
||||
- {name: http, port: 4300, targetPort: 4300}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Endpoints
|
||||
metadata:
|
||||
name: nex-access
|
||||
namespace: nex
|
||||
labels: {knaster.app: nex-bridge}
|
||||
subsets:
|
||||
- addresses: [{ip: 192.168.100.29}]
|
||||
ports: [{name: http, port: 4300}]
|
||||
---
|
||||
# GRP-MCP (Rolle projektleitung): Stack grp-mcp-intern auf appsrv08, Dienst gateway, Container-Port 8790
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: grp-mcp-intern
|
||||
namespace: nex
|
||||
labels: {knaster.app: nex-bridge}
|
||||
spec:
|
||||
ports:
|
||||
- {name: http, port: 8790, targetPort: 8790}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Endpoints
|
||||
metadata:
|
||||
name: grp-mcp-intern
|
||||
namespace: nex
|
||||
labels: {knaster.app: nex-bridge}
|
||||
subsets:
|
||||
- addresses: [{ip: 192.168.100.29}]
|
||||
ports: [{name: http, port: 8790}]
|
||||
Reference in New Issue
Block a user