edge-cloud-platform

module
v1.2.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 23, 2024 License: Apache-2.0

README

Edge-Cloud Platform

The Edge-Cloud Platform is a set of services that allow for distributed and secure management of edge sites ("cloudlets"), featuring deployment of workloads, one-touch provisioning of new cloudlets, monitoring, metrics, alerts, events, and more.

The platform is intended to satisfy the architecture of an Operator Platform as described in the GSMA document, Operator Platform Telco Edge Proposal, and adhere to standardized interfaces developed by CAMARA.

Services

  • The Controller provides the API endpoint for, and manages creating, updating, deleting, and showing application definitions, cloudlets, clusters, application instances, policies, etc. It manages object dependencies and validation, stores objects in Etcd, and distributes objects to other services that need to be notified of data changes.

  • The Cloudlet Resource Manager (CRM) manages infrastructure on a cloudlet site, calling the underlying infrastruture APIs to instantiate virtual machines, docker containers, kubernetes clusters, or kubernetes applications, depending on what the actual infrastructure type supports.

  • The Central Cloudlet Resource Manager (CCRM) manages the lifecycle of CRMs deployed on edge sites.

  • The Distrbuted Matching Engine (DME) provides the API endpoint for mobile device clients to discover existing application instances, provide operator-specific services like location APIs, and push notifications to mobile devices via a persistent connection.

  • The ClusterSvc service automatically deploys additional applications to clusters to enable monitoring, metrics, and storage.

  • The EdgeTurn service is much like a TURN server, providing secure console and shell access to virtual machines and containers deployed on cloudlets.

  • Shepherd deploys alongside the CRM (Cloudlet Resource Manager) on cloudlet infrastructure for advanced metrics and alerts.

  • The AutoProv service monitors auto-provision policies and automatically deploys and undeploys application instances based on client demand.

Edge-Cloud Infrastructure Platform Code

Infrastructure specific code is packaged under an interface to allow for new infrastructures to be supported without needing to modify the edge-cloud platform code.

Currently supported infrastructures are:

VM-Based:
  • Openstack
  • VMWare VSphere
  • VMWare Cloud Director (VCD)
  • VMPool (a bunch of VMs)
  • Amazon Web Services (AWS) EC2
Kubernetes Based:
  • Amazon Web Services (AWS) EKS
  • Google Cloud Platform (GCP) GKE
  • K8S Bare Metal (primarily but not limited to Google Anthos)
  • Microsoft Azure Kubernetes Service (AKS)

Compiling

To build the platform services, you will need Go and protoc installed. Please see go.mod for the correct version of golang to install. Ensure that your GOPATH is set.

You will need to build the tools once first:

make tools

You will need to have the edge-proto repo checked out adjacent to this repo.

Then to compile the services:

make

Testing

There are an extensive set of unit tests. Some unit tests depend on local installations of supporting open source projects and databases. You will need to install docker, certstrap, Etcd, Redis, Vault, and Influxdb. See the test setup script.

make unit-test

Building Images

Scripts for building container images are in /build/docker. You will need to have docker installed on your machine. You may need to set the REGISTRY environment variable to the registry and parent path to push to, i.e.

export REGISTRY=ghcr.io/edgexr
cd build/docker
make build-platform

To build without pushing:

make build-platform-local

Directories

Path Synopsis
api
distributed_match_engine
Package distributed_match_engine is a reverse proxy.
Package distributed_match_engine is a reverse proxy.
edgeproto
Package edgeproto is a reverse proxy.
Package edgeproto is a reverse proxy.
nbi
Package nbi provides primitives to interact with the openapi HTTP API.
Package nbi provides primitives to interact with the openapi HTTP API.
cmd
ccme/resource-tracker
This is a utility to get resource utilization of a system it uses psutil package to query different subsystems This script produces json data for shepherd consumption:
This is a utility to get resource utilization of a system it uses psutil package to query different subsystems This script produces json data for shepherd consumption:
pkg
ccrmdummy
Package ccrmdummy is for unit-tests that need to call ccrm APIs
Package ccrmdummy is for unit-tests that need to call ccrm APIs
cli
controller
useralert config
useralert config
crm
dnsmgmt
Package dnsmgmt manages DNS entries
Package dnsmgmt manages DNS entries
env
log
notify
Dummy Sender/Receiver for unit testing.
Dummy Sender/Receiver for unit testing.
nrem-platform/operalpha/proto
Package queryqos is a generated protocol buffer package.
Package queryqos is a generated protocol buffer package.
platform/common/cloudletssh
Package cloudletssh provides for a shareable, on-demand provider of signed ssh keys.
Package cloudletssh provides for a shareable, on-demand provider of signed ssh keys.
platform/osmano/osmapi
Package osmapi provides primitives to interact with the openapi HTTP API.
Package osmapi provides primitives to interact with the openapi HTTP API.
proxy/certs-cache
Package certscache provides for issuing and caching of cloudlet rootLB certificates.
Package certscache provides for issuing and caching of cloudlet rootLB certificates.
syncdata
Package syncdata provides for synchronizing data
Package syncdata provides for synchronizing data
tls
test
testutil/testservices
This file is not in the same package as notify to avoid including the testing packages in the notify package.
This file is not in the same package as notify to avoid including the testing packages in the notify package.
tools

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL