Maestro Server is an open source software platform for management and discovery servers, apps and system for Hybrid IT. Can manage small and large environments, be able to visualize the latest multi-cloud environment state.
To test out the demo, Demo Online
Repository for infra as code
- Docker compose
- Vagrant box add
- Kubernetes minikube
- Kubernetes Prd
You can run Maestro server stack on minikube, got to kubernetes/minikube folder, we advice to start a deployment as database and queue message
kubectl apply -f rabbitmq/
kubectl apply -f mongodb/
Will create a simple deployment and internal expose service. You can use maildev to test a smtp box.
After start to up all services
kubectl apply -f maestro-data/
kubectl apply -f maestro-analytics-front/
kubectl apply -f maestro-analytics/
kubectl apply -f maestro-discovery/
kubectl apply -f maestro-reports/
kubectl apply -f maestro-scheduler/
kubectl apply -f maestro-server/
kubectl apply -f maestro-websocket/
kubectl apply -f maestro-client/
Or a simple one command
source run.sh
Now you can access on http://localhost:31240
Run a lot of services on kubernetes can be a trick, there are a lots of configuration, architectures and ways to accomplish this task the simple one is.
We can use a simple docker to run mongodb, but we advise to use stateful set service and deploy at least 3 replica sets, one of the best resources about mongo on kubernetes is http://k8smongodb.net/.
Rabbitmq it's used only in an async task without any critical point out, a simple container with good liveness can be enough.
After maestro use 4 secrets group, mongo_srv: It's a mongo srv string [mongo+srv://] or mongo_uri: It's old mongo url [mongo://] smtp: Smtp credencials used on forgot password feature storage: Bucket credencials to storage the avatar images, you can use a local or a s3 storage type.
To create a secret on kubernetes run
kubectl create secret generic mongo_srv --from-env-file ./secrets/mongo_srv.txt
kubectl create secret generic smtp --from-env-file ./secrets/smtp.txt
kubectl create secret generic storage --from-env-file ./secrets/storage.txt
At the moment you must have a mongo db and rabbitmq running all credentials stored on k8s secrets and one smtp service activated.
After these you can create an internals service in straight forward way:
kubectl apply -f maestro-data/
kubectl apply -f maestro-analytics/
kubectl apply -f maestro-discovery/
kubectl apply -f maestro-reports/
kubectl apply -f maestro-scheduler/
Next service require a external expose, by default we use LoadBalance services, each service will export a port by 80
kubectl apply -f maestro-analytics-front/
kubectl apply -f maestro-server/
kubectl apply -f maestro-websocket/
Now we need to configure our maestro-client service with all endpoints, open the maestro-client.yaml and change some env variables.
env:
- name: API_URL
value: "//api.maestroserver.io" //maestro server endpoint
- name: STATIC_URL
value: "https://s3.amazonaws.com/awsmaestro/" //if you use third bucket please put the full endpoint outherwise use /static/
- name: ANALYTICS_URL
value: "//graphs.maestroserver.io" // analytics front endpoint
- name: WEBSOCKET_URL
value: "wss://webscoket.maestroserver.io:8443" //websocket endpoint
And apply
kubectl apply -f maestro-client/
Are you interested in developing Maestro Server, creating new features or extending them?
We created a set of documentation, explaining how to set up your development environment, coding styles, standards, learn about the architecture and more. Welcome to the team and contribute with us.
We may be able to resolve support queries via email. Please send me a message here
I have made Maestro Server with my heart, think to solve a real operation IT problem. Its not easy, take time and resources.
The donation will be user to:
- Create new features, implement new providers.
- Maintenance libs, securities flaws, and technical points.