A Management System for Microservice Compositions
This is the main repository for the development project MICO at the University of Stuttgart in the masters course Software Engineering.
Supported Kubernetes cluster:
Currently, MICO is only tested with the Azure Kubernetes Service (AKS) and with the Google Kubernetes Engine (GKE). It may also work in other environments.
If you use GKE, please note that you must grant the user the ability to create roles in Kubernetes before installing MICO. This is a prerequisite to use use role-based access control on GKE. For more information see the GKE instructions.
Grant permission for the current user (GKE only):
kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin --user $(gcloud config list account --format "value(core.account)")
Requirements:
kubectl
CLI tool with version v1.10 or newerConfigure kubectl
to use the cluster in the current context.
Setup script:
The interactive setup script install/kubernetes/setup.sh
will install all MICO components and its dependencies in your cluster.
Some cloud providers (like Microsoft Azure) offers the possibility to create a static public IP address. If you want to use such a static IP address to access the MICO dashboard you can provide it during the execution of the script. Otherwise your cloud provider will create automatically a IP address for it.
Execute the script:
./install/kubernetes/setup.sh
After the script is finished, the components (especially the Neo4j database) needs some time to be ready (up to 5 minutes).
Check the current deployment status of the MICO components until all pods are running:
kubectl get pods -n mico-system --watch
Get the public IP address (or the hostname) of the MICO dashboard:
kubectl get svc mico-admin -n mico-system -o jsonpath="{.status.loadBalancer.ingress[*]['ip', 'hostname']}"
Get the public IP address (or the hostname) of the OpenFaaS Portal:
kubectl get svc gateway-external -n openfaas -o jsonpath="{.status.loadBalancer.ingress[*]['ip', 'hostname']}"
Clean up:
kubectl delete -f install/kubernetes/
It is easy to update the license headers of the mico-core project with IntelliJ IDEA.
Create a Copyright Profile in Settings > Editor > Copyright > Copyright Profiles
with the license from CONTRIBUTING.md. Set this profile to the default one for the project and use the "Update Copyright..." feature
on the project root.