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
@@ -0,0 +1,86 @@
|
||||
# Namespace nex für Agenten im Cluster (nex-Spec 2026-10-19 Cluster-Agenten): Brücke zu appsrv08 (D259), Zugang für
|
||||
# nex-admin (D265), Pull-Secret für die Gitea-Registry (D263). Läuft auf ops: ansible-playbook playbooks/nex-k3s.yml
|
||||
#
|
||||
# Voraussetzung für das Pull-Secret: /root/.config/knaster/gitea-registry.env mit REGISTRY_USER=… und
|
||||
# REGISTRY_TOKEN=… (Gitea-Token mit read:package). Fehlt die Datei, wird dieser Schritt übersprungen.
|
||||
# Ausgabe: Token-Datei für nex-admin (nur Pfad), CA des Clusters als base64 (für NEX_ADMIN_K8S_CA_B64) und API-Adresse.
|
||||
- name: Namespace nex für Cluster-Agenten
|
||||
hosts: localhost
|
||||
connection: local
|
||||
gather_facts: false
|
||||
vars:
|
||||
manifests: "{{ playbook_dir }}/../../../../deploy/k8s/nex"
|
||||
registry_env: /root/.config/knaster/gitea-registry.env
|
||||
token_file: /root/.config/knaster/nex-admin-k8s.token
|
||||
api_url: "https://{{ hostvars['k3s'].ansible_host }}:6443"
|
||||
tasks:
|
||||
- name: Namespace nex
|
||||
ansible.builtin.command: kubectl apply -f {{ playbook_dir }}/../../../../deploy/k8s/nex-speech/namespace.yaml
|
||||
register: ns
|
||||
changed_when: "'created' in ns.stdout"
|
||||
|
||||
- name: Brücke zu appsrv08 (Services ohne Selector + Endpoints)
|
||||
ansible.builtin.command: kubectl apply -f {{ manifests }}/bridge.yaml
|
||||
register: bridge
|
||||
changed_when: "'configured' in bridge.stdout or 'created' in bridge.stdout"
|
||||
|
||||
- name: Zugang für nex-admin (ServiceAccount, Role, RoleBinding, Token-Secret)
|
||||
ansible.builtin.command: kubectl apply -f {{ manifests }}/admin-access.yaml
|
||||
register: access
|
||||
changed_when: "'configured' in access.stdout or 'created' in access.stdout"
|
||||
|
||||
- name: Token des ServiceAccounts lesen (Secret wird vom Controller befüllt)
|
||||
ansible.builtin.shell: >
|
||||
set -o pipefail;
|
||||
kubectl -n nex get secret nex-admin-token -o go-template='{{ "{{" }}.data.token{{ "}}" }}' | base64 -d
|
||||
args: {executable: /bin/bash}
|
||||
register: token
|
||||
until: token.stdout | length > 0
|
||||
retries: 10
|
||||
delay: 2
|
||||
changed_when: false
|
||||
no_log: true
|
||||
|
||||
- name: Token als Datei auf ops ablegen (600, nie ausgeben)
|
||||
ansible.builtin.copy:
|
||||
content: "{{ token.stdout }}"
|
||||
dest: "{{ token_file }}"
|
||||
mode: "0600"
|
||||
no_log: true
|
||||
|
||||
- name: Registry-Zugang vorhanden?
|
||||
ansible.builtin.stat:
|
||||
path: "{{ registry_env }}"
|
||||
register: reg
|
||||
|
||||
- name: Pull-Secret gitea-registry (aus {{ registry_env }})
|
||||
ansible.builtin.shell: >
|
||||
set -o pipefail; set -a; . {{ registry_env }}; set +a;
|
||||
kubectl -n nex create secret docker-registry gitea-registry --docker-server=gitea.mindboost.team
|
||||
--docker-username="$REGISTRY_USER" --docker-password="$REGISTRY_TOKEN" --dry-run=client -o yaml | kubectl apply -f -
|
||||
args: {executable: /bin/bash}
|
||||
register: pull
|
||||
changed_when: "'configured' in pull.stdout or 'created' in pull.stdout"
|
||||
when: reg.stat.exists
|
||||
no_log: true
|
||||
|
||||
- name: CA des Clusters (base64, eine Zeile)
|
||||
ansible.builtin.command: kubectl config view --raw --minify -o jsonpath='{.clusters[0].cluster.certificate-authority-data}'
|
||||
register: ca
|
||||
changed_when: false
|
||||
|
||||
- name: Brücke prüfen (Pod im Namespace nex löst die Namen auf)
|
||||
ansible.builtin.shell: >
|
||||
kubectl -n nex run bridge-check --rm -i --restart=Never --image=alpine:3.20 --
|
||||
sh -c 'for h in nex-router nex-know nex-access grp-mcp-intern; do nslookup $h >/dev/null 2>&1 && echo "$h dns ok" || echo "$h dns FEHLT"; done'
|
||||
register: check
|
||||
changed_when: false
|
||||
|
||||
- name: Ergebnis
|
||||
ansible.builtin.debug:
|
||||
msg:
|
||||
- "Token für nex-admin: {{ token_file }} (NEX_ADMIN_K8S_TOKEN)"
|
||||
- "NEX_ADMIN_K8S_URL={{ api_url }}"
|
||||
- "NEX_ADMIN_K8S_CA_B64={{ ca.stdout }}"
|
||||
- "Pull-Secret gitea-registry: {{ 'angelegt/aktuell' if reg.stat.exists else 'übersprungen (' + registry_env + ' fehlt)' }}"
|
||||
- "{{ check.stdout_lines }}"
|
||||
Reference in New Issue
Block a user