Core Concepts
<p>This section discusses the core concepts in CompanyName. Most of these
concepts will be familiar, as CompanyName does not introduce any unnecessary
abstractions. The picture below shows the main entities, and their
relationships to each other. Each of these concepts are further defined
below:</p>
<p><img src="/images/concepts.png" alt="image"></p>
<h5 id="applications">Applications</h5>
<p>Applications are composed of multiple Components. Applications can be
defined in a Catalog and can run in one or more Environments. While
CompanyName has been designed for Microservices-style applications, it is
easy to model and manage traditional 3-tier applications as well.</p>
<h5 id="application-components">Application Components</h5>
<p>A Component is simply part of an Application. A Component maps to
Kubernetes workload API constructs. For example a stateless component
will map to a Deployment and be exposed by a Service, whereas a stateful
component will map to a StatefulSet and may be exposed by a headless
Service. CompanyName’s intuitive and powerful user interfaces provide
step-by-step guidance to building Kubernetes applications, but can also
support low-level YAML manipulation for expert users.</p>
<h5 id="environments">Environments</h5>
<p>An Environment contains runtime instances of one or more Applications.
Environments can be created for different stages of a development
pipeline, such as dev-test, staging, production or can be based on
deployment characteristics such as regions.</p>
<h5 id="clusters">Clusters</h5>
<p>Clusters represent Kubernetes components and nodes. With CompanyName, you
can deploy and operate Kubernetes clusters from scratch, or can discover
and operate existing clusters created by other providers.</p>
<h5 id="policies">Policies</h5>
<p>Policies are used to govern resource usage, application constraints, and
ensure scalable, consistent, and repeatable behaviors across multiple
teams. In CompanyName declarative policies are used to manage all resources.</p>
<h5 id="cloud-providers">Cloud Providers</h5>
<p>Cloud Providers supply resources to run application containers. You can
create one or more cloud providers, setup pools of hosts (Host Groups)
from them, and then compose clusters from the Host Groups.</p>
<p>CompanyName currently supports the following cloud providers:</p>
<ul>
<li>
<p>Public Clouds</p>
<ul>
<li>Amazon Web Services (AWS)</li>
<li>Microsoft Azure</li>
<li>Google Compute Engine</li>
<li>Oracle Cloud Services</li>
</ul>
</li>
<li>
<p>Private Clouds:</p>
<ul>
<li>VMware vSphere</li>
<li>OpenStack</li>
<li>Diamanti</li>
</ul>
</li>
<li>
<p>Direct Connect (any virtual or physical server)</p>
</li>
</ul>
<p>CompanyName can securely manage both public and private clouds, without
requiring any special network or firewall configuration.</p>
<h5 id="host-groups">Host Groups</h5>
<p>Host Groups are pools of container hosts with the same configuration,
created in a Cloud Provider. For example, you can allocate pools of
resources based on service tiers, application characteristics, or
application lifecycle needs.</p>
<h5 id="containers">Containers</h5>
<p>Each Service runs in a Container. CompanyName uses the <a href="http://www.docker.io">Docker
Engine</a> as its container technology. Since Docker
is an open technology, you can always keep control of your images, and
can also run them outside of CompanyName.</p>
<h5 id="image-registries">Image Registries</h5>
<p>An Image Registry stores Docker images, which are typically produced by
a build system. CompanyName supports both public and private image
registries. You can setup your build tools to generate images for each
service, and then trigger CompanyName to deploy the images.</p>
Updated on 27 Aug 2020