Steeltoe Configuration builds upon the .NET configuration API. The service enables developers to configure an application with values from a variety of sources, using Configuration Providers. Each provider reads a set of name-value pairs from a given source location. The data is then added to a multi-level configuration dictionary.
Each value contained in the configuration is tied to a string-typed key or name. The values are organized by key into a hierarchical list of name-value pairs. The components of the keys are separated by a colon (e.g. spring:application: key = value).
Out of the box, Steeltoe supports the following providers/sources:
- Cloud Foundry
- Spring Cloud Config Server including support for multiple backing repositories (use git, Vault, or both)
- Command-line arguments
- File sources (e.g. JSON, XML and INI)
- Environment variables
Microservices frequently depend on other services, but keeping track of dependent services can be a pain (especially when running at scale). How do service consumers find and load balance requests across healthy instances of a dependent service?
Eureka, Netflix's implementation of the Service Discovery application pattern, provides a centralized repository for microservices to register themselves and look up other registered services.
Steeltoe provides a Service Discovery client so your .NET app can connect to a Eureka server and register itself, or fetch a list of healthy service instances.
The Steeltoe Circuit Breaker bring Hystrix to .NET. The service aggregates all the metrics from your microservices into a dashboard so you can see how your app is behaving.
Cloud native architectures are typically composed of multiple layers of distributed services. End-user requests may comprise multiple calls to these services. If a lower-level service fails, this failure can cascade up to the end user and spread to other services. Heavy traffic to a failing service can also make it difficult to repair. With the Circuit Breaker frameworks, you can prevent failures from cascading and provide fallback behavior until a failing service is restored to normal operation.
When applied to a service, a circuit breaker watches for failing calls to the service. If failures reach a certain threshold, it “opens” the circuit and automatically redirects calls to the specified fallback mechanism. This gives the failing service time to recover.
Steeltoe automatically connects your .NET application to data services like Redis, RabbitMQ, MySQL and Postgres.
Connectors enable your apps to discover services bound to your apps on Tanzu. Connectors also support settings-based configuration. That means developers can supply configuration settings at development and testing time, but then have those settings overridden when pushing the application to Tanzu.
All connectors use configuration information from Tanzu’s VCAP_SERVICES environment variable to detect and configure the available services. This a standard across the platform that is used to hold connection and identification information for all service instances.
Steeltoe helps you integrate ASP.NET Core authentication and authorization features with Cloud Foundry security services.
Steeltoe supports secure integration with Cloud Foundry two different ways:
- Use OAuth2 Single Sign-on with Cloud Foundry Security services such as UAA and Tanzu Single Sign-On.
- Use JWT tokens issued by Cloud Foundry Security services for securing access to REST resources/endpoints.
Steeltoe also supports an additional security provider that allows you to easily use a Cloud Foundry based Redis service for ASP.NET Core Data Protection Key Ring storage.