README
¶
Akash Provider Daemon
This folder contains the Akash Provider Daemon. This piece of software listens to events emitted from the Akash blockchain (code in ../app/app.go
) and takes actions on a connected Kubernetes cluster to provision compute capacity based on the bids that the configured provider key wins. The following are the pieces of the daemon:
Development environment
This doc guides through setting up local development environment
Structure
bidengine
The bid engine queries for any existing orders on chain, and based on the on-chain provider configuration, places bids on behalf of the configured provider based on configured selling prices for resources. The daemon listens for changes in the configuration so users can use automation tooling to dynamically change the prices they are charging w/o restarting the daemon. You can see the key management code for provider
tx signing in cmd/run.go
.
cluster
The cluster package contains the necessary code for interacting with clusters of compute that a provider
is offering on the open marketplace to deploy orders on behalf of users creating deployments
based on manifest
s. Right now only kubernetes
is supported as a backend, but providers
could easily implement other cluster management solutions such as OpenStack, VMWare, OpenShift, etc...
cmd
The cobra
command line utility that wraps the rest of the code here and is buildable.
event
Declares the pubsub events that the provider
needs to take action on won leases and received manifests.
gateway
Contains hanlder code for the rest server exposed by the provider
manifest
Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BalanceCheckerConfig ¶
type Client ¶
type Client interface { StatusClient ValidateClient Manifest() manifest.Client Cluster() cluster.Client Hostname() ctypes.HostnameServiceClient ClusterService() cluster.Service }
type Config ¶
type Config struct { ClusterWaitReadyDuration time.Duration ClusterPublicHostname string ClusterExternalPortQuantity uint BidPricingStrategy bidengine.BidPricingStrategy BidDeposit sdk.Coin BidTimeout time.Duration ManifestTimeout time.Duration BalanceCheckerCfg BalanceCheckerConfig Attributes types.Attributes MaxGroupVolumes int RPCQueryTimeout time.Duration CachedResultMaxAge time.Duration cluster.Config }
func NewDefaultConfig ¶
func NewDefaultConfig() Config
type Service ¶
Service is the interface that includes StatusClient interface. It also wraps ManifestHandler, Close and Done methods.
func NewService ¶
func NewService(ctx context.Context, cctx client.Context, accAddr sdk.AccAddress, session session.Session, bus pubsub.Bus, cclient cluster.Client, waiter waiter.OperatorWaiter, cfg Config) (Service, error)
NewService creates and returns new Service instance Simple wrapper around various services needed for running a provider.
type Status ¶
type Status struct { Cluster *ctypes.Status `json:"cluster"` Bidengine *bidengine.Status `json:"bidengine"` Manifest *manifest.Status `json:"manifest"` ClusterPublicHostname string `json:"cluster_public_hostname,omitempty"` }
Status is the data structure that stores Cluster, Bidengine and Manifest details.
type StatusClient ¶
type StatusClient interface { Status(context.Context) (*Status, error) StatusV1(ctx context.Context) (*provider.Status, error) }
StatusClient is the interface which includes status of service
type ValidateClient ¶
type ValidateClient interface {
Validate(context.Context, sdk.Address, dtypes.GroupSpec) (ValidateGroupSpecResult, error)
}
ValidateClient is the interface to check if provider will bid on given groupspec
type ValidateGroupSpecResult ¶
Directories
¶
Path | Synopsis |
---|---|
cmd
|
|
gateway
|
|
pkg
|
|
apis/akash.network/v2beta1
Package v2beta1 is the initial version of types which integrate with the Kubernetes API.
|
Package v2beta1 is the initial version of types which integrate with the Kubernetes API. |
client/clientset/versioned/fake
This package has the automatically generated fake clientset.
|
This package has the automatically generated fake clientset. |
client/clientset/versioned/scheme
This package contains the scheme of the automatically generated clientset.
|
This package contains the scheme of the automatically generated clientset. |
client/clientset/versioned/typed/akash.network/v2beta1
This package has the automatically generated typed clients.
|
This package has the automatically generated typed clients. |
client/clientset/versioned/typed/akash.network/v2beta1/fake
Package fake has the automatically generated clients.
|
Package fake has the automatically generated clients. |
client/clientset/versioned/typed/akash.network/v2beta2
This package has the automatically generated typed clients.
|
This package has the automatically generated typed clients. |
client/clientset/versioned/typed/akash.network/v2beta2/fake
Package fake has the automatically generated clients.
|
Package fake has the automatically generated clients. |
tools
|
|
Package version is a convenience utility that provides provider consumers with a ready-to-use version command that produces apps versioning information based on flags passed at compile time.
|
Package version is a convenience utility that provides provider consumers with a ready-to-use version command that produces apps versioning information based on flags passed at compile time. |