Files
clear-linux-documentation/guides/maintenance/deploy-at-scale.html
2024-11-04 18:48:51 +00:00

359 lines
21 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en" data-content_root="../../">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Deploy at Scale &#8212; Documentation for Clear Linux* project</title>
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="../../_static/bizstyle.css?v=5283bb3d" />
<link rel="stylesheet" type="text/css" href="../../_static/copybutton.css?v=76b2166b" />
<script src="../../_static/documentation_options.js?v=5929fcd5"></script>
<script src="../../_static/doctools.js?v=9bcbadda"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../_static/clipboard.min.js?v=a7894cd8"></script>
<script src="../../_static/copybutton.js?v=a56c686a"></script>
<script src="../../_static/bizstyle.js"></script>
<link rel="canonical" href="https://clearlinux.github.io/clear-linux-documentation/guides/maintenance/deploy-at-scale.html" />
<link rel="icon" href="../../_static/favicon.ico"/>
<link rel="author" title="About these documents" href="../../about.html" />
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Developer Workstation" href="developer-workstation.html" />
<link rel="prev" title="CPU Power and Performance" href="cpu-performance.html" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
<!--[if lt IE 9]>
<script src="_static/css3-mediaqueries.js"></script>
<![endif]-->
</head><body>
<div class="related" role="navigation" aria-label="Related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="developer-workstation.html" title="Developer Workstation"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="cpu-performance.html" title="CPU Power and Performance"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../../index.html">Documentation for Clear Linux* project</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Guides</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Deploy at Scale</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="deploy-at-scale">
<span id="id1"></span><h1>Deploy at Scale<a class="headerlink" href="#deploy-at-scale" title="Link to this heading"></a></h1>
<p>This guide describes deployment considerations and strategies when deploying
Clear Linux* OS at scale in your environment.</p>
<nav class="contents local" id="contents">
<ul class="simple">
<li><p><a class="reference internal" href="#overview" id="id3">Overview</a></p></li>
<li><p><a class="reference internal" href="#pick-a-usage-and-update-strategy" id="id4">Pick a usage and update strategy</a></p></li>
<li><p><a class="reference internal" href="#pick-an-image-distribution-strategy" id="id5">Pick an image distribution strategy</a></p></li>
<li><p><a class="reference internal" href="#considerations-with-stateless-systems" id="id6">Considerations with stateless systems</a></p></li>
</ul>
</nav>
<section id="overview">
<h2><a class="toc-backref" href="#id3" role="doc-backlink">Overview</a><a class="headerlink" href="#overview" title="Link to this heading"></a></h2>
<p>In this guide the term <em>endpoint</em> refers to a system targeted for Clear Linux OS
installation, whether that is a datacenter system or unit deployed in field.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This guide is not a replacement or blueprint for designing your own IT
operating environment.</p>
<p>Implementation details for a scale deployment are beyond the scope of this
guide.</p>
<p>Your Clear Linux OS deployment should complement your existing environment and
available tools. It is assumed core IT dependencies of your environment,
such as your network, are healthy and scaled to suit the deployment.</p>
</div>
</section>
<section id="pick-a-usage-and-update-strategy">
<h2><a class="toc-backref" href="#id4" role="doc-backlink">Pick a usage and update strategy</a><a class="headerlink" href="#pick-a-usage-and-update-strategy" title="Link to this heading"></a></h2>
<p>Different business scenarios call for different deployment methodologies.
Clear Linux OS offers the flexibility to continue consuming the upstream Clear Linux OS
distribution or the option to fork away from the Clear Linux OS distribution and
act as your own <abbr title="Operating System Vendor">OSV</abbr>.</p>
<p>Below is an overview of some considerations.</p>
<section id="create-your-own-linux-distribution-mix">
<h3>Create your own Linux distribution (mix)<a class="headerlink" href="#create-your-own-linux-distribution-mix" title="Link to this heading"></a></h3>
<p>This approach forks away from the Clear Linux OS upstream and has you act as your own
<abbr title="Operating System Vendor">OSV</abbr> by leveraging the <a class="reference internal" href="../clear/mixer.html#mixer"><span class="std std-ref">mixer</span></a> process to
create customized images based on Clear Linux OS. This is a level of responsibility
that requires having more infrastructure and processes to adopt. In return,
this approach <em>offers you a high degree of control and customization</em>. Consider:</p>
<ul>
<li><p>Development systems that generate bundles and updates should have
sufficient performance for the task and be separate from the swupd update
webservers that serve update content to production machines.</p></li>
<li><p>swupd update webservers that serve update content to production machines
should be appropriately scaled. Specific implementation details for a scalable,
resilient web server are beyond the scope of this document.</p>
<p>(See <a class="reference internal" href="../clear/mixer.html#mixer"><span class="std std-ref">mixer</span></a> for more information about update servers.)</p>
</li>
</ul>
</section>
<section id="adopt-an-agile-methodology">
<h3>Adopt an agile methodology<a class="headerlink" href="#adopt-an-agile-methodology" title="Link to this heading"></a></h3>
<p>The cloud, and other scaled deployments, are all about flexibility and speed.
It only makes sense that any Clear Linux OS deployment strategy should follow suit.</p>
<p>Manually rebuilding your own bundles or mix for every release is not
sustainable at a large scale. A Clear Linux OS deployment pipeline should be agile
enough to validate and produce new versions with speed. Whether or not those
updates actually make their way to your production can be separate
business decision. However this <em>ability to frequently roll new versions</em> of
software to your endpoints is an important prerequisite.</p>
<p>You own the validation and lifecycle of the OS and should treat it like any
other software development lifecycle. Below are some pointers:</p>
<ul class="simple">
<li><p>Thoroughly understand the custom software packages that you will need to
integrate with Clear Linux OS and maintain along with their dependencies.</p></li>
<li><p>Setup a path to production for building Clear Linux OS based images. At minimum this
should include:</p>
<ul>
<li><p>A development clr-on-clr environment to test building packages and
bundles for Clear Linux OS systems.</p></li>
<li><p>A pre-production environment to deploy Clear Linux OS versions to before
production</p></li>
</ul>
</li>
<li><p>Employ a continuous integration and continuous deployment (CI/CD)
philosophy in order to:</p>
<ul>
<li><p>Automatically pull custom packages as they are updated from their
upstream projects or vendors.</p></li>
<li><p>Generate Clear Linux OS bundles and potentially bootable images with your
customizations, if any.</p></li>
<li><p>Measure against metrics and indicators which are relevant to your
business (e.g. performance, power, etc) from release to release.</p></li>
<li><p>Integrate with your organizations governance processes, such as change
control.</p></li>
</ul>
</li>
</ul>
</section>
<section id="versioning-infrastructure">
<h3>Versioning infrastructure<a class="headerlink" href="#versioning-infrastructure" title="Link to this heading"></a></h3>
<p>Clear Linux OS version numbers are very important as they apply to the whole
infrastructure stack from OS components to libraries and applications.</p>
<p>Good record keeping is important, so you should keep a detailed registry and
history of previously deployed versions and their contents.</p>
<p>With a glance at the Clear Linux OS version numbers deployed, you should be able to
tell if your Clear systems are patched against a particular security
vulnerability or incorporate a critical new feature.</p>
</section>
</section>
<section id="pick-an-image-distribution-strategy">
<h2><a class="toc-backref" href="#id5" role="doc-backlink">Pick an image distribution strategy</a><a class="headerlink" href="#pick-an-image-distribution-strategy" title="Link to this heading"></a></h2>
<p>Once you have decided on a usage and update strategy, you should understand
<em>how</em> Clear Linux OS will be deployed to your endpoints. In a large scale deployment,
interactive installers should be avoided in favor of automated installations
or prebuilt images.</p>
<p>There are many well-known ways to install an operating system at scale. Each
have their own benefits, and one may lend itself easier in your environment
depending on the resources available to you.</p>
<p>See the available <a class="reference internal" href="../../reference/image-types.html#image-types"><span class="std std-ref">Clear Linux* OS image types</span></a>.</p>
<p>Below are some common ways to install Clear Linux OS to systems at scale:</p>
<section id="bare-metal">
<h3>Bare metal<a class="headerlink" href="#bare-metal" title="Link to this heading"></a></h3>
<p>Preboot Execution Environments (PXE) or other out-of-band booting options are
one way to distribute Clear Linux OS to physical bare metal systems on a LAN.</p>
<p>This option works well if your customizations are fairly small in size
and infrastructure can be stateless.</p>
<p>The Clear Linux OS <a class="reference external" href="https://clearlinux.org/downloads/">Downloads</a> page offers a live image that can be deployed as
a PXE boot server if one doesnt already exist in your environment. Also see
documentation on how to <a class="reference internal" href="../../get-started/bare-metal-install-server.html#bare-metal-install-server"><span class="std std-ref">Install Clear Linux* OS from the live server</span></a>.</p>
</section>
<section id="cloud-instances-or-virtual-machines">
<h3>Cloud instances or virtual machines<a class="headerlink" href="#cloud-instances-or-virtual-machines" title="Link to this heading"></a></h3>
<p>Image templates in the form of cloneable disks are an effective way to
distribute Clear Linux OS for virtual machine environments, whether on-premises or
hosted by a Cloud Solution Provider (CSP).</p>
<p>When used in concert with cloud VM migration features, this can be a good option
for allowing your applications a degree of high availability and workload
mobility; VMs can be restarted on a cluster of hypervisor host or moved between
datacenters transparently.</p>
<p>The Clear Linux OS <a class="reference external" href="https://clearlinux.org/downloads/">Downloads</a> page offers example prebuilt VM images and is readily
available on popular CSPs. Also see documentation on how to
<a class="reference internal" href="../../get-started/index.html#virtual-machine-install"><span class="std std-ref">Install in a virtual machine</span></a>.</p>
</section>
<section id="containers">
<h3>Containers<a class="headerlink" href="#containers" title="Link to this heading"></a></h3>
<p>Containerization platforms allow images to be pulled from a repository and
deployed repeatedly as isolated containers.</p>
<p>Containers with a Clear Linux OS image can be a good option to blueprint and ship
your application, including all its dependencies, as an artifact while
allowing you or your customers to dynamically orchestrate and scale
applications.</p>
<p>Clear Linux OS is capable of running a Docker host, has a container image which can
be pulled from DockerHub, or can be built as a customized container.
For more information visit the <a class="reference external" href="https://clearlinux.org/downloads/containers">Containers</a> page.</p>
</section>
</section>
<section id="considerations-with-stateless-systems">
<h2><a class="toc-backref" href="#id6" role="doc-backlink">Considerations with stateless systems</a><a class="headerlink" href="#considerations-with-stateless-systems" title="Link to this heading"></a></h2>
<p>An important Clear Linux OS concept is statelessness and partitioning of system data
from user data. This concept can change the way you think about an at scale
deployment.</p>
<section id="backup-strategy">
<h3>Backup strategy<a class="headerlink" href="#backup-strategy" title="Link to this heading"></a></h3>
<p>A Clear Linux OS system and its infrastructure should be considered a commodity and
be easily reproducible. Avoid focusing on backing up the operating system
itself or default values.</p>
<p>Instead, focus on backing up whats important and unique - the application
and data. In other words, only focus on backing up critical areas like
<code class="file docutils literal notranslate"><span class="pre">/home</span></code>, <code class="file docutils literal notranslate"><span class="pre">/etc</span></code>, and <code class="file docutils literal notranslate"><span class="pre">/var</span></code>.</p>
</section>
<section id="meaningful-logging-telemetry">
<h3>Meaningful logging &amp; telemetry<a class="headerlink" href="#meaningful-logging-telemetry" title="Link to this heading"></a></h3>
<p>Offload logging and telemetry from endpoints to external servers, so it is
persistent and can be accessed on another server when an issue occurs.</p>
<ul>
<li><p>Remote syslogging in Clear Linux OS is available through the
<a class="reference external" href="https://www.freedesktop.org/software/systemd/man/systemd-journal-remote.service.html">systemd-journal-remote.service</a></p></li>
<li><p>Clear Linux OS offers a <a class="reference internal" href="../clear/telemetrics.html#telem-guide"><span class="std std-ref">Telemetrics</span></a>, which can be a powerful tool
for a large deployment to quickly crowdsource issues of interest. Take
advantage of this feature with careful consideration of the target audience
and the kind of data that would be valuable, and expose events
appropriately.</p>
<p>Like any web server, the telemetry server should be appropriately scaled and
resilient. Specific implementation details for a scalable, resilient web
server are beyond the scope of this document.</p>
</li>
</ul>
</section>
<section id="orchestration-and-configuration-management">
<h3>Orchestration and configuration management<a class="headerlink" href="#orchestration-and-configuration-management" title="Link to this heading"></a></h3>
<p>In cloud environments, where systems can be ephemeral, being able to
configure and maintain generic instances is valuable.</p>
<p>Clear Linux OS offers an efficient cloud-init style solution, <a class="reference external" href="https://github.com/clearlinux/micro-config-drive">micro-config-drive</a>,
through the <em>os-cloudguest</em> bundles which allow you to configure many Day 1
tasks such as setting hostname, creating users, or placing
SSH keys in an automated way at boot. For more information on
automating configuration during deployment of Clear Linux OS endpoints see the
<a class="reference internal" href="../../get-started/ipxe-install.html#ipxe-install"><span class="std std-ref">Install Clear Linux OS Over the Network with iPXE</span></a> guide.</p>
<p>A configuration management tool is useful for maintaining consistent system
and application-level configuration. Ansible* is offered through the
<em>sysadmin-hostmgmt</em> bundle as a configuration management and automation
tool.</p>
</section>
<section id="cloud-native-applications">
<h3>Cloud-native applications<a class="headerlink" href="#cloud-native-applications" title="Link to this heading"></a></h3>
<p>An Infrastructure OS can design for good behavior, but it is ultimately up
to applications to make agile design choices. Applications deployed
on Clear Linux OS should aim to be host-aware but not depend on any specific host to
run. References should be relative and dynamic when possible.</p>
<p>The application architecture should incorporate an appropriate tolerance for
infrastructure outages. Dont just keep stateless design as a noted feature.
Continuously test its use; Automate its use by redeploying Clear Linux OS and
application on new hosts. This naturally minimizes configuration drift,
challenges your monitoring systems, and business continuity plans.</p>
</section>
</section>
</section>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="Main">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../../index.html">
<img class="logo" src="../../_static/clearlinux.png" alt="Logo of Clear Linux* Project Docs"/>
</a></p>
<div>
<h3><a href="../../index.html">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">Deploy at Scale</a><ul>
<li><a class="reference internal" href="#overview">Overview</a></li>
<li><a class="reference internal" href="#pick-a-usage-and-update-strategy">Pick a usage and update strategy</a><ul>
<li><a class="reference internal" href="#create-your-own-linux-distribution-mix">Create your own Linux distribution (mix)</a></li>
<li><a class="reference internal" href="#adopt-an-agile-methodology">Adopt an agile methodology</a></li>
<li><a class="reference internal" href="#versioning-infrastructure">Versioning infrastructure</a></li>
</ul>
</li>
<li><a class="reference internal" href="#pick-an-image-distribution-strategy">Pick an image distribution strategy</a><ul>
<li><a class="reference internal" href="#bare-metal">Bare metal</a></li>
<li><a class="reference internal" href="#cloud-instances-or-virtual-machines">Cloud instances or virtual machines</a></li>
<li><a class="reference internal" href="#containers">Containers</a></li>
</ul>
</li>
<li><a class="reference internal" href="#considerations-with-stateless-systems">Considerations with stateless systems</a><ul>
<li><a class="reference internal" href="#backup-strategy">Backup strategy</a></li>
<li><a class="reference internal" href="#meaningful-logging-telemetry">Meaningful logging &amp; telemetry</a></li>
<li><a class="reference internal" href="#orchestration-and-configuration-management">Orchestration and configuration management</a></li>
<li><a class="reference internal" href="#cloud-native-applications">Cloud-native applications</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div>
<h4>Previous topic</h4>
<p class="topless"><a href="cpu-performance.html"
title="previous chapter">CPU Power and Performance</a></p>
</div>
<div>
<h4>Next topic</h4>
<p class="topless"><a href="developer-workstation.html"
title="next chapter">Developer Workstation</a></p>
</div>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../../_sources/guides/maintenance/deploy-at-scale.rst.txt"
rel="nofollow">Show Source</a></li>
</ul>
</div>
<search id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="Related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="developer-workstation.html" title="Developer Workstation"
>next</a> |</li>
<li class="right" >
<a href="cpu-performance.html" title="CPU Power and Performance"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../../index.html">Documentation for Clear Linux* project</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../index.html" >Guides</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Deploy at Scale</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2022 Intel Corporation. All Rights Reserved..
Last updated on Nov 04, 2024.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3.
</div>
</body>
</html>