This project provides a home for Akka.NET cluster management, bootstrapping, and more. These tools aims to help with cluster management in various dynamic environments such as Azure, Amazon AWS and Kubernetes.
Akka.Management- Akka.Cluster management tool over HTTP. You can read more in the documentation here.Akka.Management.Cluster.Bootstrap- Automated Akka.Cluster bootstrapping in a dynamic environment. You can read more in the documentation here.NOTE
As of version 1.0.0, cluster bootstrap came bundled with the core
Akka.ManagementNuGet package and are part of the default HTTP endpoint forAkka.Management. AllAkka.Management.Cluster.BootstrapNuGet package versions below 1.0.0 should now be considered deprecated.Akka.Discovery.AwsApi- Akka.Cluster bootstrapping discovery service using EC2, ECS, and the AWS API. You can read more in the documentation here.Akka.Discovery.KubernetesApi- Akka.Cluster bootstrapping discovery service using Kubernetes API. You can read more in the documentation here.Akka.Discovery.Azure- Akka.Cluster bootstrapping discovery service using Azure Table Storage. You can read more in the documentation here.Akka.Discovery.Dns- Akka.Cluster bootstrapping discovery service using DNS. You can read more in the documentation here.Akka.Discovery.Redis- Akka.Cluster bootstrapping discovery service using Redis. Each node registers itself under a TTL key and refreshes it on a heartbeat; peers discover one another by scanning those keys, and dead nodes are removed automatically by Redis key expiry. A lightweight alternative toAkka.Discovery.Azure, well suited to .NET Aspire local development and any environment that already runs Redis. You can read more in the documentation here.Akka.Coordination.KubernetesApi- provides a lease-based distributed lock mechanism backed by Kubernetes CRD for Akka.NET Split Brain Resolver, Akka.Cluster.Sharding, and Akka.Cluster.Singleton. Documentation can be read hereAkka.Coordination.Azure- provides a lease-based distributed lock mechanism backed by Microsoft Azure Blob Storage for Akka.NET Split Brain Resolver, Akka.Cluster.Sharding, and Akka.Cluster.Singleton. Documentation can be read hereAkka.Aspire.Hosting- .NET Aspire hosting integration. Declare an Akka.NET cluster's topology (discovery backend, replica count, ports) in your Aspire AppHost; every service replica wired withWithReferencethen discovers its peers, forms a cluster, and reports health. You can read more in the documentation here.Akka.Aspire- .NET Aspire service integration.WithAspireClusterBootstrapconfigures Akka.Remote, Akka.Cluster, Akka.Management, Cluster Bootstrap, and a cluster-membership health check from the configuration theAkka.Aspire.HostingAppHost injects — no manual HOCON required. You can read more in the documentation here.
This project supports a wide variety of commands, all of which can be listed via:
Windows
c:\> build.cmd help
Linux / OS X
c:\> build.sh help
However, please see this readme for full details.
build.[cmd|sh] all- runs the entire build system minus documentation:NBench,Tests, andNuget.build.[cmd|sh] buildrelease- compiles the solution inReleasemode.build.[cmd|sh] runtestsnetcore- compiles the solution inReleasemode and runs the unit test suite using the netcoreapp3.1 platform (all projects that end with the.Tests.csprojsuffix). All of the output will be published to the./TestResultsfolder.build.[cmd|sh] runtestsnet- compiles the solution inReleasemode and runs the unit test suite using the net5.0 platform (all projects that end with the.Tests.csprojsuffix). All of the output will be published to the./TestResultsfolder.build.[cmd|sh] nbench- compiles the solution inReleasemode and runs the NBench performance test suite (all projects that end with the.Tests.Performance.csprojsuffix). All of the output will be published to the./PerfResultsfolder.build.[cmd|sh] nuget- compiles the solution inReleasemode and creates Nuget packages from any project that does not have<IsPackable>false</IsPackable>set and uses the version number fromRELEASE_NOTES.md.build.[cmd|sh] nuget nugetprerelease=dev- compiles the solution inReleasemode and creates Nuget packages from any project that does not have<IsPackable>false</IsPackable>set - but in this instance all projects will have aVersionSuffixof-beta{DateTime.UtcNow.Ticks}. It's typically used for publishing nightly releases.build.[cmd|sh] nuget SignClientUser=$(signingUsername) SignClientSecret=$(signingPassword)- compiles the solution inReleasemodem creates Nuget packages from any project that does not have<IsPackable>false</IsPackable>set using the version number fromRELEASE_NOTES.md, and then signs those packages using the SignClient data below.build.[cmd|sh] nuget SignClientUser=$(signingUsername) SignClientSecret=$(signingPassword) nugetpublishurl=$(nugetUrl) nugetkey=$(nugetKey)- compiles the solution inReleasemodem creates Nuget packages from any project that does not have<IsPackable>false</IsPackable>set using the version number fromRELEASE_NOTES.md, signs those packages using the SignClient data below, and then publishes those packages to the$(nugetUrl)using NuGet key$(nugetKey).build.[cmd|sh] DocFx- compiles the solution inReleasemode and then uses DocFx to generate website documentation inside the./docs/_sitefolder. Use the./serve-docs.cmdon Windows to preview the documentation.
This build script is powered by FAKE; please see their API documentation should you need to make any changes to the build.fsx file.