Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Status Update Module: Maintains the state of all the resources deployed for an application and its sub-applications.

Internal Design details

Guidelines that need to

...

keep in mind

  • Support for metrics that can be retrieved by Prometheus
  • Support for Jaeger distributed tracing by including opentracing libraries around HTTP calls.
  • Support for logging that is understood by fluentd
  • Mutual exclusion of database operations (keeping internal modules accessing database records simultaneously and also by replication entities of the scheduler micro-service).
  • Resilience - ensure that the information returned by controllers is not lost as the synchronization of resources to remote edge clouds can take hours or even days when the edge is not up and running and possibility of restart of scheduler micro service in the meantime.
  • Concurrency - Support multiple operations at a time and even synchronizing resources in various edge clouds in parallel.
  • Performance - Avoiding file system operations as much as possible.

Instantiation Flow

  1. Get the clusters that form the logical cloud to schedule the application. Validate the application, intent group, and generic placement intent.
  2. Create etcd Context for the application
  3. Process the Generic placement context and populate the etcd context with the edge list.
  4. Generate Kubernetes resources from the Helm charts by using Helm templating and from macros. Copy resources in etcd store based on the context for the application.
  5. Placement stage: Call all the placement controllers including HPA  controller in order. Wait for one controller to complete before going to the next controller.
    1. HPA controller: Kubernetes resource manipulation. Add additional information to the deployments. In the case where the generic intent calls for anyof clusters, HPA controller can make a selection for one or more clusters meeting the HPA requirements for the sub-application.
  6. Action Controller Stage:  Call all the action controllers including Traffic Controller in order. Wait for one controller to complete before going to the next controller.
    1. Traffic Controller: Creates more resources for traffic routing and management between clusters.
  7. After all the controllers are done processing if there are still multiple clusters that meet the requirements, the orchestrator will pick up the first cluster to schedule the resource.
  8. Send notification to the resource sync to schedule the resources on the selected clusters. Once the resources are scheduled to be created the resource scheduler sends back notification to the orchestrator which in turn returns http response as a success for the instantiation API.
  9.  Resource Sync will periodically check the status of the  resources and update the database with the status of the resource.

RESTful North API (with examples)

...