Selbst gehostetes Claude Managed Agents aktualisieren
Aktualisiere eine selbst gehostete Claude-Managed-Agents-Bereitstellung auf Kubernetes oder Docker Compose und führe ein Rollback durch, wenn das neue Release nicht funktioniert.
Diese Seite zeigt, wie du eine Bereitstellung auf Kubernetes oder Docker Compose aktualisierst und wie du ein Rollback durchführst. Auf Kubernetes hängt die Ausfallzeit davon ab, wie weit das Upgrade reicht:
| Upgrade | Zuerst die Datenbank sichern | Ausfallzeit auf Kubernetes |
|---|---|---|
| Patch: Nur die dritte Zahl ändert sich | Nein. Das Datenbankschema bleibt gleich. | Keine |
Minor: Die zweite Zahl steigt um eins, etwa von 1.2.0 auf 1.3.0 | Ja. Das Schema ändert sich. | Keine, es sei denn, ein Abschnitt in CHANGELOG.md besagt, dass die Server gestoppt werden müssen |
Überspringt ein Minor-Release, etwa von 1.1.0 auf 1.3.0, oder ändert die erste Zahl | Ja. Das Schema ändert sich. | Ab dem Moment, in dem du die alten Server stoppst, bis die neuen bereit sind |
Ein Docker-Compose-Stack ist bei jeder Art von Upgrade während des Neustarts nicht verfügbar.
Vor dem Upgrade
Lies den Abschnitt des neuen Releases in CHANGELOG.md, ganz oben im entpackten Archiv. Er beginnt mit den Upgrade-Schritten, die speziell für dieses Release gelten. Wenn du Releases überspringst, befolge jeden Abschnitt, der neuer als deine Version ist, beginnend mit dem ältesten.
Geh dann Zu prüfende Einstellungen und Pfade durch.
Ein Minor- oder Major-Upgrade beinhaltet ein Datenbank-Backup. Der Dump enthält jede Unterhaltung im Klartext, daher verschlüsseln die Befehle auf dieser Seite ihn mit dem age-Verschlüsselungstool. Erstelle einmalig ein Schlüsselpaar und bewahre den privaten Schlüssel, cma-backup.agekey, getrennt von den Backups auf:
age-keygen -o cma-backup.agekey
age-keygen -y cma-backup.agekey > cma-backup.agepubUpgrade auf Kubernetes
Die kubectl-Befehle auf dieser Seite lesen den Namen des Deployments des Servers aus einer Shell-Variablen. Führe diese zwei Zeilen in jedem Terminal aus, in dem du die Befehle ausführst. Die erste Zeile ermittelt den Namen, und die zweite gibt ihn aus:
server=$(kubectl -n cma-server get deployment -l anthropic.com/role=server -o jsonpath='{.items[*].metadata.name}')
echo "$server"Wenn die zweite Zeile cma-server ausgibt, fahre fort. Wenn ein anderer Name ausgegeben wird, lies vor dem Upgrade die Namen deiner Objekte. Wenn nichts ausgegeben wird, prüfe, ob kubectl auf den richtigen Cluster zeigt, und führe die zwei Zeilen erneut aus.
Die neuen Images bauen und pushen
Entpacke das neue Archiv. Baue und pushe seine drei Images unter der neuen Version, wie in Die Images bauen und pushen beschrieben. Wenn du das Egress-Gateway betreibst, baue und pushe auch dessen Image.
Wenn du ein eigenes Sandbox-Image baust, baue und pushe es ebenfalls neu, unter der neuen Version. Vergleiche sein Dockerfile mit
kubernetes/sandbox/Dockerfileim neuen Archiv und lies nach, was ein eigenes Image braucht.Die neue Version in deinen Values-Dateien setzen
Wenn eine Values-Datei
image.tagsetzt, ändere den Wert auf die neue Version.Alle Server stoppen, wenn das Upgrade es erfordert
Führe diesen Schritt nur in diesen Fällen aus:
- Ein Server, den du betreibst, liegt mehr als ein Minor-Release hinter dem neuen Release zurück.
- Die erste Zahl, die Major-Version, steigt.
- Ein Abschnitt in
CHANGELOG.md, der neuer ist als das Release, das du betreibst, besagt, dass die Server gestoppt werden müssen.
Von diesem Schritt an, bis die neuen Server bereit sind, können Clients die Bereitstellung nicht erreichen. Plane daher ein Wartungsfenster ein.
kubectl -n cma-server scale deployment/$server --replicas=0 kubectl -n cma-server wait --for=delete pod -l anthropic.com/role=server --timeout=90sDie Datenbank sichern
Tu dies vor einem Minor- oder Major-Upgrade oder wenn du die Server gestoppt hast. Wenn das alte Release nicht mit dem geänderten Schema laufen kann, ist dieses Backup der einzige Weg zurück.
Verwende
pg_dumpaus derselben Hauptversion von PostgreSQL wie dein Datenbankserver. Verwende für<role>und<database>die Werteuserunddbnameausdatabase.urlincma-server-values.yaml.pg_dumpfragt nach dem Passwort der Rolle.set -o pipefail PGSSLMODE=require pg_dump -h <database-host> -U <role> -d <database> -Fc \ | age -r "$(cat cma-backup.agepub)" -o cma_server-<old-version>.dump.ageWenn einer der beiden Befehle einen Fehler ausgibt, ist die zurückgelassene Datei kein Backup. Behebe die Ursache und führe den Befehl erneut aus, bevor du fortfährst.
Wenn die Server laufen, enthält das Backup nur, was Clients vor Beginn des Dumps geschrieben haben.
Erst den Server, dann die Sandboxes aktualisieren
Führe diese Befehle im obersten Verzeichnis des neuen Archivs aus und verwende dabei die Values-Dateien deiner Installation:
helm upgrade cma-server kubernetes/server/chart --namespace cma-server -f cma-server-values.yaml --wait helm upgrade cma kubernetes/chart --namespace cma -f cma-values.yaml --waitWenn du mehr als eine Umgebung betreibst, führe den zweiten Befehl für jedes Sandbox-Release aus, mit dem Namen, dem Namespace und der Values-Datei des jeweiligen Releases.
Wenn du die Server gestoppt hast, migriert der erste Befehl das Schema, stellt die Serveranzahl wieder her und kehrt zurück, sobald die neuen Server bereit sind.
Bei laufenden Servern startet Helm jeden neuen Server, bevor es einen alten stoppt, sodass die Anzahl der bereiten Server nie sinkt. Bei einem Minor-Upgrade ändert der erste Befehl das Schema, während die alten Server weiterhin Anfragen bedienen, und ersetzt sie danach. Ein offener Event-Stream auf einem Server, der ersetzt wird, endet sauber, sodass ein Client, der einem Stream folgt, sich neu verbinden muss.
Wenn ein Befehl fehlschlägt, lies Wenn das Upgrade fehlschlägt.
Upgrade auf Docker Compose
Die Schritte sind für jede Art von Upgrade gleich. Führe jeden docker compose-Befehl im Compose-Verzeichnis eines Release aus, also in dem Verzeichnis, das docker-compose.yml enthält. Im entpackten Archiv ist das das Verzeichnis compose. Verwende ein Terminal, in dem ANTHROPIC_BASE_URL, ANTHROPIC_API_KEY und ANTHROPIC_AUTH_TOKEN nicht gesetzt sind, denn Compose übergibt die Werte dieser Variablen aus der Shell an den Server.
Die Datenbank sichern
Tu dies vor einem Minor- oder Major-Upgrade im Compose-Verzeichnis des alten Release:
set -o pipefail docker compose exec -T postgres sh -c 'pg_dump -U "$POSTGRES_USER" -d "$POSTGRES_DB" -Fc' \ | age -r "$(cat cma-backup.agepub)" -o cma_server-<old-version>.dump.ageLass
$POSTGRES_USERund$POSTGRES_DBim Befehl unverändert. Der Text in einfachen Anführungszeichen läuft im Containerpostgres, der die Namen seiner Rolle und seiner Datenbank in diesen Variablen hält.Der Stack bedient während des Backups weiterhin Anfragen, daher fehlt im Dump, was Clients nach Beginn des Dumps schreiben. Wenn einer der beiden Befehle einen Fehler ausgibt, ist die zurückgelassene Datei kein Backup. Behebe die Ursache und führe den Befehl erneut aus, bevor du fortfährst.
Das neue Archiv entpacken
Lege das neue Archiv in ein Verzeichnis, in dem das neue Release bleiben kann, etwa das übergeordnete Verzeichnis des alten Release. Die Befehle entpacken das Archiv dort, und der neue Stack läuft aus den entpackten Dateien.
Wenn deine umask strenger als
022ist, führe zuerstumask 022aus. Führe dann Folgendes im Compose-Verzeichnis des alten Release aus. Schreibe anstelle von<directory>den vollständigen Pfad des Verzeichnisses, das das neue Archiv enthält. Schreibe anstelle von<archive>den Namen des Archivs ohne.tar.gz.releases="<directory>" tar -xzf "$releases/<archive>.tar.gz" -C "$releases" && cp .env compose.config.yaml "$releases/<archive>/compose/"Die zweite Zeile kopiert außerdem deine
.envundcompose.config.yamlin das entpackte Verzeichniscompose. Der alte Stack läuft während beider Zeilen weiter. Wenn eine Zeile einen Fehler ausgibt, behebe die Ursache und führe beide Zeilen erneut aus.Deine anderen Änderungen wiederholen
Nur
.envundcompose.config.yamlwerden übernommen. Nimm deine anderen Änderungen im Compose-Verzeichnis des neuen Release erneut vor:- Eine Datei, die du hinzugefügt hast: Kopiere sie.
- Eine mitgelieferte Datei, die du bearbeitet hast: Nimm dieselbe Bearbeitung in der Kopie des neuen Release vor. Kopiere die alte Datei nicht darüber, denn damit machst du die Änderungen des Release an der Datei rückgängig.
- Agent-Identität: Kopiere das Verzeichnis
agent-identitymitcp -a, mitsudo, wenn es root gehört, und bearbeite den Blockvolumes:vondocker-compose.ymlerneut. - Eine eigene Compose-Datei: Kopiere sie und prüfe ihre relativen Pfade.
Nimm dann die Docker-Compose-Änderungen unter Zu prüfende Einstellungen und Pfade vor.
Den alten Stack stoppen und den neuen starten
Führe diese Zeilen in dem Terminal aus, in dem du das Archiv entpackt hast, denn sie verwenden dessen Variable
$releases. Bleib im Compose-Verzeichnis des alten Release und schreibe denselben Namen anstelle von<archive>. Wenn duCOMPOSE_FILEfür den alten Stack exportiert hast, exportiere zuerst denselben Wert.ls "$releases/<archive>/compose/.env" && docker compose down cd "$releases/<archive>/compose" && docker compose up --build -dDie erste Zeile stoppt den alten Stack nur, wenn die
.envdes neuen Release vorhanden ist.docker compose downbehält die Datenbank bei. Füge kein-vhinzu, denn das löscht sie. Der neue Stack übernimmt die Datenbank, und seinmigrate-Container aktualisiert das Schema, bevor der Server startet.
Wenn ein Befehl fehlschlägt, lies Wenn das Upgrade fehlschlägt.
Wenn das Upgrade fehlschlägt
Finde vor einem Rollback die Ursache im Log:
- Kubernetes: Wenn der Migrations-Job fehlschlägt, wartet
helm upgradeeinige Minuten, während der Job es erneut versucht, und schlägt dann fehl. Führe während dieser Wartezeit in einem zweiten Terminalkubectl -n cma-server logs job/$server-migrateaus, mit$servergesetzt wie unter Upgrade auf Kubernetes. Kubernetes löscht das Log, wenn der Job keine weiteren Versuche mehr unternimmt. Wenn du es verpasst hast, führehelm upgradeerneut aus, wodurch der Job erneut startet. - Docker Compose: Die Ausgabe von
docker compose up --build -dzeigt möglicherweise nicht den Grund. Führedocker compose logsaus, um ihn zu finden.
| Was das Log zeigt | Was das bedeutet | Was zu tun ist |
|---|---|---|
Eine Zeile, die refusing to migrate: servers of another release are still running against this database enthält | Manche Upgrades erfordern, dass zuerst alle Server gestoppt werden, und ein Server des alten Releases läuft noch. Die Migration hat nichts geändert. | Stoppe alle Server wie unter Upgrade auf Kubernetes und führe helm upgrade erneut aus. Wenn ein Server nicht sauber heruntergefahren wurde, warte zuerst 20 Sekunden: Bis dahin zählt die Migration diesen Server noch als laufend. |
Eine Zeile, die cannot downgrade enthält, wenn du das alte Release erneut bereitstellst | Das alte Release kann nicht mit dem geänderten Schema laufen. | Stelle das Backup wieder her, wie unter Rollback beschrieben. |
| Ein anderer Fehler der Migration | Du musst kein Rollback durchführen. Auf Kubernetes bleiben die Server, wie sie waren, bis die Migration erfolgreich ist. | Behebe die Ursache und führe helm upgrade oder docker compose up --build -d erneut aus. |
Die Migration kann erfolgreich sein, während die neuen Server nicht bereit werden. Um die Ursache zu finden, lies das Log der Server:
- Kubernetes:
kubectl -n cma-server logs -l anthropic.com/role=server --prefix --tail=20 - Docker Compose:
docker compose logs cma-server
Auf Kubernetes nennt zum Beispiel eine Zeile, die has invalid keys enthält, eine Einstellung unter server.config, die das neue Release nicht akzeptiert. Behebe die Ursache und führe den Upgrade-Befehl erneut aus, bevor du eine Wiederherstellung in Betracht ziehst, denn bei einer Wiederherstellung gehen Daten verloren. Sobald sich auf Kubernetes das Schema geändert hat, bedient ein laufender Server des alten Releases weiterhin Anfragen, startet aber möglicherweise nicht erneut, wenn er stoppt.
Rollback
Die kubectl-Befehle in diesem Abschnitt verwenden die Variable $server aus Upgrade auf Kubernetes. Prüfe vor einem Rollback Wenn das Upgrade fehlschlägt. Führe das Rollback dann je nach Art des Upgrades durch:
- Nach einem Patch-Upgrade: Das alte Release erneut bereitstellen. Beide Releases verwenden dasselbe Schema.
- Nach einem Minor- oder Major-Upgrade: Öffne
CHANGELOG.mdim neuen Archiv. Lies den Abschnitt jedes Release, das nach dem Release erschienen ist, zu dem du zurückkehrst.- Wenn ein Abschnitt besagt, dass das alte Release nicht mit der migrierten Datenbank starten kann, stelle das Backup wieder her.
- Andernfalls stelle das alte Release erneut bereit. Wenn das mit
cannot downgradefehlschlägt, stelle das Backup wieder her.
Das alte Release erneut bereitstellen
- Kubernetes: Wechsle in das oberste Verzeichnis des alten Archivs. Führe die zwei
helm upgrade-Befehle aus Upgrade auf Kubernetes aus, mit den Values-Dateien, wie sie für dieses Release waren. Wenn du zum Beispiel für das UpgradeearlierNameshinzugefügt hast, entferne es wieder. Führe den zweiten Befehl erst aus, wenn der erste erfolgreich ist. - Docker Compose: Führe
docker compose downim Compose-Verzeichnis des neuen Release aus und danndocker compose up --build -dim Compose-Verzeichnis des alten.
Wenn das alte Release nicht mit dem geänderten Schema laufen kann, zeigt das Log cannot downgrade:
- Kubernetes: Der Migrations-Job schlägt fehl, und die Server bleiben unverändert. Wenn das Upgrade fehlschlägt beschreibt, wie du das Log des Jobs liest.
- Docker Compose: Der Server startet nicht. Lies das Log mit
docker compose logs migrate.
Auf Docker Compose zeigt die Ausgabe von docker compose logs stattdessen möglicherweise stored value is encrypted but no encryption key is configured. In diesem Fall hat die .env des alten Release keine Zeile CMA_STORE__CREDENTIALS_ENCRYPTION_KEY. Kopiere diese Zeile aus der .env des neuen Release und führe docker compose up --build -d erneut aus.
Das Backup auf Kubernetes wiederherstellen
Dein Datenbankserver braucht Platz für eine zweite Kopie der Datenbank. Verwende für <role> und <database> die Werte user und dbname aus database.url in cma-server-values.yaml.
Das Backup in eine neue Datenbank wiederherstellen
Verbinde dich als Administrator mit der Datenbank
postgresauf deinem Datenbankserver und führe Folgendes aus:CREATE DATABASE <database>_restored OWNER <role>;Führe dann auf dem Rechner, auf dem das Backup liegt, diesen Befehl mit den Pfaden zu deinem Schlüssel und deiner Backup-Datei aus. Verwende ein
pg_restorederselben Hauptversion wie dein Datenbankserver. Es fragt nach dem Passwort der Rolle und gibt nichts aus, wenn es funktioniert.age -d -i cma-backup.agekey cma_server-<old-version>.dump.age \ | PGSSLMODE=require pg_restore -h <database-host> -U <role> -d <database>_restored --no-owner --exit-on-errorWenn dabei ein Fehler ausgegeben wird, brich ab. Deine Datenbank ist unverändert. Führe
DROP DATABASE <database>_restored;als Administrator aus und beginne diesen Schritt von vorn.Alle Server stoppen
kubectl -n cma-server scale deployment/$server --replicas=0 kubectl -n cma-server wait --for=delete pod -l anthropic.com/role=server --timeout=90sZur wiederhergestellten Datenbank wechseln
Verbinde dich als Administrator mit der Datenbank
postgresund führe Folgendes aus:ALTER DATABASE <database> RENAME TO <database>_upgraded; ALTER DATABASE <database>_restored RENAME TO <database>;Wenn die erste Anweisung meldet, dass andere Sitzungen die Datenbank verwenden, schließe diese Sitzungen und führe beide Anweisungen erneut aus. Ein Connection-Pooler kann solche Sitzungen offen halten.
Das alte Release bereitstellen
Befolge den Kubernetes-Punkt aus Das alte Release erneut bereitstellen. Der erste Befehl stellt außerdem die Anzahl der Server wieder her. Wenn er fehlschlägt,
kubectl -n cma-server get podsaber zeigt, dass die alten Server bereit sind, lies Wenn die Schlüsselprüfung fehlschlägt.Die beiseitegelegte Datenbank löschen
Diese Datenbank enthält noch, was Clients nach dem Backup geschrieben haben. Wenn das alte Release funktioniert, lösche sie mit
DROP DATABASE <database>_upgraded;.
Wenn die Schlüsselprüfung fehlschlägt
Im Schritt „Das alte Release bereitstellen“ wartet der erste helm upgrade-Befehl, bis die alten Server bereit sind. Dann prüft er den Schlüssel, mit dem sich die Sandboxes verbinden. Wenn der Befehl fehlschlägt, kubectl -n cma-server get pods aber zeigt, dass die alten Server bereit sind, ist diese Prüfung fehlgeschlagen.
Deine Daten sind wiederhergestellt und die Server funktionieren, aber die Sandboxes können sich noch nicht mit ihnen verbinden. Die Sandboxes verbinden sich mit einem Schlüssel aus dem Secret cma-environment in ihrem eigenen Namespace, cma. Dieser Schlüssel ist neuer als dein Backup, daher erkennt die wiederhergestellte Datenbank ihn nicht.
Um die Ursache zu bestätigen, führe den ersten Befehl erneut aus. Öffne, während er wartet, ein zweites Terminal und setze dort ebenfalls $server. Führe dann kubectl -n cma-server logs job/$server-environment-default aus und setze dabei den Namen deiner Umgebung anstelle von default ein. Suche nach einer Zeile, die Secret cma/cma-environment records key enthält. Wenn das Log einen anderen Fehler zeigt, behebe, was er nennt.
Wenn das Log diese Zeile zeigt, lösche das Secret mit kubectl -n cma delete secret cma-environment und führe den ersten Befehl erneut aus. Er erstellt das Secret erneut, mit einem neuen Schlüssel. Führe dann den zweiten Befehl aus.
Das Backup auf Docker Compose wiederherstellen
Nur die Datenbank starten
Führe
docker compose downim Compose-Verzeichnis des neuen Release aus. Führe danndocker compose up -d --wait postgresim Compose-Verzeichnis des alten Release aus. Bleib für die nächsten Schritte in diesem Verzeichnis.Das Backup in eine neue Datenbank wiederherstellen
Führe im Compose-Verzeichnis des alten Release Folgendes mit den Pfaden deines Schlüssels und deiner Backup-Datei aus:
docker compose exec -T postgres sh -c 'psql -U "$POSTGRES_USER" -d postgres \ -c "DROP DATABASE IF EXISTS ${POSTGRES_DB}_restored" -c "CREATE DATABASE ${POSTGRES_DB}_restored"' \ && age -d -i cma-backup.agekey cma_server-<old-version>.dump.age \ | docker compose exec -T postgres sh -c 'pg_restore -U "$POSTGRES_USER" -d "${POSTGRES_DB}_restored" --no-owner --exit-on-error'Sie hat funktioniert, wenn
DROP DATABASEundCREATE DATABASEausgegeben werden und kein Fehler.Lass
$POSTGRES_USERund$POSTGRES_DBhier und in den nächsten Schritten unverändert. Der Text in einfachen Anführungszeichen läuft im Containerpostgres, der die Namen seiner Rolle und seiner Datenbank in diesen Variablen hält.Wenn ein Fehler ausgegeben wird, ist deine Datenbank unverändert, sodass du den gesamten Befehl erneut ausführen kannst. Wenn das Backup nicht wiederhergestellt werden kann, führe
docker compose up --build -dim Compose-Verzeichnis des neuen Release aus, um dieses Release wieder zu starten.Zur wiederhergestellten Datenbank wechseln
docker compose exec -T postgres sh -c 'psql -U "$POSTGRES_USER" -d postgres \ -c "ALTER DATABASE $POSTGRES_DB RENAME TO ${POSTGRES_DB}_upgraded" \ -c "ALTER DATABASE ${POSTGRES_DB}_restored RENAME TO $POSTGRES_DB"'Das alte Release starten
Führe
docker compose up --build -daus.Die beiseitegelegte Datenbank löschen
Diese Datenbank enthält noch, was Clients nach dem Backup geschrieben haben. Wenn das alte Release funktioniert, lösche sie:
docker compose exec -T postgres sh -c 'psql -U "$POSTGRES_USER" -d postgres -c "DROP DATABASE ${POSTGRES_DB}_upgraded"'
Nach einer Wiederherstellung
Eine Wiederherstellung setzt Umgebungsschlüssel auf den Zeitpunkt des Backups zurück:
- Ein Schlüssel, den du nach dem Backup widerrufen hast: Er funktioniert wieder. Widerrufe ihn erneut.
- Ein Schlüssel, den du nach dem Backup erstellt hast: Er ist weg. Erstelle einen neuen Schlüssel für die Worker, die ihn verwendet haben.
Einen Umgebungsschlüssel für deine eigenen Worker ersetzen enthält die Befehle, die auch auf Docker Compose funktionieren. Die Sandboxes, die der Docker-Compose-Stack startet, erfordern keine Aktion, denn der Stack ersetzt ihren Schlüssel, wenn er startet.
Um die Schlüssel einer Umgebung aufzulisten, einschließlich widerrufener, führe list-keys wie folgt aus:
- Verwende das Terminal, das du in Die API auf einem selbst gehosteten Server aufrufen eingerichtet hast. Verwende nicht das Terminal, in dem
docker composeläuft. - Führe auf Kubernetes zuerst
kubectl -n cma-server port-forward svc/$server 8400:8400in einem anderen Terminal aus, in dem$serverebenfalls gesetzt ist. - Führe den Befehl im obersten Verzeichnis des Archivs aus, einmal für jede Umgebung, mit der ID der jeweiligen Umgebung.
echo "$ANTHROPIC_API_KEY" | ./cma-server-admin list-keys \
-base-url http://127.0.0.1:8400 -env env_01595EKxaaTTGwwY3kyXdtbs \
-key-file - -allEin Backup testen
Um zu beweisen, dass sich ein Dump wiederherstellen lässt, führe nur den Schritt „Das Backup in eine neue Datenbank wiederherstellen“ aus. Er steht unter Das Backup auf Kubernetes wiederherstellen und unter Das Backup auf Docker Compose wiederherstellen. Dieser Schritt ändert die verwendete Datenbank nicht. Lösche danach die neue Datenbank. Auf Docker Compose ist ihr Name der Name deiner Datenbank mit _restored am Ende.
Zu prüfende Einstellungen und Pfade
Lies diesen Abschnitt, bevor du einen Upgrade-Befehl ausführst.
Prüfe den Abschnitt web_tools deiner Einstellungsdatei. Wenn die Datei keinen solchen Abschnitt hat oder der Abschnitt keine Schlüssel setzt, sind die Tools web_search und web_fetch nach dem Upgrade ausgeschaltet. Ein Agent, der das Standard-Toolset verwendet, läuft dann ohne sie und ohne Fehler. Ein Agent, dessen Toolset eines der beiden Tools einschaltet, kann keine Sitzung starten. Wie du die Tools behältst, erfährst du unter Web-Tools brauchen eine Server-Einstellung.
Prüfe auf Kubernetes, ob jede Sandbox-Values-Datei, etwa cma-values.yaml, egress.mode setzt. Damit deine Sandboxes ihren Zugriff auf das öffentliche Internet behalten, füge mode: publicInternet unter egress hinzu. Wenn eine Datei keinen Modus setzt, wendet das Chart seinen Standardmodus closed an. Der helm upgrade-Befehl des Sandbox-Charts bricht dann mit einem Fehler wie egress.mode is closed and egress.closed.hosts is empty ab und ändert nichts.
Prüfe sandbox.idleTimeout in denselben Dateien. Wenn eine Datei den Wert nicht setzt, verschwindet der Pod einer Sitzung etwa 5 Minuten nach dem Ende des Agent-Turns. Die Prozesse, die der Agent laufen gelassen hat, stoppen mit dem Pod. Standardmäßig bleiben die Dateien in /workspace erhalten. Um den Pod 30 Minuten lang zu behalten, füge idleTimeout: 30m unter sandbox hinzu.
Prüfe die Einstellungsdatei auf inference.attribution und die Umgebung des Servers auf CMA_INFERENCE__ATTRIBUTION. Lösche die Zeile, wenn du eine findest. Das Release, auf das du aktualisierst, hat diese Einstellung nicht, und sein Server startet nicht, wenn eines der beiden gesetzt ist.
Wenn die Claude API dein Inferenzanbieter ist, trägt nach dem Upgrade jeder Modellaufruf die IDs seiner Sitzung sowie des Agents und der Umgebung dieser Sitzung. Siehe Was der Server an seinen Inferenzanbieter sendet.
Kubernetes: die Namen deiner Objekte
cma-server-values.yaml muss in seiner Einstellung earlierNames angeben, welche Namen deine Installation hat. Um den Namen des Deployments des Servers zu finden, führe kubectl -n cma-server get deployment -l anthropic.com/role=server aus.
| Der Name des Deployments | Die Zeile in cma-server-values.yaml |
|---|---|
cma-onprem | earlierNames: true |
cma-server | earlierNames: false |
Wenn die Datei diese Zeile nicht hat, füge sie vor dem Upgrade hinzu und behalte sie für jedes spätere Upgrade bei. Ohne sie bricht der helm upgrade-Befehl des Server-Charts mit einem Fehler ab, der earlierNames nennt, und ändert nichts.
Mit earlierNames: true behalten die Objekte des Charts ihre cma-onprem-Namen, und die Server finden weiterhin die Secrets, die du unter diesen Namen erstellt hast. Diese Seiten verwenden die Namen in der mittleren Spalte. Verwende mit earlierNames: true stattdessen die Namen in der letzten Spalte:
| Objekt | Name auf diesen Seiten | Name mit earlierNames: true |
|---|---|---|
| Das Deployment und der Service des Servers | cma-server | cma-onprem |
| Der Migrations-Job | cma-server-migrate | cma-onprem-migrate |
| Der Job jeder Umgebung | cma-server-environment-<name> | cma-onprem-environment-<name> |
| Das Secret mit dem Datenbankpasswort | cma-server-db | cma-onprem-db |
| Das Secret mit den Anmeldedaten des Inferenzanbieters | cma-server-upstream | cma-onprem-upstream |
| Das Secret mit dem Server-API-Key und dem Verschlüsselungsschlüssel | cma-server-keys | cma-onprem-server |
Unabhängig davon, was earlierNames angibt, heißt der Namespace cma-server und das Image des Servers cma-server-image.
Jede Sandbox-Values-Datei, die egress.mode: gateway setzt, muss unter egress.gateway die zwei Services des Servers nennen. Wenn eine Datei das nicht tut, füge beide Zeilen hinzu. Dieses Beispiel enthält die Namen für eine Installation mit earlierNames: true:
egress:
gateway:
serverService: cma-onprem
serverEgressService: cma-onprem-egressDocker Compose: das Layout und die Pfade des Archivs
Wenn das Release, von dem aus du aktualisierst, kein Verzeichnis compose hat, liegt seine docker-compose.yml ganz oben im Archiv, neben bin. Im neuen Archiv liegt diese Datei eine Ebene tiefer, in compose.
Nimm im Schritt „Deine anderen Änderungen wiederholen“ auch diese Änderungen vor:
- Eine eigene Compose-Datei: Wenn das alte Archiv kein Verzeichnis
composehatte, wandert auch deine Datei eine Ebene tiefer. Ein Pfad wie./bindarin wird zu../bin. Wenn die Datei den Dienstcma-onpremnennt, ändere diesen Namen incma-server. - Pfade unter
/etc/cma-onprem/oder/run/cma-onprem/: Ändere jeden so, dass er mit/etc/cma-server/oder/run/cma-server/beginnt. Sieh in der.envundcompose.config.yamldes neuen Release nach, in einer eigenen Compose-Datei und in jedervolumes:-Zeile, die du hinzugefügt hast. Ändere in einervolumes:-Zeile nur den Teil nach dem ersten Doppelpunkt, also den Pfad innerhalb des Containers.
War diese Seite hilfreich?