bf2fc6cc711aee1a0c2a / ffm-project Goto Github PK
View Code? Open in Web Editor NEWRepository containing issues and roadmap for the factorized fleet manager
License: Apache License 2.0
Repository containing issues and roadmap for the factorized fleet manager
License: Apache License 2.0
The guide is: https://github.com/bf2fc6cc711aee1a0c2a/ffm-fleet-manager-go-template/blob/main/docs/automated-testing.md#integration-tests
It might catch some people by surprise to see the integration tests failing. The idea of having some integration tests was to be able to show how the setup phase is done. So it actually makes sense to skip the failing ones with a note on why they are failing and what will be needed to make them pass.
At the moment the CORS options are hardcoded: https://github.com/bf2fc6cc711aee1a0c2a/ffm-fleet-manager-go-template/blob/main/pkg/server/api_server.go#L97
It'll be good to allow these to be configurable so that each service could put in their own options via configuration.
/cc @SimonBaeumer
Zullip link on communication page for project incorrect:
https://github.com/bf2fc6cc711aee1a0c2a/ffm-project/wiki/How-to-communicate-in-the-project
It's https://bf2/zulipchat.com not https://bf2.zulipchat.com
Related to #20.
The interface template repo is: https://github.com/bf2fc6cc711aee1a0c2a/ffm-fleet-manager-go-template
/cc @akoserwal as discussed.
A mechanism for registering an OpenShift or Kubernetes cluster that can be used to schedule workloads through AppStudio.
Steve wants to streamline his enterprise application lifecycle and operations across any footprint. Steves company PizzaPie.inc has several clusters used for their various environments including both managed and self-managed OpenShift clusters.
Steve registers PizzaPie.incs existing clusters against various managed services which enables his development team to start scheduling services to the existing clusters.
(links to analysis docs containing architecture design work, requirements gathering, etc)
Terraforming and infrastructure management is a common concern for all fleet managers that use a bin packed data plane deployment topology. A shared service would ensure consistency and reliability with data plane cluster fleet management and scaling.
The high-level idea for the API is to achieve:
These are rough ideas above about how this might work. As spikes are completed, this Epic should become more concrete.
Joe, a development lead from ProductA has been tasked with turning it into a managed service, running on a managed OpenShift offering. Joe knows that this new managed service will colocate separate customers service instances on the same managed OpenShift cluster.
Joe hears about the Infrastructure fleet manager, which suits this bin packed deployment topology perfectly. Joe creates a blueprint for his managed service and instantiates a fleet of clusters created using his blueprint in a specific cloud provider and region.
(links to analysis docs containing architecture design work, requirements gathering, etc)
Based on a discussion in Zulip, there are numerous patterns in use for the RHOSAK fleetshard operator which would be useful for other managed services teams looking to build their own.
Some examples:
It is likely this information is captured in ADRs and other documents, ideally this would be made available as links or direct documentation in ffm-fleet-manager-go-template, for now at least. If in the future, there is a separate fleetshard template or SDK, it could be moved at that time.
(links to analysis docs containing architecture design work, requirements gathering, etc)
from the template code, extract a v0.0.0 of the API to have some concrete to discuss across team. It will not be the final API but helps delineate the bounded contexts and thus our services.
DNS management is a common concern for all fleet managers to ensure a consistent format of the service URL exposed for all separate managed service instances. A shared service will also reduce the shared code across managed services.
Samantha is a development lead working for Corporate Inc. She is building a new managed service and needs to follow the company guidelines on URL naming for managed service instance URLs. Samantha onboards with the DNS management service and integrates the new managed service to it, ensuring that there is a record created in the company DNS service Route53 for each new service instance.
Liam is a developer working for Customer Inc and has started using 3 different managed services from Coporate Inc. Liam has noticed that the same domain name is used for each of the managed services with a different subdomain for each of the managed service. This strengthens Liams professional opinion on Corporate Inc.
(links to analysis docs containing architecture design work, requirements gathering, etc)
Most teams creating new service won't have the fleetshard components in the early days. To enable them to deploy the initial version of their managed service that work end to end for first round of testings, they may need to directly deploy the CRs using the trusted data path approach with SyncSet. It might be useful to have this in our template as our v0 of the template.
This stemmed from the bf2fc6cc711aee1a0c2a/ffm-fleet-manager-go-template#22 (comment)
Add documentation/link to dynamic scaling architectural pattern bf2fc6cc711aee1a0c2a/architecture#58
This is more or less a backport of bf2fc6cc711aee1a0c2a/kas-fleet-manager#840
The realm name in that PR will change to match the ones in https://github.com/bf2fc6cc711aee1a0c2a/ffm-fleet-manager-go-template/blob/main/internal/dinosaur/internal/presenters/dinosaur.go#L23
The https://github.com/bf2fc6cc711aee1a0c2a/ffm-fleet-manager-go-template/blob/main/docs/automated-testing.md#adding-new-tests section contains references to a method that does not exists anymore.
The RegisterIntegration()
has been replaced with other setups functions like NewDinosaurHelperWithHooks(..)
, let's update the documentation to mention those instead of the old ones.
A decent portion of the todo in the code are static strings, service name, API path etc.
A way to make a template user life easier and reduce the number of non rebasable code would be to externalize these strings and read them from an external config file, env variable and or config map. That would make life easier for consumers and might not make the template too terribly more complicated.
See description, a decent % of TODO grunt would could be simplified and centralized into an external config file.
How doable it is in Go is to be analyzed as I am less than an novice in it.
When working on the phase 2 (pre-flight checks) of the Factorized Fleet Manager initiative, it was identified
that pre-flight checks where part of a bigger functionality area, which is the area related to Authorization for fleet managers. This could be considered an area that belongs to phase 3 of the Factorized Fleet Manager initiative.
This issue is about defining, extracting and implementing an Authorization mechanism/service for Fleet Manger.
(links to analysis docs containing architecture design work, requirements gathering, etc)
Red Hats managed services should have a consistent user experience for exposing customers service instance metrics. This should be provided in both a JSON and Prometheus text format. Creating a new user-facing metrics service, exposing a subset of managed service instance metrics to the customers will allow the customers to monitor their own managed service instances. It will also allow UIs to display their instance metrics in user-friendly dashboards.
Peter is the team lead for Innovation Inc, which has purchased several Red Hat managed services including Red Hat OpenShift Streams for Apache Kafka (RHOSAK). Peter is using RHOSAK as part of their own internal system and would like to monitor the Kafka instance and include the metrics in their own internal system dashboards. Thankfully, Peter can easily do this by scraping their Kafka instance metrics from the Red Hat user-facing metrics API directly into their companies Prometheus instance.
Steve from Innovation Inc is also interested in viewing his RHOSAK instance metrics, he is happy to view these from his Kafka instance page available on console.redhat.com where he can see several widgets displaying his instances metrics. Curious about where these are coming from, he can see they are retrieved from the /query and query_range endpoints from the Red Hat user-facing metrics API.
(links to analysis docs containing architecture design work, requirements gathering, etc)
Backport a few recent and worthwhile changes of the Makefile from the https://github.com/bf2fc6cc711aee1a0c2a/kas-fleet-manager repository
To build the Java factorized fleet manager, we are considering going for a modern Quarkus approach with default reactive stack. One of the reason for the reactive stack is for me to be confident that adding fleet managers will be low resource intensive. We already aim to deploy 3 instances at minimal (one per AZ). With the idea of deploying 10s of services off this technology, we should aim at resource reduction.
Now today the fleet manager is not an operator, but with Kubernetes Control Plane being a likely target API server in the future, it is very likely that some interaction with the Kube API will be part of the fleet manager responsibility.
Spiking a model where the fleet manager is reactive but use the executor pool for operator SDK tasks and see how simple / complicated that model is
At the moment we do not have documents on how to epic, how to assign an epic to a sprint and milestone.
This issue is about documenting the process. The process and hence the document will likely evolve overtime, but it is good to capture the initial process so that epic creates contains the info needed.
Some fleet managers may need to store sensitive data. The current template is missing a pattern of how this can be done.
Even though encryption at rest can be turned on for some database vendors, it is good to add another layer of protection applicative wise. Some ideas that are current being discussed:
We need to investigate on the best pattern by doing further analysis
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.