<?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:foaf="http://xmlns.com/foaf/0.1/" xmlns:og="http://ogp.me/ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:schema="http://schema.org/" xmlns:sioc="http://rdfs.org/sioc/ns#" xmlns:sioct="http://rdfs.org/sioc/types#" xmlns:skos="http://www.w3.org/2004/02/skos/core#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" version="2.0" xml:base="https://www.linuxjournal.com/">
  <channel>
    <title>Orchestration</title>
    <link>https://www.linuxjournal.com/</link>
    <description/>
    <language>en</language>
    
    <item>
  <title>FOSS Project Spotlight: BlueK8s</title>
  <link>https://www.linuxjournal.com/content/foss-project-spotlight-bluek8s</link>
  <description>  &lt;div data-history-node-id="1340190" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/tom-phelan" lang="" about="https://www.linuxjournal.com/users/tom-phelan" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Tom Phelan&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;&lt;em&gt;Deploying and managing complex stateful applications on Kubernetes.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
&lt;a href="https://kubernetes.io"&gt;Kubernetes&lt;/a&gt; (aka K8s) is now the de facto container orchestration
framework. Like other popular open-source technologies, Kubernetes has
amassed a considerable ecosystem of complementary tools to address
everything from storage to security. And although it was first created for
running &lt;a href="https://whatis.techtarget.com/definition/stateless-app"&gt;stateless
applications&lt;/a&gt;, more and more organizations are
interested in using Kubernetes for &lt;a href="https://whatis.techtarget.com/definition/stateful-app"&gt;stateful
applications&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
However, while Kubernetes has advanced significantly in many areas during the
past couple years, there still are considerable gaps when it comes to
running complex stateful applications. It remains challenging to deploy
and manage distributed stateful applications consisting of a multitude of
co-operating services (such as for use cases with large-scale analytics and
machine learning) with Kubernetes.
&lt;/p&gt;

&lt;p&gt;
I've been focused on this space for the past several years as a
co-founder of &lt;a href="https://www.bluedata.com"&gt;BlueData&lt;/a&gt;. During that
time, I've worked with many teams
at Global 2000 enterprises in several industries to deploy
distributed stateful services successfully, such as Hadoop, Spark, Kafka, Cassandra,
TensorFlow and other analytics, data science, machine learning (ML) and
deep learning (DL) tools in containerized environments.
&lt;/p&gt;

&lt;p&gt;
In that time, I've learned what it takes to deploy complex stateful
applications like these with containers while ensuring enterprise-grade
security, reliability and performance. Together with my colleagues at
BlueData, we've broken new ground in using Docker containers for big
data analytics, data science and ML/DL in highly distributed
environments. We've developed new innovations to address
requirements in areas like storage, security, networking, performance and
lifecycle management.
&lt;/p&gt;

&lt;p&gt;
Now we want to bring those innovations to the Open Source community—to ensure that these stateful services are supported in the Kubernetes
ecosystem. BlueData's engineering team has been busy working with
Kubernetes, &lt;a href="https://www.bluedata.com/blog/2017/12/big-data-container-orchestration-kubernetes-k8s"&gt;developing
prototypes&lt;/a&gt; with Kubernetes in our labs and
collaborating with multiple enterprise organizations to evaluate the
opportunities (and challenges) in using Kubernetes for complex stateful
applications.
&lt;/p&gt;

&lt;p&gt;
To that end, we recently &lt;a href="https://www.bluedata.com/article/bluek8s-and-kubernetes-director-for-stateful-applications"&gt;introduced&lt;/a&gt;
a new Kubernetes open-source
initiative: BlueK8s. The BlueK8s initiative will be composed of several
open-source projects that each will bring enterprise-level capabilities for
stateful applications to Kubernetes.
&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/foss-project-spotlight-bluek8s" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Fri, 16 Nov 2018 13:00:00 +0000</pubDate>
    <dc:creator>Tom Phelan</dc:creator>
    <guid isPermaLink="false">1340190 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>Orchestration with MCollective, Part II</title>
  <link>https://www.linuxjournal.com/content/orchestration-mcollective-part-ii</link>
  <description>  &lt;div data-history-node-id="1339406" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/kyle-rankin" lang="" about="https://www.linuxjournal.com/users/kyle-rankin" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Kyle Rankin&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;
&lt;a href="http://www.linuxjournal.com/content/orchestration-mcollective"&gt;In my last article&lt;/a&gt;, I introduced how MCollective could be used for general
orchestration tasks. Configuration management like Puppet and Chef can help
you bootstrap a server from scratch and push new versions of configuration
files, but normally, configuration management scripts run at particular
times in no particular order. Orchestration comes in when you need to
perform some kind of task, specifically something like a software upgrade,
in a certain order and stop the upgrade if there's some kind of problem.
With orchestration software like MCollective, Ansible or even an SSH for
loop, you can launch commands from a central location and have them run on
specific sets of servers. 
&lt;/p&gt;
&lt;p&gt;
Although I favor MCollective because of its improved
security model compared to the alternatives and its integration with
Puppet, everything I discuss here should be something you can
adapt to any decent orchestration tool. 
&lt;/p&gt;

&lt;p&gt;
So in this article, I expand
on the previous one on MCollective and describe how you can use it to stage all
of the commands you'd normally run by hand to deploy an internal software
update to an application server.
&lt;/p&gt;

&lt;p&gt;
I ended part one on MCollective with describing how you could use it to
push an OpenSSL update to your environment and then restart nginx:

&lt;/p&gt;&lt;pre&gt;
&lt;code&gt;
mco package openssl update
mco service nginx restart
&lt;/code&gt;
&lt;/pre&gt;


&lt;p&gt;
In this example, I ran the commands against every server in my environment;
however, you'd probably want to use some kind of MCollective filter to
restart nginx on only part of your infrastructure at a time. In my case, I've
created a custom Puppet fact called hagroup and divided my servers into
three different groups labeled a, b and c, split along fault-tolerance
lines. With that custom fact in place, I can restart nginx on only one group
of servers at a time:

&lt;/p&gt;&lt;pre&gt;
&lt;code&gt;
mco service nginx restart -W hagroup=c
&lt;/code&gt;
&lt;/pre&gt;


&lt;p&gt;
This approach is very useful for deploying OpenSSL updates, but hopefully
those occur only a few times a year if you are lucky. What you more likely
will run into as a common task ideal for orchestration is deploying your own
in-house software to application servers. Although everyone does this in a
slightly different way, the following pattern is pretty common. This pattern is
based on the assumption that you have a redundant, fault-tolerant
application and can take any individual server offline for software
updates. This means you use some kind of load balancer that checks the
health of your application servers and moves unhealthy servers out of
rotation. In this kind of environment, a simple, serial approach to
updates
might look something like this:
&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;
&lt;p&gt;
Get a list of all of the servers running the application.
&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;
Start with the first server on the list.
&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/orchestration-mcollective-part-ii" hreflang="und"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Thu, 08 Jun 2017 13:07:25 +0000</pubDate>
    <dc:creator>Kyle Rankin</dc:creator>
    <guid isPermaLink="false">1339406 at https://www.linuxjournal.com</guid>
    </item>

  </channel>
</rss>
