UCloud logo UCloud logo UCloud
v2025.1.0
  1. UCloud/Core
  2. 1. Introduction
  3. 2. Projects
  4. 3. Accounting
  5. 4. Orchestration
  6. UCloud/IM for Slurm-based HPC
  7. 5. Installation
  8. 6. Architecture and Networking
  9. 7. User and Project Management
  10. 8. Filesystem Integration
    1. 8.1. Inter-provider file transfers
  11. 9. Slurm Integration
    1. 9.1. Application Management
    2. 9.2. Built-in Applications
  12. 10. Reference
    1. 10.1. Configuration
    2. 10.2. CLI
  13. 11. Appendix
    1. 11.1. Built-in Application Index
  14. UCloud/IM for Kubernetes
  15. 12. Installation
  16. 13. Architecture and Networking
  17. 14. Filesystem Integration
  18. 15. Compute Jobs
    1. 15.1. Public Links
    2. 15.2. Public IPs
    3. 15.3. License Servers
    4. 15.4. SSH Servers
  19. 16. Integrated applications
    1. 16.1. Syncthing
    2. 16.2. Integrated terminal
  20. 17. Reference
    1. 17.1. Configuration
  21. H: Procedures
  22. 18. H: Procedures
  23. 19. H: Introduction
  24. 20. H: Auditing
  25. 21. H: Auditing scenario
  26. 22. H: GitHub actions
  27. 23. H: Deployment
  28. 24. H: 3rd party dependencies (risk assesment)
  1. Links
  2. Source Code
  3. Releases

Syncthing integration

The Syncthing integrated application provides file synchronization for a user’s storage. It runs as a dedicated job and is configured by defining folders and devices.

Syncthing is exposed similarly to public IP features: it uses a Kubernetes Service with service.spec.externalIPs and a per-instance port from a configured port range.

When Syncthing is configured and eligible to run:

  • A dedicated Syncthing job is registered.
  • A Syncthing state folder is created under the user’s filesystem.
  • A port is allocated from a configured range and stored on the pod as an annotation.
  • A Kubernetes Service is created that exposes the instance on: syncthing.ipAddress:<assignedPort>
  • A NetworkPolicy is updated to allow inbound TCP traffic from the outside world to the assigned port.
  • A configuration file is written into the Syncthing state folder for the job to consume.

The Syncthing configuration is contains:

  • folders: list of folders to sync
  • devices: list of devices to sync with

Syncthing will only run when:

  • At least one folder is configured
  • At least one device is configured
  • All configured folders are valid and accessible to the owner
  • Referenced drives are not locked and can be used by the owner

This pod will only be scheduled on nodes labeled with ucloud.dk/machine=syncthing.

Requirements and prerequisites

For Syncthing to function correctly:

  1. syncthing.ipAddress must be routable to Kubernetes nodes
  2. External routing must ensure traffic for that IP reaches appropriate nodes
  3. The cluster network must support service.spec.externalIPs
  4. Firewalls and network policy must allow inbound TCP traffic to the assigned port
  5. The system must have at least one node reserved for syncthing jobs. Syncthing jobs will be placed on nodes labeled with ucloud.dk/machine=syncthing.

Configuration

The Syncthing feature must be enabled through the configuration. Below is an example configuration:

services:
  type: Kubernetes
  compute:
    syncthing:
      enabled: true
      ipAddress: 10.56.32.4
      portMin: 8000
      portMax: 16000
      relaysEnabled: false
Previous Integrated applications
Next Integrated terminal