fabric8 ci/cd
TRANSCRIPT
Fabric8CI/CD
● happy father
● SA in EPAM Systems
● Java is my primary language
● hands-on-coding with Groovy, Ruby
● exploring FP with Erlang/Elixir
● passionate about agile, clean code and devops
Agenda● What is CI/CD?● Foundation● Fabric8● Demo● Takeaways● References● Q&A
What...is
CI/CD?
CI/CD
Foundation
Architecture
● Image○ Read-only FS○ Deploy & Share○ Blueprint for a
container
Concepts● Container
○ Read-write FS○ Image Instance○ Has a lifecycle
● Volume○ External storage○ Share data○ Persist data
● Registry○ Image Repository
Storage
Docker CLI● docker search #search for images in a registry● docker pull #downloads image from a registry● docker images #displays existing images on a machine● docker run #creates and runs container from an image● docker ps #displayes all containers● docker start/stop #starts/stops containers● docker rm #removes containers● docker rmi #removes images
Concepts● Pod (collection of one or more Docker containers)
● Replication Controller (creates and cares about PODs)
● Service (proxy for a collection of PODs with single IP)
● Namespaces (divide cluster resources between multiple uses)
● Nodes (worker machine)
● Secret (holds sensitive information)
Concepts● Labels (used to specify identifying attributes of objects)
● Volume (volume with POD’ lifecycle)
● Persistent Volumes (networked storage in the cluster)
● Persistent Volume Claim (a request for storage)
● etc
Architecture
K8s CLI● kubectl get pods #displayes PODs● kubectl get services #displayes services● kubectl get rc #displayes replication controllers● kubectl get nodes #displayes nodes● kubectl create #creates objects ● kubectl delete #deletes objects● kubectl edit #allows to modify resource on the server● kubectl scale #sets a new size for RC or DC● kubectl autoscale #auto sets a new size for RC or DC based on metrics
Concepts● Build (transformation of input parameters into a resulting object)
● Image Stream (automatically performs image build on events)
● Route (exposes service by externally-reachable name)
● Template (describes a set of objects that can be parameterized and processed to
produce a list of objects for creation by OpenShift)
● Deployment Config (adds support for software deployments concept)
● Project (is a Kubernetes namespace with additional annotations)
Architecture
OpenShift CLI● oc project #switches between projects● oc get routes #displayes routes● oc rsh $cnt #ssh into container● oc new-app #creates new application● oc new-build #creates new build● oc deploy #views, starts, cancels, or retries a deployment● oc rollback #reverts part of an application back to a previous deployment● oc import-image #import Docker image from registry
History● Fuse ESB (Open Source integration platform by FuseSource)
● Fabric (extension for managing many ESBs)
● Fabric8 1.x (Red Hat acquired FuseSource in 2012; Fuse ESB => JBoss Fuse; Fabric
closed; based on Zookeeper)
● Fabric8 2.x (on top of Kubernetes, 1.x become Jube - pure Java implementation of
Kubernetes API)
Architecture
Services & Tools● Fabric8 Console (management console for Kubernetes)
● CD Pipeline (set of CI/CD and infra mgm apps baked into Docker images)
● DevOps Tools (set of tools to deal with k8s and OpenShift)
● iPaaS (set of apps to provide orchestration of messaging, API and integration
svcs)
Demo
Takeaways- Docker is cool for light-weight v12n and simplifies things
- Kubernetes is powerful container orchestration platform
- OpenShift enhances “Build” capabilities on top of k8s
- Fabric8 enables CI/CD to shine with less effort
- Explore technologies to move faster
References- Fabric8 http://fabric8.io
- Kubernetes http://k8s.io/
- OpenShift https://www.openshift.org/
- Jenkins Job DSL https://jenkinsci.github.io/job-dsl-plugin/
- Source Code https://github.com/webdizz/fabric8-ci-cd
Q&A