# README
Introduction
Each state transfer consists of 3 components.
- A transfer utility such as rclone or rsync
- A transport used to secure traffic between clusters
- An endpoint type for exposing the server/source side for transfer
Trasfer
Currently rsync and rclone are available.
Transport
Two transports are available.
Null
The null transport is intended for any potential future options that provide their own encryption between client and server. It may also be useful for troubleshooting, but shouldn't be used with unencrypted protocols with sensitive data.
Stunnel
Stunnel is a proxy that provides TLS encryption without having to change existing clients and servers.
Endpoint
Route
Routes are available and commonly used in openshift clusters
Load Balancer
An alternative to routes that will work with other Kubernetes implementations
Compatibility Matrix
Transfer | Transport | Endpoint | State |
---|---|---|---|
rclone | null | load balancer | functional but inseure |
route | functional but insecure | ||
stunnel | load balancer | functional | |
route | functional | ||
rsync | null | load balancer | functional but inseure |
route | nonfunctional | ||
stunnel | load balancer | functional | |
route | functional |
TODO
- Implement check for clients / servers to ensure pods come up and in the case of servers are ready to send data.
- Implement check for load balancers to resolve
- Look into nodePort as an alternative to LB and route
- Implement functions to tear down servers and clients when the transfer is complete
The lack of progress checks do not cripple functionality, but the client side may error serveral times while servers come up and hostnames become resolvable, which isn't very pretty.