Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implementation of Ground Control for Satellite #28

Open
bupd opened this issue Jun 29, 2024 · 1 comment
Open

Implementation of Ground Control for Satellite #28

bupd opened this issue Jun 29, 2024 · 1 comment

Comments

@bupd
Copy link
Collaborator

bupd commented Jun 29, 2024

Objective

image

We aim to design and implement a ground control system that manages the artifact synchronization with edge locations and function as a service endpoint for satellites. Ground control will authenticate satellites, provide a list of images that should be present on the satellite, and facilitate seamless replication of container images to edge locations.

Background

The satellite program is deployed at multiple edge locations, serving as local container registries. Each satellite requests image lists from ground control, which authenticates the satellite and provides the necessary image details. Satellites then pull these images from the central registry and maintain updated copies, enabling efficient distribution of containerized applications.

Responsibilities

  • Satellites deployed at 1000+ locations request an image list from ground control.
  • Ground control registers satellites.
  • Ground control authenticates each satellite.
  • Ground control provides image lists tailored for each satellite.
  • Ground control validates and responds to image list requests.
  • Ground control has an interface for the management of image lists to be sent to satellites.
  • Ground control has adapters for central registry to retrieve available image lists.
  • Ground control stores which images need replication to which satellites in the database.
  • Ground control synchronizes image list data with the central registry.
  • Satellites pull and store these images, checking for updates at regular intervals (e.g., every 5 minutes).

Implementation Plan

Ground Control Capabilities

Fleet Management

  • Satellite Registration: Implement a registration mechanism for satellites to enroll and get recognized by ground control.
  • Authentication: Integrate an authentication process to validate satellite requests and ensure secure communication.

Image Management

  • Logical Mapping of Image Sets: Create mappings that associate specific image sets with satellite groups. This allows different satellites to receive tailored image lists based on their group.
  • State Monitoring of Replications: Implement monitoring to track the replication status and health of image synchronization across satellites.

Information Stored in Ground Control

  • List of Images: Maintain a list of images required by each satellite.
  • Remote State: Track the current state of OCI artifacts on each remote satellite.
  • Heartbeat of Satellites: Monitor the operational status of satellites via periodic heartbeat signals.
  • Satellite Configuration: Store and manage configuration details for each satellite.

Interfaces of Ground Control

Satellite Interface

  • Develop an API for satellites to request image lists and report status updates.
  • Use REST or gRPC for communication, ensuring secure and reliable interactions.

Adapter Interface

  • Implement adapter patterns to interface with various remote container registries (e.g., Docker Hub, Harbor).
  • Adapters should handle authentication, querying, and data retrieval from respective registries.

Management Interface

  • Image Management: Provide an interface for administrators to manage image lists and satellite groups.
  • Satellite Management: Allow management of satellite configurations and monitoring of their status.

Technologies and Protocols

  • Frameworks: Use gRPC/HTTP for communication.
  • Registry Integration: Utilize Harbor as the central remote container registry, leveraging its robust API for image management.
  • Security: Implement TLS for all communications between satellites and ground control.

Implementation Steps

  1. Design Phase

    • Define data models for satellites, image lists, and configurations.
    • Design API specifications for satellite and management interfaces.
    • Outline adapter interface specifications for registry integration.
  2. Development Phase

    • Satellite Registration & Authentication: Implement the satellite registration process and integrate authentication mechanisms.
    • Image List Management: Develop functionality to manage image lists and map them to satellite groups.
    • Monitoring and State Tracking: Build state monitoring features to track replication and satellite health.
    • Interface Development: Develop the satellite API, management interface, and registry adapters.
  3. Testing Phase

    • Conduct E2E tests for ground control.
    • Perform integration tests to ensure seamless interaction between ground control and satellites.
    • Simulate edge cases to validate system robustness.

Expected Outcomes

  • Efficient management of container images across edge locations.
  • Secure and reliable communication between satellites and ground control.
  • Scalable solution capable of handling thousands of edge locations.
  • Simplified administration of satellite configurations and image lists.

Request for Feedback

We are seeking feedback and suggestions on this implementation plan, especially regarding the proposed technologies, protocols, and any potential improvements to enhance system robustness and scalability.

@bupd
Copy link
Collaborator Author

bupd commented Jun 29, 2024

For initial implementation, We can create a basic service that manages a single group of satellites and provides a predefined list of images. This version of ground control will include a minimal set of features.

Simple ground control implementation with the following key features

  • Maintains a list of container images and their digests.
  • Provides this list to requesting satellites.
  • Simple authentication mechanism for satellites.
  • Configurable via a JSON/YAML file.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant