Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4eed105571 |
@@ -56,6 +56,43 @@ curl -s -o /dev/null -w "z hasłem: %{http_code}\n" -u astrololo:'<hasło>' http
|
|||||||
```
|
```
|
||||||
Oczekiwane: **401** bez hasła, **200** z hasłem. `/health` zostaje publiczny (sondy k8s).
|
Oczekiwane: **401** bez hasła, **200** z hasłem. `/health` zostaje publiczny (sondy k8s).
|
||||||
|
|
||||||
|
## Klucze do modeli w chmurze — sekret `astrololo-llm` (opcjonalny)
|
||||||
|
|
||||||
|
Domyślnie działa **model lokalny** i nic nie opuszcza sieci. Żeby móc wybrać w UI
|
||||||
|
OpenAI lub Anthropic, potrzebne są ich klucze. Ten sekret jest **opcjonalny**
|
||||||
|
(`optional: true`) — bez niego pody startują normalnie, tylko chmura jest niedostępna.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
read -rs -p "OPENAI_API_KEY (Enter = pomiń): " OPENAI_KEY; echo
|
||||||
|
read -rs -p "ANTHROPIC_API_KEY (Enter = pomiń): " ANTHROPIC_KEY; echo
|
||||||
|
|
||||||
|
kubectl -n astrololo create secret generic astrololo-llm \
|
||||||
|
--from-literal=OPENAI_API_KEY="$OPENAI_KEY" \
|
||||||
|
--from-literal=ANTHROPIC_API_KEY="$ANTHROPIC_KEY"
|
||||||
|
|
||||||
|
unset OPENAI_KEY ANTHROPIC_KEY
|
||||||
|
kubectl -n astrololo rollout restart deploy/logic # klucze wstrzykują się przy starcie
|
||||||
|
```
|
||||||
|
|
||||||
|
Podmiana pojedynczego klucza (bez kasowania drugiego):
|
||||||
|
```bash
|
||||||
|
kubectl -n astrololo create secret generic astrololo-llm \
|
||||||
|
--from-literal=OPENAI_API_KEY="$(kubectl -n astrololo get secret astrololo-llm \
|
||||||
|
-o jsonpath='{.data.OPENAI_API_KEY}' | base64 -d)" \
|
||||||
|
--from-literal=ANTHROPIC_API_KEY='NOWY-KLUCZ' \
|
||||||
|
--dry-run=client -o yaml | kubectl apply -f -
|
||||||
|
kubectl -n astrololo rollout restart deploy/logic
|
||||||
|
```
|
||||||
|
|
||||||
|
**Adres modelu lokalnego** ustawia `LOCAL_BASE_URL` w `logic.yaml` — dopasuj do miejsca,
|
||||||
|
gdzie faktycznie stoi Ollama/vLLM. Konfiguracja jest **per dostawca**
|
||||||
|
(`LOCAL_*`, `OPENAI_*`, `ANTHROPIC_*`), więc ustawienia lokalnego modelu nie przejmują
|
||||||
|
żądań do chmury.
|
||||||
|
|
||||||
|
> Wybór dostawcy w chmurze oznacza, że **oryginalne opisy z baz opuszczają naszą sieć**.
|
||||||
|
> Prompt można obejrzeć przed wysłaniem. Warto zawnioskować u dostawcy o Zero Data
|
||||||
|
> Retention — patrz LOG-32.
|
||||||
|
|
||||||
## Czego to nie załatwia
|
## Czego to nie załatwia
|
||||||
- **Brak TLS** — Basic Auth idzie po sieci w postaci łatwej do podsłuchania. Przy
|
- **Brak TLS** — Basic Auth idzie po sieci w postaci łatwej do podsłuchania. Przy
|
||||||
niezaufanej sieci potrzebny ingress z certyfikatem.
|
niezaufanej sieci potrzebny ingress z certyfikatem.
|
||||||
|
|||||||
@@ -9,6 +9,6 @@ images:
|
|||||||
- name: gitea.czernobog.pl/gitea/astrololo-data
|
- name: gitea.czernobog.pl/gitea/astrololo-data
|
||||||
newTag: 752f477a
|
newTag: 752f477a
|
||||||
- name: gitea.czernobog.pl/gitea/astrololo-logic
|
- name: gitea.czernobog.pl/gitea/astrololo-logic
|
||||||
newTag: 64d1afc7
|
newTag: 4ef90b30
|
||||||
- name: gitea.czernobog.pl/gitea/astrololo-presentation
|
- name: gitea.czernobog.pl/gitea/astrololo-presentation
|
||||||
newTag: 64d1afc7
|
newTag: 4ef90b30
|
||||||
|
|||||||
@@ -26,6 +26,30 @@ spec:
|
|||||||
- name: INTERNAL_TOKEN
|
- name: INTERNAL_TOKEN
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef: { name: astrololo-auth, key: INTERNAL_TOKEN }
|
secretKeyRef: { name: astrololo-auth, key: INTERNAL_TOKEN }
|
||||||
|
|
||||||
|
# --- Model językowy (LOG-31) ---
|
||||||
|
# Domyślnie LOKALNY: prompt niesie oryginalne opisy z baz, więc nic nie
|
||||||
|
# opuszcza sieci. Dostawcę można przełączyć w UI przy pojedynczym żądaniu.
|
||||||
|
- name: LLM_PROVIDER
|
||||||
|
value: "local"
|
||||||
|
- name: LOCAL_BASE_URL
|
||||||
|
value: "http://ollama.ollama.svc.cluster.local:11434/v1"
|
||||||
|
- name: LOCAL_MODEL
|
||||||
|
value: "llama3.1:8b"
|
||||||
|
- name: LLM_TIMEOUT
|
||||||
|
value: "180" # dłuższe horoskopy potrafią trwać
|
||||||
|
- name: LLM_MAX_TOKENS
|
||||||
|
value: "2000"
|
||||||
|
|
||||||
|
# Klucze do chmury — OPCJONALNE (optional: true), bo to funkcja, nie
|
||||||
|
# zabezpieczenie: bez sekretu pody startują normalnie i działa model
|
||||||
|
# lokalny. Wybór chmury w UI oznacza, że treść baz OPUSZCZA naszą sieć.
|
||||||
|
- name: OPENAI_API_KEY
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef: { name: astrololo-llm, key: OPENAI_API_KEY, optional: true }
|
||||||
|
- name: ANTHROPIC_API_KEY
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef: { name: astrololo-llm, key: ANTHROPIC_API_KEY, optional: true }
|
||||||
resources:
|
resources:
|
||||||
requests: { cpu: "100m", memory: "128Mi" }
|
requests: { cpu: "100m", memory: "128Mi" }
|
||||||
limits: { cpu: "500m", memory: "512Mi" }
|
limits: { cpu: "500m", memory: "512Mi" }
|
||||||
|
|||||||
Reference in New Issue
Block a user