- Überblick
- Anforderungen
- Bereitstellungsvorlagen
- Anleitung: Vorbereiten der Installation
- Anleitung: Vorbereiten der Installation
- Schritt 2: Konfigurieren der OCI-konformen Registrierung für Offline-Installationen
- Schritt 3: Konfigurieren des externen Objektspeichers
- Schritt 4: Konfigurieren des High Availability Add-on
- Schritt 5: Konfigurieren von SQL-Datenbanken
- Schritt 7: Konfigurieren des DNS
- Schritt 8: Konfigurieren der Datenträger
- Schritt 9: Konfigurieren der Einstellungen auf Kernel- und Betriebssystemebene
- Schritt 10: Konfigurieren der Knotenports
- Schritt 11: Anwenden verschiedener Einstellungen
- Schritt 12: Validieren und Installieren der erforderlichen RPM-Pakete
- Schritt 13: Generieren von cluster_config.json
- Cluster_config.json-Beispiel
- Allgemeine Konfiguration
- Profilkonfiguration
- Zertifikatkonfiguration
- Datenbankkonfiguration
- Konfiguration des externen Objektspeichers
- Vorsignierte URL-Konfiguration
- ArgoCD-Konfiguration
- Konfiguration der Kerberos-Authentifizierung
- Externe OCI-konforme Registrierungskonfiguration
- Disaster Recovery: Aktiv/Passiv- und Aktiv/Aktiv-Konfigurationen
- Konfiguration des High Availability Add-ons
- Spezifische Orchestrator-Konfiguration
- Insights-spezifische Konfiguration
- Process Mining-spezifische Konfiguration
- Spezifische Konfiguration für Document Understanding
- Spezifische Konfiguration für Automation Suite Robots
- Konfiguration der Überwachung
- Optional: Konfigurieren des Proxyservers
- Optional: Aktivieren der Widerstandsfähigkeit gegen zonale Ausfälle in einem HA-fähigen Produktionscluster mit mehreren Knoten
- Optional: Übergeben einer benutzerdefinierten resolv.conf-Datei
- Optional: Erhöhen der Fehlertoleranz
- Hinzufügen eines dedizierten Agent-Knotens mit GPU-Unterstützung
- Hinzufügen eines dedizierten Agentenknotens für Automation Suite-Roboter
- Schritt 15: Konfigurieren der temporären Docker-Registrierung für Offline-Installationen
- Schritt 16: Validieren der Voraussetzungen für die Installation
- Ausführen von uipathctl
- Manuell: Durchführen der Installation
- Nach der Installation
- Clusterverwaltung
- Verwalten von Produkten
- Erste Schritte mit dem Clusterverwaltungsportal
- Migrieren von Redis vom clusterinternen zum externen High Availability Add-on
- Migrieren von Daten zwischen Objectstores
- Clusterinterner Objectstore zu einem externen Objectstore migrieren
- Migrieren von der clusterinternen Registrierung zu einer externen OCI-konformen Registrierung
- Manueller Wechsel zum sekundären Cluster in einem Aktiv-/Passiv-Setup
- Disaster Recovery: Durchführen von Vorgängen nach der Installation
- Umwandlung einer bestehenden Installation in eine Multi-Site-Einrichtung
- Richtlinien zum Upgrade einer Aktiv/Passiv- oder Aktiv/Aktiv-Bereitstellung
- Leitlinien zum Sichern und Wiederherstellen einer Aktiv-/Passiv- oder Aktiv/Aktiv-Bereitstellung
- Skalieren einer Bereitstellung mit einem einzelnen Knoten (Auswertung) zu einer Bereitstellung mit mehreren Knoten (HA).
- Überwachung und Warnungen
- Migration und Upgrade
- Migrieren zwischen Automation Suite-Clustern
- Aktualisieren der Automation Suite
- Herunterladen der Installationspakete und Übertragen aller Dateien auf den ersten Serverknoten
- Abrufen der zuletzt angewendeten Konfiguration aus dem Cluster
- Aktualisieren der Clusterkonfiguration
- Konfigurieren der OCI-konformen Registrierung für Offline-Installationen
- Ausführen des Upgrades
- Durchführen von Vorgängen nach dem Upgrade
- Produktspezifische Konfiguration
- Erweiterte Orchestrator-Konfiguration
- Konfigurieren von Orchestrator-Parametern
- Konfigurieren von AppSettings
- Konfigurieren der maximalen Anforderungsgröße
- Überschreiben der Speicherkonfiguration auf Clusterebene
- Konfigurieren von NLog
- Speichern von Roboterprotokollen in Elasticsearch
- Konfigurieren von Anmeldeinformationsspeichern
- Konfigurieren der Verwendung von einem Verschlüsselungsschlüssel pro Mandant
- Bereinigen der Orchestrator-Datenbank
- Installation der Hostbibliothek überspringen
- Best Practices und Wartung
- Fehlersuche und ‑behebung
- Fehlerbehebung bei Diensten während der Installation
- So reduzieren Sie Berechtigungen für ein NFS-Sicherungsverzeichnis
- Deinstallieren des Clusters
- Löschen von Offline-Artefakten für mehr Speicherplatz
- So löschen Sie Redis-Daten
- So können Sie die Istio-Protokollierung aktivieren
- So werden Protokolle manuell bereinigt
- Verschieben von Ceph aus dem schreibgeschützten Modus
- So löschen Sie alte Protokolle, die im sf-logs-Bucket gespeichert sind
- So deaktivieren Sie Streaming-Protokolle für das AI Center
- Fehlerbehebung bei fehlgeschlagenen Automation Suite-Installationen
- So löschen Sie Bilder aus dem alten Installationsprogramm nach dem Upgrade
- Deaktivieren von TX-Prüfsummen-Offloading
- So legen Sie die ArgoCD-Protokollebene manuell auf Info fest
- So erweitern Sie den AI Center-Speicher
- So wird der codierte pull_secret_value für externe Registrierungen generiert
- Umgang mit schwachen Verschlüsselungen in TLS 1.2
- So überprüfen Sie die TLS-Version
- So arbeiten Sie mit Zertifikaten
- So planen Sie die Ceph-Sicherung und Wiederherstellung von Daten
- Sammeln von DU-Nutzungsdaten mit dem clusterinternen Objektspeicher (Ceph)
- So installieren Sie RKE2 SELinux in Air-Gap-Umgebungen
- So löschen Sie alte differenzielle Sicherungen auf einem NFS-Server
- So stellen Sie Insights in einem FIPS-fähigen Cluster bereit
- So migrieren Sie zu cgroup v2
- So stellen Sie die Kerberos-Authentifizierung nach einem VM-Neustart wieder her
- So pushen Sie ein lokales Docker-Image in die Registrierung innerhalb des Clusters
- So schließen Sie Buckets von der Sicherung aus
- Fehler beim Herunterladen des Pakets
- Die Offlineinstallation schlägt aufgrund fehlender binärer Dateien fehl
- Azure-Datenträger nicht als SSD markiert
- Fehler nach der Zertifikatsaktualisierung
- Validierungsfehler beim TLS-Zertifikat
- Virenschutz verursacht Probleme bei der Installation
- Automation Suite funktioniert nach Betriebssystem-Upgrade nicht
- Bei der Automation Suite muss „backlog_wait_time“ auf 0 gesetzt werden.
- Die temporäre Registrierungsinstallation schlägt unter RHEL 8.9 fehl
- Häufiges Neustartproblem bei UiPath-Namespace-Bereitstellungen während Offline-Installationen
- DNS-Einstellungen werden von CoreDNS nicht berücksichtigt
- Das Seeding der Registrierung innerhalb des Clusters schlägt aufgrund von unzureichendem Speicher fehl
- Voraussetzungsprüfungen schlagen fehl, wenn moderne Document Understanding-Projekte aktiviert und AI Center deaktiviert ist
- Upgrade schlägt aufgrund eines fehlerhaften Ceph . fehl
- Upgrade schlägt aufgrund von klassischen Objekten in der Orchestrator-Datenbank fehl
- Ceph-Cluster in beeinträchtigtem Status nach parallelem Upgrade
- Dienst-Upgrade schlägt für Apps fehl
- Timeouts beim direkten Upgrade
- Upgrade schlägt in Offline-Umgebungen fehl
- Snapshot-controller-crds Pod im Status CrashLoopBackOff nach dem Upgrade
- Upgrade schlägt aufgrund überschriebener Insights-PVC-Größen fehl
- Upgradefehler aufgrund von Hostnamen in Großbuchstaben
- Festlegen eines Timeout-Intervalls für die Verwaltungsportale
- Die Authentifizierung funktioniert nach der Migration nicht
- kinit: KDC kann für Realm <AD Domain> beim Abrufen der ersten Anmeldeinformationen nicht gefunden werden
- Kinit: Keytab enthält keine geeigneten Schlüssel für *** beim Abrufen der ersten Anmeldeinformationen
- GSSAPI-Vorgang aufgrund eines ungültigen Statuscodes fehlgeschlagen
- Alarm für fehlgeschlagenen Kerberos-tgt-update-Auftrag erhalten
- SSPI-Anbieter: Server in Kerberos-Datenbank nicht gefunden
- Anmeldung eines AD-Benutzers aufgrund eines deaktivierten Kontos fehlgeschlagen
- ArgoCD-Anmeldung fehlgeschlagen
- Fehler beim Abrufen des Sandbox-Abbilds
- Pods werden nicht in der ArgoCD-Benutzeroberfläche angezeigt
- Redis-Testfehler
- RKE2-Server kann nicht gestartet werden
- ArgoCD wechselt nach der ersten Installation in den Status „In Bearbeitung“.
- ArgoCD-Repository-Server-Pod in „CrashLoopBackOff“.
- Manuelle Schadensbegrenzung bei ArgoCD NetworkPolicy (GHSA-47m3-95c7-g2g8)
- Fehlende Ceph-rook-Metriken in Überwachungs-Dashboards
- Diskrepanz bei gemeldeten Fehlern bei diagnostischen Zustandsprüfungen
- Konfigurieren von Ressourcenanforderungen und Limits für von uipathctl erstellte Workloads
- Kein normales Upstream-Problem
- Redis-Start wird durch Antivirenprogramm blockiert
- AI Center und Document Understanding Pods können bei aktivierter TLS-Zertifikatsverifizierung nicht gestartet werden
- Fluentd exportiert keine Protokolle in IPv6-Umgebungen
- Studio Desktop kann keine Integration Service-Connectors und -Aktivitäten laden
- Document Understanding erscheint nicht auf der linken Leiste der Automation Suite
- Fehlerstatus beim Erstellen einer Datenbeschriftungssitzung
- Fehlerstatus beim Versuch, eine ML-Fähigkeit bereitzustellen
- Migrationsauftrag schlägt in ArgoCD fehl
- Die Handschrifterkennung mit dem Intelligent Form Extractor funktioniert nicht oder arbeitet zu langsam
- Ausführen von Hochverfügbarkeit mit Process Mining
- Die Process Mining-Datenaufnahme ist bei der Anmeldung über Kerberos fehlgeschlagen
- Verbindung mit der Datenbank „AutomationSuite_ProcessMining_Lager“ über eine Verbindungszeichenfolge im pyodbc-Format nicht möglich
- Die Airflow-Installation schlägt mit „sqlaldemy.exc.ArgumentError“ fehl: URL konnte nicht analysiert werden rfc1738 aus Zeichenfolge „
- So fügen Sie eine IP-Tabellenregel hinzu, um den SQL Server-Port 1433 zu verwenden
- Dem Automation Suite-Zertifikat des Servers, auf dem CData Sync ausgeführt wird, wird nicht vertraut
- Process Mining kann nach dem Deaktivieren und erneuten Aktivieren nicht geladen werden
- Ausführen des Diagnosetools
- Verwenden des Automation Suite-Supportpakets
- Erkunden von Protokollen
Pushen Sie ein lokal verfügbares Docker-Image mithilfe eines bereitgestellten Bash-Skripts an alle Registrierungspods in einer Automation Suite High Availability (HA)-in-Cluster-Registrierung.
Verwenden Sie dieses Skript, um ein lokal verfügbares Docker-Image per Push an alle Registrierungspods in einer Automation Suite High Availability (HA)-Cluster-Registrierung zu pushen.
Die clusterinterne Registrierung hat mehrere Replikate in HA-Umgebungen. Das Pushen eines Docker-Images über registry.FQDN funktioniert nicht. Um ein Docker-Image in alle Registrierungspods zu pushen, verwenden Sie stattdessen das folgende Skript.
Voraussetzungen
Das Docker-Image, das Sie pushen möchten, muss im lokalen Podman-Speicher unter localhost:30071 vorhanden sein.
Schritte
-
Speichern Sie das folgende Skript in einer Datei, z. B.
push-to-registry.sh:#!/bin/bash # Image must already be present in the local Podman store under localhost:30071 # run command as ./script.sh localhost:30071/myimage:1.0.0 set -euo pipefail [[ $# -lt 1 ]] && { echo "Usage: $0 <image-name>"; exit 1; } IMAGE=$1 DOCKER_REGISTRY_NODEPORT=30071 function error() { echo -e "\e[0;31m[ERROR][$(date +'%Y-%m-%dT%H:%M:%S%z')]:\e[0m $*" >&2 exit 1 } function info() { echo "[INFO] [$(date +'%Y-%m-%dT%H:%M:%S%z')]: $*" } function warn() { echo -e "\e[0;33m[WARN] [$(date +'%Y-%m-%dT%H:%M:%S%z')]:\e[0m $*" >&2 } function get_registry_addresses() { local namespace="docker-registry" local lh_registry local server_node_count lh_registry=$(kubectl get deployment -n "${namespace}" docker-registry --ignore-not-found --no-headers | wc -l) server_node_count=$(kubectl get nodes -l "node-role.kubernetes.io/master=true" --no-headers | wc -l) IFS=" " read -r -a registry_addresses <<< \ "$(kubectl get pods -n "${namespace}" -o jsonpath="{.items[*].status.podIP}" -l app=docker-registry)" if [[ "${lh_registry}" -eq 1 ]]; then [[ "${#registry_addresses[@]}" -eq 1 ]] || error "Expected 1 registry pod; found ${#registry_addresses[@]}." else [[ "${#registry_addresses[@]}" -eq "${server_node_count}" ]] || \ error "Expected ${server_node_count} registry pods; found ${#registry_addresses[@]}." fi echo "${registry_addresses[@]}" } podman image exists "localhost:${DOCKER_REGISTRY_NODEPORT}/${IMAGE}" \ || error "Image not found locally: localhost:${DOCKER_REGISTRY_NODEPORT}/${IMAGE}" IFS=" " read -r -a registry_addresses <<< "$(get_registry_addresses)" info "Found ${#registry_addresses[@]} registry pod(s)" for ip in "${registry_addresses[@]}"; do local_ref="localhost:${DOCKER_REGISTRY_NODEPORT}/${IMAGE}" remote_ref="${ip}:5000/${IMAGE}" local try=0 local max_tries=10 local pushed=false info "Tagging ${local_ref} → ${remote_ref}" podman tag "${local_ref}" "${remote_ref}" podman login "${ip}:5000" --tls-verify=false while [[ "${pushed}" == false ]] && (( try < max_tries )); do try=$(( try + 1 )) info "Pushing ${IMAGE} → ${ip}:5000 (attempt ${try}/${max_tries})" if podman push "${remote_ref}" --tls-verify=false; then pushed=true else warn "Push failed — retrying in 60s" sleep 60 fi done [[ "${pushed}" == true ]] || error "Failed to push ${IMAGE} to ${ip}:5000 after ${max_tries} attempts" done info "Done — ${IMAGE} pushed to all registry pods"#!/bin/bash # Image must already be present in the local Podman store under localhost:30071 # run command as ./script.sh localhost:30071/myimage:1.0.0 set -euo pipefail [[ $# -lt 1 ]] && { echo "Usage: $0 <image-name>"; exit 1; } IMAGE=$1 DOCKER_REGISTRY_NODEPORT=30071 function error() { echo -e "\e[0;31m[ERROR][$(date +'%Y-%m-%dT%H:%M:%S%z')]:\e[0m $*" >&2 exit 1 } function info() { echo "[INFO] [$(date +'%Y-%m-%dT%H:%M:%S%z')]: $*" } function warn() { echo -e "\e[0;33m[WARN] [$(date +'%Y-%m-%dT%H:%M:%S%z')]:\e[0m $*" >&2 } function get_registry_addresses() { local namespace="docker-registry" local lh_registry local server_node_count lh_registry=$(kubectl get deployment -n "${namespace}" docker-registry --ignore-not-found --no-headers | wc -l) server_node_count=$(kubectl get nodes -l "node-role.kubernetes.io/master=true" --no-headers | wc -l) IFS=" " read -r -a registry_addresses <<< \ "$(kubectl get pods -n "${namespace}" -o jsonpath="{.items[*].status.podIP}" -l app=docker-registry)" if [[ "${lh_registry}" -eq 1 ]]; then [[ "${#registry_addresses[@]}" -eq 1 ]] || error "Expected 1 registry pod; found ${#registry_addresses[@]}." else [[ "${#registry_addresses[@]}" -eq "${server_node_count}" ]] || \ error "Expected ${server_node_count} registry pods; found ${#registry_addresses[@]}." fi echo "${registry_addresses[@]}" } podman image exists "localhost:${DOCKER_REGISTRY_NODEPORT}/${IMAGE}" \ || error "Image not found locally: localhost:${DOCKER_REGISTRY_NODEPORT}/${IMAGE}" IFS=" " read -r -a registry_addresses <<< "$(get_registry_addresses)" info "Found ${#registry_addresses[@]} registry pod(s)" for ip in "${registry_addresses[@]}"; do local_ref="localhost:${DOCKER_REGISTRY_NODEPORT}/${IMAGE}" remote_ref="${ip}:5000/${IMAGE}" local try=0 local max_tries=10 local pushed=false info "Tagging ${local_ref} → ${remote_ref}" podman tag "${local_ref}" "${remote_ref}" podman login "${ip}:5000" --tls-verify=false while [[ "${pushed}" == false ]] && (( try < max_tries )); do try=$(( try + 1 )) info "Pushing ${IMAGE} → ${ip}:5000 (attempt ${try}/${max_tries})" if podman push "${remote_ref}" --tls-verify=false; then pushed=true else warn "Push failed — retrying in 60s" sleep 60 fi done [[ "${pushed}" == true ]] || error "Failed to push ${IMAGE} to ${ip}:5000 after ${max_tries} attempts" done info "Done — ${IMAGE} pushed to all registry pods" -
Machen Sie das Skript ausführbar:
chmod +x push-to-registry.shchmod +x push-to-registry.sh -
Führen Sie das Skript aus und übergeben Sie Ihren Image-Namen als Argument:
./push-to-registry.sh localhost:30071/<image-name>:<tag>./push-to-registry.sh localhost:30071/<image-name>:<tag>
Ergebnis
Wenn das Skript erfolgreich abgeschlossen wird, gibt es eine Meldung ähnlich der folgenden aus:
[INFO] [2024-01-01T00:00:00+0000]: Done — localhost:30071/myimage:1.0.0 pushed to all registry pods
[INFO] [2024-01-01T00:00:00+0000]: Done — localhost:30071/myimage:1.0.0 pushed to all registry pods