Spring Cloud Data Flow Server for Kubernetes

Eric Bottard, Florian Rosenberg, Sabby Anandan, Marius Bogoevici, Mark Fisher, Ilayaperumal Gopinathan, Gunnar Hillert, Mark Pollack, Patrick Peralta, Glenn Renfro, Thomas Risberg, Dave Syer, David Turanski, Janne Valkealahti

1.1.0.RC1

Copies of this document may be made for your own use and for distribution to others, provided that you do not charge any fee for such copies and further provided that each copy contains this Copyright Notice, whether distributed in print or electronically.


Table of Contents

I. Introduction
1. Introducing Spring Cloud Data Flow for Kubernetes
2. Spring Cloud Data Flow
3. Spring Cloud Stream
4. Spring Cloud Task
II. Architecture
5. Introduction
6. Microservice Architectural Style
6.1. Comparison to other Platform architectures
7. Streaming Applications
7.1. Imperative Programming Model
7.2. Functional Programming Model
8. Streams
8.1. Topologies
8.2. Concurrency
8.3. Partitioning
8.4. Message Delivery Guarantees
9. Analytics
10. Task Applications
11. Data Flow Server
11.1. Endpoints
11.2. Customization
11.3. Security
12. Runtime
12.1. Fault Tolerance
12.2. Resource Management
12.3. Scaling at runtime
12.4. Application Versioning
III. Getting Started
13. Deploying Streams on Kubernetes
IV. Server Configuration
14. Feature Toggles
15. Database Configuration
16. Security
16.1. Enabling HTTPS
16.1.1. Using Self-Signed Certificates
16.2. Basic Authentication
16.2.1. File based authentication
16.2.2. LDAP Authentication
LDAP Transport Security
16.3. OAuth 2.0
16.3.1. Authentication using the Spring Cloud Data Flow Shell
16.3.2. OAuth2 Authentication Examples
Local OAuth2 Server
Authentication using GitHub
16.4. Securing the Spring Boot Management Endpoints
17. Monitoring and Management
17.1. Spring Boot Admin
17.2. Monitoring Deployed Applications
V. Streams
18. Introduction
19. Stream DSL
20. Register a Stream App
20.1. Whitelisting application properties
21. Creating custom applications
22. Creating a Stream
22.1. Application properties
22.1.1. Passing application properties when creating a stream
22.2. Deployment properties
22.2.1. Passing instance count as deployment property
22.2.2. Inline vs file reference properties
22.2.3. Passing application properties when deploying a stream
22.2.4. Passing Spring Cloud Stream properties for the application
22.2.5. Passing per-binding producer consumer properties
22.2.6. Passing stream partition properties during stream deployment
22.2.7. Passing application content type properties
22.2.8. Overriding application properties during stream deployment
22.3. Deployment properties
22.3.1. Passing instance count as deployment property
22.3.2. Inline vs file reference properties
23. Destroying a Stream
24. Deploying and Undeploying Streams
25. Other Source and Sink Application Types
26. Simple Stream Processing
27. Stateful Stream Processing
28. Tap a Stream
29. Using Labels in a Stream
30. Explicit Broker Destinations in a Stream
31. Directed Graphs in a Stream
31.1. Common application properties
32. Stream applications with multiple binder configurations
VI. Tasks
33. Introducing Spring Cloud Task
34. The Lifecycle of a task
34.1. Creating a custom Task Application
34.2. Registering a Task Application
34.3. Creating a Task
34.4. Launching a Task
34.5. Reviewing Task Executions
34.6. Destroying a Task
35. Task Repository
35.1. Configuring the Task Execution Repository
35.1.1. Local
35.1.2. Task Application Repository
35.2. Datasource
36. Subscribing to Task/Batch Events
37. Launching Tasks from a Stream
37.1. TriggerTask
37.2. Translator
VII. Dashboard
38. Introduction
39. Apps
39.1. Bulk Import of Applications
40. Runtime
41. Streams
42. Create Stream
43. Tasks
43.1. Apps
43.1.1. Create a Task Definition from a selected Task App
43.1.2. View Task App Details
43.2. Definitions
43.2.1. Creating Task Definitions using the bulk define interface
43.2.2. Launching Tasks
43.3. Executions
44. Jobs
44.1. List job executions
44.1.1. Job execution details
44.1.2. Step execution details
44.1.3. Step Execution Progress
45. Analytics
VIII. Server Implementation
46. Server Properties
IX. ‘How-to’ guides
47. Configure Maven Properties
48. Logging
48.1. Deployment Logs
48.2. Application Logs
X. Appendices
A. Migrating from Spring XD to Spring Cloud Data Flow
A.1. Terminology Changes
A.2. Modules to Applications
A.2.1. Custom Applications
A.2.2. Application Registration
A.2.3. Application Properties
A.3. Message Bus to Binders
A.3.1. Message Bus
A.3.2. Binders
A.3.3. Named Channels
A.3.4. Directed Graphs
A.4. Batch to Tasks
A.5. Shell/DSL Commands
A.6. REST-API
A.7. UI / Flo
A.8. Architecture Components
A.8.1. ZooKeeper
A.8.2. RDBMS
A.8.3. Redis
A.8.4. Cluster Topology
A.9. Central Configuration
A.10. Distribution
A.11. Hadoop Distribution Compatibility
A.12. YARN Deployment
A.13. Use Case Comparison
A.13.1. Use Case #1
A.13.2. Use Case #2
A.13.3. Use Case #3
B. Building
B.1. Documentation
B.2. Working with the code
B.2.1. Importing into eclipse with m2eclipse
B.2.2. Importing into eclipse without m2eclipse
C. Contributing
C.1. Sign the Contributor License Agreement
C.2. Code Conventions and Housekeeping