/fabric8-platform

Generates the distribution of the fabric8 microservices platform

Primary LanguageShellApache License 2.0Apache-2.0

Fabric8 Developer Platform

This project generates the distribution of the fabric8 developer platform

fabric8 logo

To install the early access of this on Minishift check out the installation guide

Projects

The fabric8 developer platform is based on lots of different open source projects. Here's the main fabric8 repositories:

We are working on migrating the consoles to Angular 2. All the Angular 2 based UI work is hosted in the fabric8-ui github organisation.

Here are the Angular 2 versions of the consoles:

CI / CD

Tools

  • gofabric8 is a go based CLI tool for installing and managing fabric8

Suppport for non-docker

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).

  • kansible lets you orchestrate operating system processes on Windows or any Unix in the same way as you orchestrate your Docker containers with Kubernetes by using Ansible to provision the software onto hosts and Kubernetes to orchestrate the processes and the containers in a single system

Java Libraries

If you want to write any Java/JVM based tools to interact with Kubernetes we have a number of libraries to help:

Kubernetes

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.

Testing

#### Spring

ActiveMQ

  • mq-client provides the the io.fabric8.mq.core.MQConnectionFactory class which implements the JMS ConnectionFactory to connect to Apache ActiveMQ Artemis using the Kubernetes Service discovery mechanism which requires no user configuration (other than a single environment variable if you wish to switch to a non default service implementation)

Camel

  • 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.

CDI

  • fabric8-cdi provides an easy way to work with Kubernetes services using the CDI Dependency Injection approach
  • fabric8-apt provides an APT code generator to create a JSON Schema file for each environment variable injected by the @ConfigProperty annotation from deltaspike - giving dteails of the name, type, default value and description. This can then be used by the fabric8:json maven goal to list all of the environment variables and their

DevOps

  • fabric8-devops-connector provides a Java library for connecting the various DevOps services like git hosting, chat, issue tracking and jenkins for a project reusing the optional fabric8.yml file

### Git Repos

### Hubot

  • hubot-api provides a Java API for working with the Hubot chat bot for sending notifications to chat services like Lets Chat, IRC, Slack, HipChat and Campfire

### Letschat

### Taiga

  • taiga-api provides a Java API for working with the Taiga issue tracker / kanban / scrum management system

Additional projects

The web console uses many different hawtio 2 modules. In particular the main dependency of is hawtio-kubernetes

Docker images

There are numerous docker images created via separate github repositories such as the following:

Base images

The above-packaged docker images leverage some of these base Docker images:

Java Alpine Linux

Java Centos Linux

JBoss

Jetty

Karaf

Tomcat

s2i

v 4.x pre-release development

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-platform/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

Configure Keycloak

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.

https://developer.github.com/apps/building-integrations/setting-up-and-registering-oauth-apps/registering-oauth-apps/

Register OAuth App

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.

GitHub provider