Generates the distribution of the fabric8 microservices platform
This project generates the distribution of the fabric8 developer platform
To install the early access of this on Minishift check out the installation guide
From version 4.x onwards of the fabric8 platform there are a core set of shared services which are shared by all users then a set of services created for each user/team which we refer to as tenant services.
when installing on premise we also use these microservices:
Each user/team can get their own Jenkins, Che and Content Repository.
Our Jenkins image includes the jenkins sync plugin and kubernetes-pipeline-plugin along with the fabric8-pipeline-library
Version 4.x of fabric8 differs a little bit from previous 3.x releases as follows:
There are lots of github repositories which make up the full platform!
To make things easier to navigate we've created a few different organisations to contain the various parts of fabric8:
The fabric8 developer platform is based on lots of different open source projects. Here's the main repositories:
The new shiny Angular console is here fabric8-ui along with a bunch of other NPM modules in the fabric8-ui organisation
The new console works directly with
The angular JS 1.x version of the Developer Console is made up of:
Jenkinsfile
via the @Library annotation
Jenkinsfile
files you can use on your projects. The Jenkisnfiles
resue the [fabric8-pipeline-library](https://github.com/fabric8io/fabric8-pipeline-library and they are used by the Developer Console when creating projects or choosing pipelines.Some folks have work loads they need to orchestrate on operating systems that don't yet have production quality docker support (e.g. Windows, AIX, Solaris, HPUX).
If you want to write any Java/JVM based tools to interact with Kubernetes we have a number of libraries to help:
Kubernetes provides the main REST API for working with the Kubernetes Platform. It should provide all you need for writing most services and plugins for Kubernetes.
kubernetes-model the Java DTOs for working with kubernetes and OpenShift which are generated from the go source code in kubernetes and OpenShift
kubernetes-client provides a Java API for working with the Kubernetes and OpenShift REST API (pods, replication controllers, services etc)
fabric8 contains the main java libraries such as:
kubernetes-api provides helper APIs around the kubernetes-client for working with Kubernetes and OpenShift
kubernetes-jolokia makes it easy to work with the Jolokia Client API and Java containers running in Pods inside Kubernetes which expose the Jolokia port
### Spring
camel-amq provides the Camel amq: component which uses the Kubernetes Service discovery mechanism to discover and connect to the ActiveMQ Artemis brokers so that no configuration is required (other than a single environment variable if you wish to switch to a non default service implementation)
camel-master provides the Camel master: component which provides a locking mechanism to ensure that only one pod implements a consumer at any time; if that pod dies then another one takes over.
fabric8.yml
file### Git Repos
### Hubot
### Letschat
### Taiga
The web console uses many different hawtio 2 modules. In particular the main dependency of is hawtio-kubernetes
There are numerous docker images created via separate github repositories such as the following:
The above-packaged docker images leverage some of these base Docker images:
Steps to run the in development 4.x fabric8-platform using the latest mnishift please see the new Install Guide
Here's the old way we were installing it via gofabric8:
minishift start --vm-driver=xhyve --memory=6144 --cpus=4 --disk-size=50g --openshift-version=v3.6.0-alpha.1
minishift openshift config set --patch '{"corsAllowedOrigins": [".*"]}'
oc new-project fabric8
git clone https://github.com/fabric8io/fabric8-platform.git
cd fabric8-platform
mvn clean install -DskipTests=true
gofabric8 deploy --package=packages/fabric8-system/target/classes/META-INF/fabric8/openshift.yml
Pods may be restarted a few times whilst configuration is updated and applied.
Once all pods are seen running with oc get pods
NOTE these next steps will be automated soon
Apply manual step as an admin user:
oc login -u system:admin
cat <<EOF | oc create -f -
kind: OAuthClient
apiVersion: v1
metadata:
name: fabric8-online-platform
secret: fabric8
redirectURIs:
- "https://$(oc get route keycloak -o jsonpath="{.spec.host}")/auth/realms/fabric8/broker/openshift-v3/endpoint"
grantMethod: prompt
EOF
oc adm policy add-cluster-role-to-user cluster-admin system:serviceaccount:fabric8:init-tenant
oc login -u developer -p developer
We now have GitHub integration which for now requires a manual OAuth setup to obtain a clientid and secret that we will give to keycloak. Follow these steps using the output of:
echo https://$(oc get route keycloak -o jsonpath="{.spec.host}")/auth/realms/fabric8/broker/github/endpoint
as the Authorization callback URL and http://fabric8.io
as a sample homepage URL.
open https://$(oc get route keycloak -o jsonpath="{.spec.host}")
Log in with username admin
and password admin
Now in Keycloak navigate to the GitHub Identity Provider and edit
now you can replace the Client ID and Secret with the values you get from the GitHub setup above.