<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by James Strachan on Medium]]></title>
        <description><![CDATA[Stories by James Strachan on Medium]]></description>
        <link>https://medium.com/@jstrachan?source=rss-604a0e049393------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*xxLXhXHkYN7OX7OUCSrpEw.jpeg</url>
            <title>Stories by James Strachan on Medium</title>
            <link>https://medium.com/@jstrachan?source=rss-604a0e049393------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 15 Nov 2026 16:45:25 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@jstrachan/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[fabric8? Please check out Jenkins X instead!]]></title>
            <link>https://medium.com/@jstrachan/fabric8-please-check-out-jenkins-x-instead-8295a025173a?source=rss-604a0e049393------2</link>
            <guid isPermaLink="false">https://medium.com/p/8295a025173a</guid>
            <category><![CDATA[kubernetes]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[jenkins-x]]></category>
            <category><![CDATA[continuous-delivery]]></category>
            <dc:creator><![CDATA[James Strachan]]></dc:creator>
            <pubDate>Tue, 20 Nov 2018 14:59:57 GMT</pubDate>
            <atom:updated>2018-11-20T14:59:57.115Z</atom:updated>
            <content:encoded><![CDATA[<p>I still get the odd comment, tweet or response to a blog post I wrote about fabric8 a year or two ago.</p><p>So for anyone following the fabric8 videos, blogs or old tweets I just wanted to mention that I’ve not been at Red Hat or worked on fabric8 in a year and instead have been working on <a href="https://jenkins-x.io/">Jenkins X</a> instead — automated CI/CD for any kubernetes cluster — and so far its way way more awesome than fabric8 ever was!</p><p>e.g. <a href="https://jenkins-x.io/">Jenkins X</a> supports many clouds and platforms (such as on Google, Amazon, Azure, OpenShift, Pivotal, IBM Cloud) has pluggable build packs and integrated <a href="https://jenkins-x.io/about/features/#preview-environments">Preview Environments</a> and <a href="https://jenkins-x.io/developing/devpods/">DevPods</a>!</p><p>Meanwhile fabric8 as an OSS CI/CD platform has been effectively dead for over a year — its a little cryptic but you can see from the <a href="https://fabric8.io/">home page</a> — message ‘<em>gofabric8 is now sandboxed</em>’ basically means there’s no longer a way to install fabric8 as a CI/CD platform ;).</p><p>The core team behind fabric8 left Red Hat a year ago to join CloudBees and work on <a href="https://jenkins-x.io/">Jenkins X</a>.</p><p>There are still some sub projects within fabric8 that have not been archived like the <a href="https://github.com/fabric8io/fabric8-maven-plugin">fabric8-maven-plugin</a> but mostly fabric8 is now a dead OSS project.</p><p>So if you want an OSS project that does automated CI/CD for any kubernetes cluster (such as on Google, Amazon, Azure, OpenShift, Pivotal, IBM Cloud etc) with automated GitOps promotion through your environments and Preview Environments on your Pull Requests then please do checkout <a href="https://jenkins-x.io/">Jenkins X</a>. Its awesome!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8295a025173a" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[want automated CI/CD on Kubernetes? we got your back!]]></title>
            <link>https://medium.com/@jstrachan/want-automated-ci-cd-on-kubernetes-we-got-your-back-9d34ed8c82cd?source=rss-604a0e049393------2</link>
            <guid isPermaLink="false">https://medium.com/p/9d34ed8c82cd</guid>
            <category><![CDATA[kubernetes]]></category>
            <category><![CDATA[continuous-delivery]]></category>
            <category><![CDATA[gitops]]></category>
            <category><![CDATA[jenkins]]></category>
            <dc:creator><![CDATA[James Strachan]]></dc:creator>
            <pubDate>Tue, 08 May 2018 13:39:30 GMT</pubDate>
            <atom:updated>2018-05-08T13:39:30.619Z</atom:updated>
            <content:encoded><![CDATA[<p>I’ve not blogged on medium in a while so figure it was time to start again!</p><p>Since joining <a href="https://www.cloudbees.com/">CloudBees</a> at the end of last year we’ve been working on an automated CI/CD solution for Kubernetes called: <a href="https://jenkins-x.io/">Jenkins X</a>.</p><p>You can check out the <a href="https://jenkins.io/blog/2018/03/19/introducing-jenkins-x/">introduction blog post</a> for more background.</p><p>Our aim is basically:</p><ul><li>to automate CI/CD for folks on Kubernetes or the cloud so they can focus on developing apps and not worry about Docker, kubernetes YAML, helm charts, managing/configuring Jenkins or writing Jenkins pipelines, promotion/GitOps or setting up environments. Effectively turning any kubernetes cluster with Jenkins X installed into a <em>serverless</em> style platform; just add code, get CI/CD and GitOps promotion — then win ;)</li><li>reimagine the Jenkins that most of us all know and use as a more cloud native and kubernetes native set of microservices with elasticity, no SPOF and <a href="https://jenkins-x.io/architecture/custom-resources/">Custom Resources all the way down</a></li></ul><p>I’ve just <a href="https://jenkins-x.io/news/jenkins-x-does-kubecon/">come back from KubeCon</a> which was totally amazing! I was lucky enough to get to present Jenkins X there:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*pshXxrNV_bqOzoKb01IuXA.jpeg" /><figcaption>full house at KubeCon</figcaption></figure><p>we managed to fill one of the biggest rooms and folks were being turned away! (sorry about that, not my call!)</p><p>If you missed it you can <a href="https://youtu.be/uHe7R_iZSLU?list=PLj6h78yzYM2N8GdbjmhVU65KYm_68qBmo">watch the presentation</a> yourself here:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2Fvideoseries%3Flist%3DPLj6h78yzYM2N8GdbjmhVU65KYm_68qBmo&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DuHe7R_iZSLU&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FuHe7R_iZSLU%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/32254b3c34a436f489df5f6b2ba9391b/href">https://medium.com/media/32254b3c34a436f489df5f6b2ba9391b/href</a></iframe><p>If you happen to be going to <a href="https://www.devoxx.co.uk/">DevOxx UK</a> this week, in Islington, London (where I lived happily for 20 years), then I’ll be presenting <a href="https://cfp.devoxx.co.uk/2018/talk/XWT-9637/Jenkins_X:_Continuous_Delivery_for_Kubernetes">Jenkins X there</a> and I’ll get much more time to chat and demo. So if you’re around please pop by and say hello, I’d love to chat and get your feedback on what we’re doing &amp; see how we can improve!</p><p>Otherwise <a href="https://jenkins-x.io/community/">come find us in the community</a> and lets chat!</p><p>Let your naval, pipe smoking butler, <a href="https://jenkins-x.io/">Jenkins X</a>, help you go faster with automated CI/CD on kubernetes and the cloud! Full speed ahead!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9d34ed8c82cd" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[goodbye Red Hat, see you upstream!]]></title>
            <link>https://medium.com/@jstrachan/goodbye-red-hat-see-you-upstream-da7c529db458?source=rss-604a0e049393------2</link>
            <guid isPermaLink="false">https://medium.com/p/da7c529db458</guid>
            <category><![CDATA[open-source]]></category>
            <dc:creator><![CDATA[James Strachan]]></dc:creator>
            <pubDate>Wed, 20 Dec 2017 12:12:21 GMT</pubDate>
            <atom:updated>2017-12-20T12:12:21.333Z</atom:updated>
            <content:encoded><![CDATA[<p>Today is my last day working at <a href="https://www.redhat.com/">Red Hat</a>. I’m leaving the same year I received my 10 year anniversary award — I’m kinda surprised its been that long — how time flies! Technically its only been 5 years at Red Hat; a few of us started LogicBlaze that became FuseSource that got acquired by Red Hat and became <a href="https://www.redhat.com/en/technologies/jboss-middleware/fuse#">JBoss Fuse</a>. So its been 5 years at FuseSource and 5 at Red Hat — but its still a big change for me leaving all the folks we hired into FuseSource &amp; Red Hat that helped grow the Fuse business.</p><p>I’d like to say a big thank you to everyone at Red Hat, our customers and all the upstream communities I’ve had the pleasure to work with over the last decade or so. Its been great fun and we’ve all learnt a lot together.</p><p>I’ll blog again early in the new year to talk about my next journey. I’m super excited and can’t wait to get started, its going to be so much fun! 2018 is gonna be an amazing year &amp; so much cool open source is coming soon…</p><p>Until then please have a lovely break over winter &amp; I hope to see more of you on this blog in 2018 — cheers!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=da7c529db458" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[OpenShift.io: fully integrated CI / CD in a single pane of glass]]></title>
            <link>https://medium.com/fabric8-io/openshift-io-fully-integrated-ci-cd-in-a-single-of-glass-e1b18120d764?source=rss-604a0e049393------2</link>
            <guid isPermaLink="false">https://medium.com/p/e1b18120d764</guid>
            <category><![CDATA[kubernetes]]></category>
            <category><![CDATA[openshift]]></category>
            <category><![CDATA[developer-tools]]></category>
            <dc:creator><![CDATA[James Strachan]]></dc:creator>
            <pubDate>Tue, 20 Jun 2017 09:04:14 GMT</pubDate>
            <atom:updated>2017-06-20T10:41:53.677Z</atom:updated>
            <content:encoded><![CDATA[<p>You may have seen the <a href="https://youtu.be/PtTnnw3DakY?t=1835">announcement at Red Hat Summit</a> around <a href="https://openshift.io/">OpenShift.io</a> the hosted open source development platform built on containers, kubernetes and <a href="https://www.openshift.com/pricing/index.html">OpenShift Online</a>.</p><p><a href="https://openshift.io/">OpenShift.io</a> is designed for developers who want to get started fast developing in the cloud with containers &amp; kubernetes and it includes all the necessary tools such as planning, analytics, a web based IDE and full CI / CD. Whats even better is it comes with a completely free tier too ;).</p><p>As you can imagine we have lots of demand and its gonna take a while to onboard everyone. Please <a href="https://openshift.io/">register now</a> if you are interested; the earlier you register the quicker you’ll get in!</p><p>This video gives a quick sneak peek at how the CI and CD is completely integrated into a single pane of glass check out this video:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F6bGOvF8K4Rg%3Fstart%3D3%26feature%3Doembed%26start%3D3&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D6bGOvF8K4Rg&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F6bGOvF8K4Rg%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/36c80f8e0e9319c2b3112d7d838d8ba7/href">https://medium.com/media/36c80f8e0e9319c2b3112d7d838d8ba7/href</a></iframe><p>The video walks you through:</p><ul><li>creating a new project</li><li>forking it</li><li>submitting a PullRequest and triggering CI and reporting back to the PR</li><li>once a merge to master happens the CD pipeline is triggered</li></ul><p>We’re continuing to improve the features and UX; our aim is to make the entire lifecycle of development super slick and simple with lots of nice feedback.</p><p>Any thoughts or feedback please let us know by <a href="https://github.com/openshiftio/openshift.io/issues">raising an issue</a>. Thanks! Hope to see you on <a href="https://openshift.io/">OpenShift.io</a> soon!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e1b18120d764" width="1" height="1" alt=""><hr><p><a href="https://medium.com/fabric8-io/openshift-io-fully-integrated-ci-cd-in-a-single-of-glass-e1b18120d764">OpenShift.io: fully integrated CI / CD in a single pane of glass</a> was originally published in <a href="https://medium.com/fabric8-io">fabric8 io</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[early access to the OpenShift.io experience on MiniShift using the upstream fabric8]]></title>
            <link>https://medium.com/fabric8-io/early-access-to-the-openshift-io-experience-on-minishift-using-the-upstream-fabric8-495ddcdf00a8?source=rss-604a0e049393------2</link>
            <guid isPermaLink="false">https://medium.com/p/495ddcdf00a8</guid>
            <category><![CDATA[openshift]]></category>
            <category><![CDATA[jenkins]]></category>
            <category><![CDATA[kubernetes]]></category>
            <category><![CDATA[developer-tools]]></category>
            <dc:creator><![CDATA[James Strachan]]></dc:creator>
            <pubDate>Tue, 20 Jun 2017 08:57:23 GMT</pubDate>
            <atom:updated>2017-06-20T09:16:31.332Z</atom:updated>
            <content:encoded><![CDATA[<p>You may have seen the <a href="https://youtu.be/PtTnnw3DakY?t=1835">announcement at Red Hat Summit</a> around <a href="https://openshift.io/">OpenShift.io</a> the hosted open source development platform built on containers, kubernetes and <a href="https://www.openshift.com/pricing/index.html">OpenShift Online</a>.</p><p><a href="https://openshift.io/">OpenShift.io</a> is designed for developers who want to get started fast developing in the cloud with containers &amp; kubernetes and it includes all the necessary tools such as planning, analytics, a web based IDE and full CI / CD. Whats even better is it comes with a completely free tier too ;).</p><p>As you can imagine we have lots of demand and its gonna take a while to onboard everyone. Please <a href="https://openshift.io/">register now</a> if you are interested; the earlier you register the quicker you’ll get in!</p><p>To give you a sneak peek at how the CI and CD is completely integrated into a single pane of glass check out this video:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F6bGOvF8K4Rg%3Fstart%3D3%26feature%3Doembed%26start%3D3&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D6bGOvF8K4Rg&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F6bGOvF8K4Rg%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/36c80f8e0e9319c2b3112d7d838d8ba7/href">https://medium.com/media/36c80f8e0e9319c2b3112d7d838d8ba7/href</a></iframe><p>For folks who want to try this out right now on their laptops using <a href="https://github.com/minishift/minishift">MiniShift</a> we’re putting together a similar experience using the upstream <a href="https://fabric8.io/">fabric8</a> project. At Red Hat all products are open source and have an upstream open source project; <a href="https://fabric8.io/">fabric8</a> is the upstream open source project for everything at <a href="https://openshift.io/">OpenShift.io</a>.</p><p>Its taking us a little while to update the new 4.x version of the fabric8 distribution to include all the new <a href="https://openshift.io/">OpenShift.io</a> features as quite a few things have changed from a traditional fabric8 distribution. e.g. there’s a brand new web console developed in angular 4, a fully integrated planner/issue tracker, web based IDE (based on <a href="http://www.eclipse.org/che/">eclipse che</a>), analytics and using <a href="http://www.keycloak.org/">KeyCloak</a> for all SSO and unifying tokens between OpenShift clusters and github, separate tenant manager to spin up users/teams with their own Jenkins/Che etc).</p><p>However we have an early access install script for <a href="https://github.com/minishift/minishift">MiniShift</a> you can try right now by <a href="https://github.com/fabric8io/fabric8-platform/blob/master/INSTALL.md">following these instructions</a>.</p><p>Warning its still early access; we’re hoping to get the install script more bullet proof and easier to use ASAP along with working on other OpenShift clusters and ultimately any kubernetes cluster too (thats gonna take a little more work but hopefully soon…).</p><p>Obviously its <strong>much</strong> easier to just use <a href="https://openshift.io/">OpenShift.io</a> as there’s no need to install anything; its all hosted and managed for you in the cloud! But if you want to try run the upstream open source bits on premise try <a href="https://github.com/fabric8io/fabric8-platform/blob/master/INSTALL.md">these instructions</a>.</p><p>Please do take it for a spin and let us know what you think. Any feedback please <a href="https://github.com/fabric8io/fabric8-platform/issues">raise an issue</a>! Thanks!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=495ddcdf00a8" width="1" height="1" alt=""><hr><p><a href="https://medium.com/fabric8-io/early-access-to-the-openshift-io-experience-on-minishift-using-the-upstream-fabric8-495ddcdf00a8">early access to the OpenShift.io experience on MiniShift using the upstream fabric8</a> was originally published in <a href="https://medium.com/fabric8-io">fabric8 io</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[fabric8 microservices and go faster at DevOxx]]></title>
            <link>https://medium.com/fabric8-io/fabric8-microservices-and-go-faster-at-devoxx-224625b496eb?source=rss-604a0e049393------2</link>
            <guid isPermaLink="false">https://medium.com/p/224625b496eb</guid>
            <category><![CDATA[docker]]></category>
            <category><![CDATA[continuous-delivery]]></category>
            <category><![CDATA[microservices]]></category>
            <category><![CDATA[jenkins]]></category>
            <category><![CDATA[kubernetes]]></category>
            <dc:creator><![CDATA[James Strachan]]></dc:creator>
            <pubDate>Fri, 11 Nov 2016 11:47:02 GMT</pubDate>
            <atom:updated>2016-11-11T11:47:02.236Z</atom:updated>
            <content:encoded><![CDATA[<p>I’m just about to fly back from <a href="https://devoxx.be/">DevOxx Belgium</a> after a truly awesome week at a great conference. It was heaps of fun and I got lots of great feedback on fabric8 — many thanks to everyone who attended.</p><p>For those who missed it, here’s the video of my talk:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FbERRJksRB1A%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DbERRJksRB1A&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FbERRJksRB1A%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/c033a377cc47925bd76bc8dc2676b5f3/href">https://medium.com/media/c033a377cc47925bd76bc8dc2676b5f3/href</a></iframe><p>or you can <a href="http://fabric8.io/presentations/jfall-2016-nov/#/">browse the slides</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=224625b496eb" width="1" height="1" alt=""><hr><p><a href="https://medium.com/fabric8-io/fabric8-microservices-and-go-faster-at-devoxx-224625b496eb">fabric8 microservices and go faster at DevOxx</a> was originally published in <a href="https://medium.com/fabric8-io">fabric8 io</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[additional kubernetes controllers from fabric8 you can use with your microservice]]></title>
            <link>https://medium.com/fabric8-io/additional-kubernetes-controllers-from-fabric8-you-can-use-with-your-microservice-3126a2c4c132?source=rss-604a0e049393------2</link>
            <guid isPermaLink="false">https://medium.com/p/3126a2c4c132</guid>
            <category><![CDATA[kubernetes]]></category>
            <category><![CDATA[operations]]></category>
            <category><![CDATA[fabric8]]></category>
            <dc:creator><![CDATA[James Strachan]]></dc:creator>
            <pubDate>Fri, 04 Nov 2016 14:16:20 GMT</pubDate>
            <atom:updated>2016-11-04T14:16:20.519Z</atom:updated>
            <content:encoded><![CDATA[<p>The folks from <a href="https://coreos.com/">CoreOS</a> just announced their idea of adding <a href="https://coreos.com/blog/introducing-operators.html">operators to kubernetes</a> to manage stateful applications with ease. Its a very compelling idea! We’ve been thinking along similar lines on the <a href="https://fabric8.io/">fabric8</a> project — more on that later.</p><h4>thoughts on CoreOS Operators</h4><p>I’m particularly looking forward to a ZooKeeper Operator that works like CoreOS’s <a href="https://coreos.com/blog/introducing-the-etcd-operator.html">etcd operator</a> so you can easily just scale up or down the size of your ZooKeeper cluster by changing 1 simple number via the CLI, REST API or UI and the operator figures out the detail of how to update quorum, services/DNS, state and so forth.</p><p>Though as an end user, I’d kinda like to have regular Kubernetes Deployment semantics for etcd or ZooKeeper pods and scale it in the usual way (e.g. via kubectl scale) and the Operator take over and wire up the cluster after the Deployment size changes — rather than scaling via changing the <em>ThirdPartyResource</em> for the Operator — then Kubernetes feels a bit more polymorphic and its easier for tools to work with all scalable Operators; but I realise that might be harder as the Operator may want to do things before the Deployment controller scales up; though could that be done with <a href="https://github.com/kubernetes/kubernetes/blob/master/docs/proposals/container-init.md">init containers</a>?</p><h3>Fabric8 Controllers</h3><p>We’ve been using the term <em>controllers</em> in fabric8 rather than <em>operators</em>; but I thought I’d mention a few of the ones we’ve created to help us automatically configure and manage our microservices inside the fabric8 developer platform.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*4C7aJp6RdFvbK7Ym1kJgJg.png" /></figure><p>Here’s the <em>controllers</em> we’ve created so far:</p><h4>expose controller</h4><p>The <a href="https://github.com/fabric8io/exposecontroller/">expose controller</a> takes care of exposing services externally which have the label:</p><pre>expose=true</pre><p>With the Kubernetes ecosystem there are various ways to expose services:</p><ul><li><em>Ingress</em> on Kubernetes</li><li><em>Routes</em> on OpenShift (which pre-date Ingress and may be replaced long term by Ingress)</li><li><em>LoadBalancer</em> types on public cloud providers like GKE which then uses a cloud provider generated public IP (which adds cost)</li><li><em>NodePort</em> if developing on your laptop which uses ports on a host node to avoid needing DNS and/or a load balancer</li></ul><p>So rather than hard coding your app to pick one of the above, we tend to make our microservices just use the expose=true label and run the <a href="https://github.com/fabric8io/exposecontroller/">expose controller</a> microservice as part of fabric8.</p><p>Then when running on OpenShift we default to <em>Routes</em>; on Kubernetes to <em>Ingress</em> or on minikube or minishift we default to <em>NodePorts</em> as we avoid having to run routers, wildcard DNS and so forth (which can be flaky on laptops).</p><p>Another feature of <a href="https://github.com/fabric8io/exposecontroller/">expose controller</a> is to inject into a <em>ConfigMap</em> external URLs to services. For example when you run a git hosting service like gogs or gitlab you need to tell it the public URL to the service so that its web application can tell you how to type in a git clone from your laptop. Also web consoles which want to use OAuth to log clients in need to know where the OAuth authorize URL is.</p><p>So <a href="https://github.com/fabric8io/exposecontroller/">expose controller</a> can inject these values at runtime if the <em>ConfigMap</em> for an exposed service is <a href="https://github.com/fabric8io/exposecontroller/#configmap">annotated with the expose controller annotations</a>.</p><h4>configmap controller</h4><p>One issue of using <a href="https://github.com/fabric8io/exposecontroller/">expose controller</a> is that after an app is deployed, the external URL will change as, say, an <em>Ingress</em> is created, leading to a change in the <em>ConfigMap</em> for the app. However sometimes the values in the <em>ConfigMap</em> are used as environment variables so that the pod will be running with old configuration.</p><p>To fix this the <a href="https://github.com/fabric8io/configmapcontroller">configmap controller</a> will automatically trigger a rolling update of the application whenever its <em>ConfigMap</em> changes.</p><p>This turns out to be really handy for any app that uses a <em>ConfigMap</em> to store configuration which is loaded on startup (rather than mounting the <em>ConfigMap</em> as a volume and then watching the file system for changes inside the pod).</p><p>To see this in action check out this <a href="https://github.com/fabric8-quickstarts/spring-boot-webmvc">spring boot web MVC application</a>. It loads an application.properties from <a href="https://github.com/fabric8-quickstarts/spring-boot-webmvc/blob/master/src/main/fabric8/configmap.yml#L4-L7">the ConfigMap</a> by <a href="https://github.com/fabric8-quickstarts/spring-boot-webmvc/blob/master/src/main/fabric8/deployment.yml#L8-L18">mounting it as a volume</a> which spring boot then loads on startup. It reads this configuration on startup. So if we edit the <em>ConfigMap</em> (e.g. via the kubectl command line or via the <a href="http://fabric8.io/guide/console.html">fabric8 developer console</a>) by default the app would keep running with the old configuration.</p><p>However if we add the <a href="https://github.com/fabric8io/configmapcontroller#how-to-use-configmapcontroller">configmap.fabric8.io/update-on-change</a> annotation <a href="https://github.com/fabric8-quickstarts/spring-boot-webmvc/blob/master/src/main/fabric8/deployment.yml#L3">to the Deployment</a> like this:</p><pre>metadata:<br>  annotations:<br>    configmap.fabric8.io/update-on-change: &quot;foo&quot;</pre><p>Then whenever the <em>ConfigMap</em> changes its configuration data, the <a href="https://github.com/fabric8io/configmapcontroller">configmap controller</a> will update the <em>Deployment</em> to add/update an environment variable with the configuration contents which then triggers a <em>rolling upgrade</em> of your application! Neat eh!</p><h4>git controller</h4><p>The <a href="https://github.com/fabric8io/gitcontroller">git controller</a> is like the <a href="https://github.com/fabric8io/configmapcontroller">configmap controller</a> but for when your <em>Deployment</em> is mounting a revision of a git repository into a volume — e.g. configuration files or CMS web content. The idea of the <a href="https://github.com/fabric8io/gitcontroller">git controller</a> is it will watch all the git repositories of all the git repositories used by your <em>Deployments</em> and if a git commit occurs in the branch of a repo, it will perform a rolling upgrade on the <em>Deployment</em> by pointing the git repository volume to the new commit version.</p><p>So its very much like the <a href="https://github.com/fabric8io/configmapcontroller">configmap controller</a> but has the added benefit of having a change audit log, history and an easy way to revert changes.</p><h4>summary</h4><p>So those are the 3 controllers we’ve created so far on the <a href="https://fabric8.io/">fabric8</a> project. I’m sure we’ll create more as and when required.</p><p>One of the things I particularly love about kubernetes is it promotes a very unix like philosophy of creating lots of small microservices that solve particular problems; then they are super easy to compose and reuse across projects, languages and frameworks!</p><p>Have you created any custom controllers for kubernetes or thinking of any? Any controllers you wish you had? Let us <a href="https://fabric8.slack.com/">know</a>!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3126a2c4c132" width="1" height="1" alt=""><hr><p><a href="https://medium.com/fabric8-io/additional-kubernetes-controllers-from-fabric8-you-can-use-with-your-microservice-3126a2c4c132">additional kubernetes controllers from fabric8 you can use with your microservice</a> was originally published in <a href="https://medium.com/fabric8-io">fabric8 io</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[the easiest way to get started with fabric8 on the public cloud is now StackPointCloud!]]></title>
            <link>https://medium.com/fabric8-io/the-easiest-way-to-get-started-with-fabric8-on-the-public-cloud-is-now-stackpointcloud-2f2083d91bf4?source=rss-604a0e049393------2</link>
            <guid isPermaLink="false">https://medium.com/p/2f2083d91bf4</guid>
            <category><![CDATA[kubernetes]]></category>
            <category><![CDATA[docker]]></category>
            <dc:creator><![CDATA[James Strachan]]></dc:creator>
            <pubDate>Mon, 31 Oct 2016 15:32:25 GMT</pubDate>
            <atom:updated>2016-10-31T15:32:25.836Z</atom:updated>
            <content:encoded><![CDATA[<p>One of the most challenging aspects of kubernetes is getting your kubernetes cluster installed correctly. There are so many things that can go wrong (particularly with persistence, networking, load balancing, firewalls and DNS). Then once thats done you need to install fabric8 on top to get all the awesomeness of an <a href="https://blog.fabric8.io/how-to-run-an-awesome-java-opinionated-container-stack-jocs-on-your-laptop-30fa2ad4c3cd#.godn06fxs">integrated development platform</a>. This can be quite a daunting task to a new user!</p><p>Thankfully <a href="https://github.com/kubernetes/minikube">minikube</a> has really helped <a href="https://fabric8.io/guide/getStarted/gofabric8.html">make it easy to install fabric8 inside a single node kubernetes cluster on your laptop</a> for Windows, OS X and Linux. Though there’s still the issue of how to install a real kubernetes cluster with fabric8 on a public cloud like AWS, Azure, Google Cloud or Digital Ocean.</p><p>Thats all now changed thanks to the nice folks at <a href="https://stackpoint.io/">Stack Point Cloud</a>.</p><p>Literally in a few clicks you can select the public cloud of your choice (AWS, Azure, Google Cloud or Digital Ocean), enter your credentials, pick your kubernetes cluster and hardware size, then select <strong>fabric8</strong> as a solution and you’re done!</p><p>Here’s a <a href="https://www.youtube.com/watch?v=mau3lH3fq5E&amp;feature=youtu.be">video showing how super simple this is</a>!!</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2Fmau3lH3fq5E%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dmau3lH3fq5E&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2Fmau3lH3fq5E%2Fhqdefault.jpg&amp;key=d04bfffea46d4aeda930ec88cc64b87c&amp;type=text%2Fhtml&amp;schema=youtube" width="640" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/158309371760bd83e0b565edcd347d2b/href">https://medium.com/media/158309371760bd83e0b565edcd347d2b/href</a></iframe><p>Huge thanks to the <a href="https://stackpoint.io/">Stack Point Cloud</a> folks for doing this! Its really gonna help folks who want to use <strong>fabric8</strong> on the public cloud get started super quickly and easily! Plus you can install a vanilla kubernetes cluster with <a href="https://stackpoint.io/">Stack Point Cloud</a> too or install other off the shelf solutions.</p><p>So what are you waiting for? <a href="https://stackpoint.io/">Click here</a> to spin up your own kubernetes cluster with <a href="https://fabric8.io/">fabric8</a> now!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2f2083d91bf4" width="1" height="1" alt=""><hr><p><a href="https://medium.com/fabric8-io/the-easiest-way-to-get-started-with-fabric8-on-the-public-cloud-is-now-stackpointcloud-2f2083d91bf4">the easiest way to get started with fabric8 on the public cloud is now StackPointCloud!</a> was originally published in <a href="https://medium.com/fabric8-io">fabric8 io</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to run an awesome Java Opinionated Container Stack (JOCS) on your laptop]]></title>
            <link>https://medium.com/fabric8-io/how-to-run-an-awesome-java-opinionated-container-stack-jocs-on-your-laptop-30fa2ad4c3cd?source=rss-604a0e049393------2</link>
            <guid isPermaLink="false">https://medium.com/p/30fa2ad4c3cd</guid>
            <category><![CDATA[java]]></category>
            <category><![CDATA[kubernetes]]></category>
            <category><![CDATA[containers]]></category>
            <category><![CDATA[jenkins]]></category>
            <category><![CDATA[docker]]></category>
            <dc:creator><![CDATA[James Strachan]]></dc:creator>
            <pubDate>Fri, 14 Oct 2016 08:20:14 GMT</pubDate>
            <atom:updated>2016-10-21T12:49:10.366Z</atom:updated>
            <content:encoded><![CDATA[<p>I saw a <a href="https://twitter.com/arungupta/status/786694679018504193">tweet by Arun</a> on a good Java Opinionated Container Stack (JOCS) :</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/598/1*-KiTMd1WCzRxKbrRBqgI3g.png" /></figure><p>there’s some awesome icons there!</p><p>But for me there was a major missing icon — the <a href="https://fabric8.io/">fabric8 Microservices platform</a>:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/256/1*lZb7Zt9QBSS5uKZDKBDebw.png" /><figcaption>fabric8 microservices platform</figcaption></figure><p>Why? Because it gives you an out of the box <em>fully integrated</em> <strong>Java Opinionated Container Stack</strong> (JOCS) in an easy to use package with a lovely developer console that provides a single pane of glass for all your tools.</p><p>So what’s included out of the box if you install the <a href="https://fabric8.io/">fabric8 Microservices platform</a>?</p><ul><li><a href="http://kubernetes.io/">Kubernetes</a> which is best container orchestration platform</li><li><a href="http://docker.com/">Docker</a> as the most popular container runtime</li><li><a href="https://jenkins.io/">Jenkins</a> for CI and CD pipelines</li><li><a href="http://www.sonatype.org/nexus/">Nexus</a> as the artifact repository</li><li><a href="https://gogs.io/">Gogs</a> for on premise git repository hosting</li><li><a href="https://fabric8.io/guide/console.html">Developer console</a> to provide a single pane of glass to both all of your development tools but also your projects, environments and apps</li><li><a href="https://forge.jboss.org/">JBoss Forge</a> with the <a href="http://fabric8.io/guide/forge.html">fabric8 forge addons</a> for new project wizards and tools to import and migrate projects together with quickstarts for creating Java projects with Spring Boot, CDI or Wildfly Swarm</li><li>A selection of additional optional microservices you can easily run for the <strong>Run..</strong> button in the developer console such as Chaos Monkey, Hystrix Dashboard, centralised logging and metrics (Elasticsearch, Kibana, Prometheus, Grafana), Artifactory, Gitlab, Gerrit, Sonarqube, Kafka, Cassandra, Chatops tools and many other things.</li></ul><p>e.g. here’s a small selection of some of the additional container based apps you can run in one click:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*FZi1Iq52Qt0XQQ5OgdJzYw.png" /><figcaption>some of the apps included in fabric8 via the Run… button</figcaption></figure><p>So isn’t that just a few of the icons from Arun’s picture? Yeah kinda. There are 2 big differences though:</p><ul><li>all the services are packaged and installed out of the box for you</li><li>all the services are <strong>deeply integrated together</strong>.</li></ul><p>So creating a new project will create a git repository in Gogs, wire the webhooks with Jenkins to trigger jobs on git push and all Jenkins build reuse the local Nexus as a proxy when building (so you have a nice nexus proxy cache) and all releases are staged or released into your Nexus with shared secrets.</p><p>i.e. there’s no need for you the Java developer to figure out how to download and install all of these tools, then try configure them to work together. They are all integrated for you OOTB!</p><p>So this isn’t just a bunch of off the shelf components; its a <strong>fully integrated and packaged platform</strong>!</p><h3>How to get started</h3><p>OK that sounds like an awesome way to go fast if you’re a Java developer and want a great JOCS. But how do you get started getting running fabric8 on your laptop?</p><p>Try this:</p><ul><li>download the latest binary of gofabric8 for your platform</li><li>run the following command on a command line</li></ul><blockquote>./gofabric8 start</blockquote><p>if you are not already connected to a kubernetes cluster it will download <a href="https://github.com/kubernetes/minikube">minikube</a> and start that up — which installs a single VM cluster of kubernetes and docker running right on your laptop.</p><p>It may take a little while as its going to be downloading some command line tools (like kubectl), spinning up the kubernetes cluster and downloading a bunch of docker images. But eventually you should get the <a href="https://fabric8.io/guide/console.html">fabric8 developer console</a> opened up in your browser!</p><p>You can watch the progress of how things are going with:</p><blockquote>kubectl get pod -w</blockquote><p>Now you should have all the JOCS up and running on your laptop ready to play with!</p><p>Want a create, build, test, stage and release a Java based Microservice? Sure just use the web console like this video:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FNUWCrREXHmU%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DNUWCrREXHmU&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FNUWCrREXHmU%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/4e216e99265fffebf8a66b6a1d423868/href">https://medium.com/media/4e216e99265fffebf8a66b6a1d423868/href</a></iframe><p>Or are you more of a command line / maven type of developer? Thats cool too — check out <a href="https://blog.fabric8.io/a-busy-java-developers-guide-to-developing-microservices-on-kubernetes-and-docker-98b7b9816fdf#.fr7eosntu">this blog on how you can take any existing Java project and build, run, test and debug it all from maven</a></p><p>So there you have it — the easiest way to get an awesome Java Opinionated Container Stack (JOCS) running on your laptop!</p><p>Please give it a try and see how you get on. Any issues join the <a href="http://fabric8.io/community/">community</a> and <a href="https://fabric8.slack.com/">chat</a> or email us or <a href="https://github.com/fabric8io/fabric8-platform/issues/new">raise an issue</a>.</p><p>In my next blog next week I’ll show you how to get an awesome Java Opinionated Container Stack (JOCS) running on any public cloud in a few clicks! Stay tuned!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=30fa2ad4c3cd" width="1" height="1" alt=""><hr><p><a href="https://medium.com/fabric8-io/how-to-run-an-awesome-java-opinionated-container-stack-jocs-on-your-laptop-30fa2ad4c3cd">How to run an awesome Java Opinionated Container Stack (JOCS) on your laptop</a> was originally published in <a href="https://medium.com/fabric8-io">fabric8 io</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[A busy Java developers guide to developing microservices on Kubernetes and docker]]></title>
            <link>https://medium.com/fabric8-io/a-busy-java-developers-guide-to-developing-microservices-on-kubernetes-and-docker-98b7b9816fdf?source=rss-604a0e049393------2</link>
            <guid isPermaLink="false">https://medium.com/p/98b7b9816fdf</guid>
            <category><![CDATA[docker]]></category>
            <category><![CDATA[kubernetes]]></category>
            <dc:creator><![CDATA[James Strachan]]></dc:creator>
            <pubDate>Wed, 28 Sep 2016 16:25:28 GMT</pubDate>
            <atom:updated>2016-12-09T09:48:23.395Z</atom:updated>
            <content:encoded><![CDATA[<p>As Java developers we’re often really busy with large backlogs, customer issues and countless disruptions. It can be quite daunting finding the time to learn all about things like <a href="http://kubernetes.io/">Kubernetes</a> and its associated tools and technologies (<a href="http://kubernetes.io/docs/user-guide/kubectl-overview/">kubectl,</a> <a href="https://www.openshift.org/">OpenShift</a>, <a href="https://docs.openshift.org/latest/cli_reference/get_started_cli.html">oc</a>, <a href="http://docker.com/">Docker</a> and <a href="https://coreos.com/rkt/">Rkt</a> and standards like <a href="https://cncf.io/">CNCF</a> and <a href="https://www.opencontainers.org/">OCI</a>). Its well worth doing if you have the time mind you! We recommend you dive into <a href="http://kubernetes.io/">Kubernetes</a> and see where that takes you whenever you get some spare time :).</p><p>On the <a href="https://fabric8.io/">fabric8</a> project we’ve been focussed on making it easy for developers to create, build, deploy and manage microservices on top of Kubernetes for some time.</p><p>Up to now we’ve mostly focussed on the end to end lifecycle of creating new microservices, then changing code through continuous delivery then having continuous improvement. Lately we’ve been focussed more on the <em>pre-git-push</em> phase. Where you’re hacking code on your laptop and trying things out before you want to commit and push into your git repository.</p><p>Lots of Java developers are used to using application servers, creating deployment units (jars/wars), deploying them and running them in app servers using Maven. Then they can use Maven from the command line or easily inside their IDE to do most of the work.</p><p>So we figured, why not make Kubernetes look and feel like an application server to a Java developer? So you build and deploy your application from maven like you would with other maven plugins like spring-boot, tomcat, jetty, wildfly, karaf et al. Then you can get started quickly by just treating Kubernetes as a kind of application server.</p><p>Kubernetes is actually way more awesome than an application server; its more like an application <em>cloud</em> as:</p><ul><li>kubernetes can keep running multiple instances of each of your apps including automatic restarts on software or hardware failures</li><li>automatic load balancing when invoking your apps</li><li>each app instance is isolated as a separate process so its much easier to monitor metrics and logs</li></ul><h4>Setup your maven project</h4><p>Do you have an existing maven project for your Java app? Maybe its a Spring Boot or WildFly Swarm app; or a flat classpath, fat jar? If you don’t have a maven app to hand, visit <a href="http://start.spring.io/">start.spring.io</a> and create one.</p><p>To enable fabric8 on your project just type this <a href="https://maven.fabric8.io/#fabric8:setup">fabric8:setup</a> command which adds the <a href="https://maven.fabric8.io/">fabric8-maven-plugin</a> to your <em>pom.xml</em> like this <a href="https://maven.fabric8.io/#fabric8:setup">example</a>.</p><blockquote>mvn io.fabric8:fabric8-maven-plugin:3.2.8:setup</blockquote><p>Note that all the <a href="https://github.com/fabric8-quickstarts/">fabric8 quickstarts</a> already have the fabric8 maven plugin enabled so you don’t need to do the above!</p><p>Now that we have enabled the fabric8 maven plugin for our project we can have some fun!</p><h4>Starting and stopping a local kubernetes cluster</h4><p>To develop on kubernetes you will need a kubernetes cluster; just like you need an instance of an application server to deploy your app. If someone in your organisation has provided you with a kubernetes cluster then feel free to use that; you just need to connect to it via the <a href="http://kubernetes.io/docs/user-guide/kubectl-overview/">kubectl</a> too.</p><p>However if you don’t have any kubernetes clusters to hand its very easy to spin up your own local cluster. Using a local kubernetes cluster is really handy for development; it lets you build your app and run it locally before you do a git commit and trigger the CI / CD pipeline.</p><p>Before you start please make sure you have the <a href="https://maven.fabric8.io/#fabric8:cluster-start"><strong>prerequisites installed</strong></a> for your platform (basically a recent Apache Maven distro and have a working hypervisor for your platform like xhyve, hyper-v or kvm).</p><p>Now with the <a href="https://maven.fabric8.io/">fabric8-maven-plugin</a> you just use the goal <a href="https://maven.fabric8.io/#fabric8:cluster-start">fabric8:cluster-start</a> to spin up a local cluster:</p><blockquote>mvn fabric8:cluster-start</blockquote><p>Wait a few minutes for some stuff to download and then you’ve now got a local installation of a Kubernetes cluster running on your machine! No installation of Docker, VirtualBox or Vagrant is required!</p><p>Under the covers this downloaded <a href="https://github.com/fabric8io/gofabric8/">gofabric8</a> and ran <em>gofabric8 start</em> which then downloaded <a href="https://github.com/kubernetes/minikube/">minikube</a> and <a href="http://kubernetes.io/docs/user-guide/kubectl-overview/">kubectl</a> binaries and installs them into <em>~/.fabric8/bin</em></p><p>Want to use OpenShift instead of Kubernetes? Use <a href="https://maven.fabric8.io/#using-openshift">this command</a> instead:</p><blockquote>mvn fabric8:cluster-start -Dfabric8.cluster.kind=openshift</blockquote><p>You can now use the <a href="http://kubernetes.io/docs/user-guide/kubectl-overview/">kubectl</a> command line to get pods and whatnot:</p><blockquote>kubectl get pod</blockquote><p>When you’re done and want to stop the kubernetes cluster just use <a href="https://maven.fabric8.io/#fabric8:cluster-stop">fabric8:cluster-stop</a></p><blockquote>mvn fabric8:cluster-stop</blockquote><p>you can restart it again at any time via <a href="https://maven.fabric8.io/#fabric8:cluster-start">fabric8:cluster-start</a></p><h4>Running your app</h4><p>The simplest way to run your app is via <a href="https://maven.fabric8.io/#fabric8:run">fabric8:run</a></p><blockquote>mvn fabric8:run</blockquote><p>This will build your app (compile code, run tests, generate the jar and package it up into an immutable docker image), generate the kubernetes manifest and deploy it then tail the log output so you can see how your app behaves. If you hit <em>Ctrl-C</em> it then terminates the app.</p><p>So that the <em>fabric8:run</em> goal works kinda like other <em>run</em> goals in other maven projects like <em>spring-boot</em>, <em>tomcat</em>, <em>jetty</em>, <em>karaf</em> and <em>wildfly</em>.</p><h4>Deploy or undeploy your app</h4><p>Deploying your app is a little like running <a href="https://maven.fabric8.io/#fabric8:run">fabric8:run</a> in the background.</p><p>To deploy your app into kubernetes you use the <a href="https://maven.fabric8.io/#fabric8:deploy">fabric8:deploy</a> goal</p><blockquote>mvn fabric8:deploy</blockquote><p>This will build your java code and run your unit tests, generate the docker image, create the kubernetes manifest and deploy them into kubernetes.</p><p>To remove our app from kubernetes just use the <a href="https://maven.fabric8.io/#fabric8:undeploy">fabric8:undeploy</a> goal</p><blockquote>mvn fabric8:undeploy</blockquote><h4>Viewing logs</h4><p>Once you’ve deployed your app you probably want to check its logs. So you can type:</p><blockquote>mvn fabric8:log</blockquote><p>then hit <em>Ctrl-C</em> to terminate tailing the log.</p><p>If you don’t want to keep tailing the log and just want to see the current log output try this:</p><blockquote>mvn fabric8:log -Dfabric8.log.follow=false</blockquote><h4>Start and stop</h4><p>If you have deployed your app you sometimes want to stop it running so that you can later on start it again. e.g. since its using up resources on your laptop or its invoking some other microservice that you wish to take offline.</p><p>To stop your application just use the <a href="https://maven.fabric8.io/#fabric8:stop">fabric8:stop</a> and <a href="https://maven.fabric8.io/#fabric8:start">fabric8:start</a> goal:</p><blockquote>mvn fabric8:stop</blockquote><blockquote>…</blockquote><blockquote>mvn fabric8:start</blockquote><p>All the <a href="https://maven.fabric8.io/#fabric8:start">fabric8:start</a> and <a href="https://maven.fabric8.io/#fabric8:stop">fabric8:stop</a> goals do is to <em>scale</em> your application on Kubernetes — as in set the number of expected <em>replicas</em> — the number of running processes of your app.</p><p>You can also use <a href="https://maven.fabric8.io/#fabric8:start">fabric8:start</a> to scale up your app to more than one pod if you wish</p><blockquote>mvn fabric8:start -Dfabric8.replicas=2</blockquote><p>You can also use the <a href="http://kubernetes.io/docs/user-guide/kubectl-overview/">kubectl</a> command line too:</p><blockquote>kubectl scale — replicas=2 deployment myappname</blockquote><h4>Debugging</h4><p>Outside of unit tests we highly recommend you try and run your apps and do all your integration and system testing inside Kubernetes. Then you are spending most of your time using a production-like environment (rather than your laptop with its different operating system, networks and storage etc). It also means you can easily deploy multiple microservices into the same namespace and test combinations of microservices easily.</p><p>To debug your app, just run the <a href="https://maven.fabric8.io/#fabric8:debug"><em>fabric8:debug</em></a> goal</p><blockquote>mvn fabric8:debug</blockquote><p>This will use the default Java remote debugging port of <em>5005</em>. You can specify a different port if you wish</p><blockquote>mvn fabric8:debug -Dfabric8.debug.port=8000</blockquote><p>Once that goal is running the debug port will be open on your laptop (<em>localhost</em>) which then connects using port forwarding to your most recent running pod for your app.</p><p>So you can now just start a Remote debug execution in your IDE (like you do to debug remote application server instances) and you can set breakpoints and debug your pod while its inside kubernetes.</p><p>e.g. in IntelliJ here’s how you add a Run/Debug execution:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*NE3TYf1czlhTLaPU00JglA.png" /><figcaption>add a new Remote kind of Run/Debug configuration</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*iK66iwtmJetNGsa26SYQmQ.png" /><figcaption>give the Run/Debug configuration a title</figcaption></figure><p>To see this in action check out the video below.</p><h4>Continuous Delivery and Releasing</h4><p>Once you are ready to start releasing your code run this command:</p><blockquote>mvn fabric8:import</blockquote><p>This will import your local project into fabric8.</p><p>If your code is not already hosted in a git repository it will create a new git repository and import your code. Then it’ll show you a link to open the project in the fabric8 console so you can add a Continuous Delivery pipeline to your project to enable a Jenkins build for full CI / CD</p><h4>Demo</h4><p>To see all of these maven goals in action check out this short video:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FCYrCW1SjpOI%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DCYrCW1SjpOI&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FCYrCW1SjpOI%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/a7166bf29b7fee1b64615c15c406e273/href">https://medium.com/media/a7166bf29b7fee1b64615c15c406e273/href</a></iframe><h4>Summary</h4><p>So once you’ve started a cluster (<em>cluster-start</em>) the fabric8 maven goals are very similar to other application server based maven plugins; <em>run</em>, <em>deploy</em>/<em>undeploy</em>, <em>start</em>/<em>stop</em> are the main goals with <em>log</em> and <em>debug</em> pretty handy too.</p><p>Once you are familiar with those and you’ve done some development on kubernetes with the fabric8 maven plugin you might start to try out using the <a href="http://kubernetes.io/docs/user-guide/kubectl-overview/">kubectl</a> tool also which is handy for querying or watching the state of kubernetes, performing updates to them. e.g. to watch pods start and stop type:</p><blockquote>kubectl get pod -w</blockquote><p>Please try out the <a href="https://maven.fabric8.io/">fabric8 maven plugin</a> and let us know what you think via the <a href="http://fabric8.io/community/">community</a> or the <a href="https://github.com/fabric8io/fabric8-maven-plugin/issues/">issue tracker</a>! Can you think of any way to make it even more awesome? If so <a href="https://github.com/fabric8io/fabric8-maven-plugin/issues/">let us know</a>!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=98b7b9816fdf" width="1" height="1" alt=""><hr><p><a href="https://medium.com/fabric8-io/a-busy-java-developers-guide-to-developing-microservices-on-kubernetes-and-docker-98b7b9816fdf">A busy Java developers guide to developing microservices on Kubernetes and docker</a> was originally published in <a href="https://medium.com/fabric8-io">fabric8 io</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>