General Questions

What is the license?

fabric8 uses the Apache 2.0 License.

What is it?

Fabric8 is an integrated open source DevOps and Integration Platform which works out of the box on any Kubernetes or OpenShift environment and provides Continuous Delivery, Management, ChatOps and a Chaos Monkey.

What does fabric8 do?

Fabric8 (pronounced fabricate) gives you out of the box services that assist you when building microservices, monoliths or any application in a linux container (Docker/Rocket) environment and is built on top of Kubernetes.

What value does fabric8 add over OpenShift?

  • Kubernetes provides a Docker based Container As A Service (orchestrates docker containers)
  • OpenShift V3 extends Kubernetes to support a full Platform As A Service
    • hosting source code in git repositories
    • performing builds and hosting private docker images
    • supporting the git-push style model of kicking off new builds
  • Fabric8 is focused on:
    • providing a great Kubernetes Console based on hawtio so you can view all of the kubernetes resources, understand whats going on and see the big picture or zoom inside inside individual containers and link to logs and metrics
    • being an Integration Platform As A Service and a Java Application Platform As A Service
    • adding extra services, tooling & quickstarts to make the Kubernetes platform richer and more powerful for the Java ecosystem via:

Is Fabric8 Java centric?

The short answer is no ;).

  • Fabric8 Management works with any Docker images on Kubernetes - so its completely language, framework and runtime agnostic. The console has added extra introspection and visualisation for Java docker containers which contain a Jolokia but we hope to add more deep introspection tools for other languages. Certainly you can always use any language, framework or runtime specific diagnostic or visualiation tools on Kubernetes directly
  • Fabric8 DevOps focusses on working with any project with any build mechanism running Docker images on Kubernetes. So any language, framework and runtime is supported with any build tooling. Whether thats using OpenShift's Source to image build mechanism, or our preferred Continuous Delivery using Jenkins Workflow.
  • Fabric8 iPaaS (Integration Platform is more Java centric in the sense that integration flows tend to be implemented using Apache Camel which runs inside a Java virtual machine (JVM) but the services that Camel integrates with can be any technology, language, runtime, on premise or SaaS etc.
  • Fabric8 API Management works with any API implemented in any language or runtime; currently only HTTP based APIs are supported though.

Having said all that; with the Fabric8 iPaaS) focus, we have optimised Fabric8 so that folks who do use Java have an optimised experience of working with Docker, Kubernetes, OpenShift and Fabric8. Though we hope to continue to improve tooling, management and visualisation for other languages and runtimes too.

Is Jenkins Workflow Java centric?

Our preferred tool for Continuous Delivery is to use the Jenkins Workflow plugin with Jenkins.

Jenkins Workflow provides a domain specific language for orchestrating long running build tasks such as building, testing, approving, promoting and deploying steps using the Groovy programming language.

The preferred approach to using Jenkins Workflow is to reuse docker images for all your build and testing tools; so that most of the details in your Jenkinsfile tends to be running commands inside docker images. So your CD pipeline definition is usually a list of commands using whatever tools you use (Maven, Grunt, Gulp, Make, bash, python, ruby, whatever) which is completely language, tool and framework agnostic.

Can Fabric8 DevOps work with my CI server?

Our preferred tool for Continuous Delivery is to use the Jenkins Workflow plugin with Jenkins.

However this is for orchestrating delivery pipelines which typically involves many tasks such as building, testing, approving, promoting and deploying. How each of those parts work is completely up to you.

For example you can reuse your existing CI server (Jenkins, Bamboo, TeamCity or whatever) to build your code then use a Jenkins Workflow pipeline to move the build through environments, orchestrate system tests, soak tests, acceptance tests, approvals, promotions and so forth.

Our preferred approach is to use Jenkins Workflow pipelines as the core orchestration layer when trying to implement Continuous Delivery, Continous Deployment or Continous Improvement then for that pipeline to trigger whatever is required to complete the pipeline; whether its one or more builds in an existing CI server, triggering OpenShift Source to Image builds or other existing build or test services then orchestrating those along with approval and promotion through Jenkins workflow. It also then means its easier to get a holistic view of your CD pipelines across all projects; irrespective of how each build or test works or what tools are used to build or test projects etc.

Where do I look for the source code?

Fabric8 is comprised of a collection of projects written in Java and Golang and packaged up as Docker containers. The git repos for each of these projects/containers can be found in detail in the project documentation pages

Are Docker and Kubernetes required to run Fabric8?

Fabric8 is designed to work best on top of Kubernetes and Docker; it means fabric8 will work very well in any environment providing the Kubernetes platform such as RHEL Atomic, OpenShift, Google Compute Engine, Azure etc.

Is Windows supported

We recommend using a linux based system for production; preferably if you want a fully managed platform use Docker and Kubernetes or OpenShift Origin V3.

Windows is currently only partially supported. Windows users may consider using Docker so that all the fabric8 technologies run inside a linux VM in lightweight containers.

What maven plugin goals are available?

See the list of maven plugin goals

What Java versions are supported?

fabric8's Java code uses Java 8 but any docker image can use any version of any language, runtime or framework it wishes

Does Fabric8 use ZooKeeper runtime registry?

No, not anymore. Fabric8 1.x used ZooKeeper to share the runtime information between applications and to discover services. Kubernetes comes with the etcd internally which serves much of the same purpose and has support for the services binding, so Fabric8 v2 doesn't need ZooKeeper registry anymore for general purpose provisioning of containers and services.

However certain services will still require master slave election and partitioning functionality (such as running clusters of ActiveMQ); where either etcd or Apache ZooKeeper is required. If a Kubernetes environment allows it then fabric8 could reuse the underlying etcd cluster; otherwise an etcd or ZK clusters is required for things like ActiveMQ clustering.

Does Fabric8 still use profiles to configure application deployment?

No, not anymore. Starting from v2 Fabric8 uses app JSON files (i.e. Kubernetes extension proposed by OpenShift 3) to configure deployment of the managed application. More detailed configuration (like properties or YAML files) can be added to the file system of the application's Docker image.

Is Git repository still used to store the applications' configuration?

Applications' configuration isn't stored in Git repository as it used to be in Fabric8 v1. As Fabric8 v2 doesn't use profiles (but app templates instead), the Git repository is not needed anymore. You can just store application's configuration (app file) in the Maven project and use the Fabric8 Maven plugin to start the application in Kubernetes without keeping the configuration in any central repository (like Git).

However keeping app files in Git for easier configuration management is recommended. That's why fabric8 has integrated with Gogs for on premise git repository hosting. This comes from the fabric8 DevOps features.

Is Fabric8 server required to provision applications?

No, not anymore. Starting from Fabric8 v2 Kubernetes is responsible for providing the runtime registry for the managed applications. It means that you don't have to start any dedicated Fabric8 deamon. Tools like Fabric8 Maven plugin or Hawt.io can connect directly to the Kubernetes and deploy/manage it.

If there is no Fabric8 server, how can I use Fabric8 shell?

For the Fabric8 v2 development activities, the recommended tool is JBoss Forge with the Fabric8 add-on.

For provisioning purposes (like creating containers/services or changing the replica sizes) you can use the Fabric8 add-on or use the shell from OpenShift/Kubernetes.

Kubernetes will be included in Red Hat Enterprise Linux and OpenShift V3 and is the standard shell for provisioning any kind of the container.

Deprecations

FAB (Fuse Application Bundles) has been deprecated for the 1.2 release and removed from 2.x.