fed4fire

command module
v0.0.0-...-5c10511 Latest Latest
Warning

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

Go to latest
Published: Jul 1, 2022 License: Apache-2.0 Imports: 17 Imported by: 0

README

Fed4FIRE Aggregate Manager for EdgeNet

CI/Build CI/Docker Coverage

This package implements the GENI Aggregate Manager API Version 3 to federate EdgeNet under the Fed4FIRE+ project.

Accessing EdgeNet through Fed4FIRE

  • To run experiments on a Fed4FIRE testbed, follow the instructions at https://doc.fed4fire.eu.
  • EdgeNet defines one non-exclusive sliver type named container and one disk image named ubuntu2004.
  • View the testbed status on FedMon.
Example RSpecs
Minimal
<rspec type="request" xsi:schemaLocation="http://www.geni.net/resources/rspec/3 http://www.geni.net/resources/rspec/3/request.xsd " xmlns:client="http://www.protogeni.net/resources/rspec/ext/client/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.geni.net/resources/rspec/3">
  <node client_id="PC" component_manager_id="urn:publicid:IDN+edge-net.org+authority+am"  exclusive="false">
  </node>
</rspec>
Specific node and disk image
<rspec type="request" xsi:schemaLocation="http://www.geni.net/resources/rspec/3 http://www.geni.net/resources/rspec/3/request.xsd " xmlns:client="http://www.protogeni.net/resources/rspec/ext/client/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.geni.net/resources/rspec/3">
  <node client_id="PC" component_id="urn:publicid:IDN+edge-net.org+node+geni-us-tn-cb07.edge-net.io" component_manager_id="urn:publicid:IDN+edge-net.org+authority+am"  exclusive="false">
      <sliver_type name="container">
          <disk_image name="urn:publicid:IDN+edge-net.org+image+ubuntu2004"/>
      </sliver_type>
  </node>
</rspec>

Architecture

  • The AM server is stateless, all the information about slices and slivers is stored in Kubernetes objects annotations.
  • Object names are derived from the first 8 bytes of the SHA512 hash of the RSpec name. This allows to create objects with names that are valid in the GENI spec, but not in Kubernetes which mostly allows only alphanumeric chars.
Workarounds
  • Fed4FIRE uses client certificates with non-standard OIDs that are not supported by the Go X.509 parser. As such we rely on nginx to verify the client certificate and pass the decoded certificate to the AM server. The openssl CLI tool is then used to process the certificate, instead of the Go standard library.

Deployment

The AM image is hosted on Docker Hub (edgenetio/fed4fire):

docker run edgenetio/fed4fire:main --help

The AM must be deployed behind a reverse proxy that pass the X-Fed4Fire-Certificate header. For an example, see dev/nginx.conf.

Development

git clone git@github.com:EdgeNet-project/fed4fire.git && cd fed4fire/dev/
# Create a self-signed server certificate and download the trusted client root certificates
make
# Start the AM behind nginx
docker-compose up
# Optionnally, connect to the Go debug server
dlv connect localhost:40000
# Issue XML-RPC calls (set `--cert` to the appropriate client certificate path)
curl --cacert self_signed/ca-server.pem \
     --cert ~/.jFed/login-certs/*.pem \
     --data '<methodCall><methodName>GetVersion</methodName><params/></methodCall>' \
     --header 'Content-Type: text/xml' \
     --request POST \
     https://localhost:9443

Documentation

Overview

This package implements the Fed4Fire Aggregate Manager API for EdgeNet/Kubernetes.

Specifically, it implements the GENI AM API v3 as specified in https://groups.geni.net/geni/wiki/GAPI_AM_API_V3.

Directories

Path Synopsis
pkg
gc
generated/clientset/versioned
This package has the automatically generated clientset.
This package has the automatically generated clientset.
generated/clientset/versioned/fake
This package has the automatically generated fake clientset.
This package has the automatically generated fake clientset.
generated/clientset/versioned/scheme
This package contains the scheme of the automatically generated clientset.
This package contains the scheme of the automatically generated clientset.
generated/clientset/versioned/typed/fed4fire/v1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
generated/clientset/versioned/typed/fed4fire/v1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
identifiers
Package identifiers implements GENI API Identifiers.
Package identifiers implements GENI API Identifiers.
naming
Package naming maps GENI identifiers to Kubernetes-compatible names.
Package naming maps GENI identifiers to Kubernetes-compatible names.
service
Package service implements the XML-RPC methods specified by the AM API.
Package service implements the XML-RPC methods specified by the AM API.
sfa

Jump to

Keyboard shortcuts

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