Introduction

About Nirmata

Nirmata’s mission is to help businesses innovate faster by enabling the adoption of cloud-native technologies. At Nirmata, we believe that software can improve our world and we deliver a software platform that allows enterprise DevOps teams to deliver better software, faster.

Nirmata is a member of the CNCF (Cloud Native Computing Foundation). Cloud-native systems are optimized to operate on public and private cloud-computing platforms. The CNCF defines cloud-native software as having the following characteristics:

In practice, cloud-native system components are packaged in containers, leverage container orchestration frameworks like Kubernetes, and are increasingly designed using Microservices style architectures.

The Nirmata platform is designed ground-up for cloud-native applications. Nirmata supports open container technologies and 100% upstream OSS Kubernetes for scalable and efficient application management on any public or private cloud, and even bare-metal servers.

Solution Overview

Nirmata is designed to complement and complete Kubernetes for enterprise DevOps teams. Nirmata provides value “below” Kubernetes for application-aware infrastructure management, manages Kubernetes components, and provides value “above” Kubernetes for application delivery and workload management.

The Nirmata solution is non-intrusive and easy to use. It integrates with your current tools and does not try to hide, or abstract-away, the powerful abstractions provided by Kubernetes and the Infrastructure-as-a-Service (IaaS) layers.

In many ways, Nirmata acts as an “out-of-band” management system. With Nirmata you can focus on higher-level policy-based development and operations workflows, but can also directly use the underlying systems whenever needed.

This unique architectural approach allows full visibility and control, and yet provides the benefits of a complete platform. You can configure your cloud or data center resources, using each provider’s security and management best practices and then use Nirmata to orchestrate and manage applications across providers.

image

Nirmata provides the following features:

For IT Ops and Platform Teams

For Developers

Deployment Models

Nirmata is available with three different deployment models. All deployment models offer the same features and capabilities, but require different levels of operations and management.

  1. Nirmata Cloud Services

    • Highly-scalable and secure cloud services
    • A fully managed service operated by Nirmata
  2. Nirmata Managed Edition

    • Runs in your public or private cloud
    • Remotely managed by the Nirmata Ops team
  3. Nirmata Private Edition

    • Runs in your public or private cloud
    • Directly managed by you

You can choose the model that best fits your business needs. With all models, your applications always run securely on your servers.

Core Concepts

This section discusses the core concepts in Nirmata. Most of these concepts will be familiar, as Nirmata 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:

image

Applications

Applications are composed of multiple Components. Applications can be defined in a Catalog and can run in one or more Environments. While Nirmata has been designed for Microservices-style applications, it is easy to model and manage traditional 3-tier applications as well.

Application Components

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. Nirmata’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.

Environments

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.

Clusters

Clusters represent Kubernetes components and nodes. With Nirmata, you can deploy and operate Kubernetes clusters from scratch, or can discover and operate existing clusters created by other providers.

Policies

Policies are used to govern resource usage, application constraints, and ensure scalable, consistent, and repeatable behaviors across multiple teams. In Nirmata declarative policies are used to manage all resources.

Cloud Providers

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.

Nirmata currently supports the following cloud providers:

Nirmata can securely manage both public and private clouds, without requiring any special network or firewall configuration.

Host Groups

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.

Containers

Each Service runs in a Container. Nirmata uses the Docker Engine 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 Nirmata.

Image Registries

An Image Registry stores Docker images, which are typically produced by a build system. Nirmata supports both public and private image registries. You can setup your build tools to generate images for each service, and then trigger Nirmata to deploy the images.

Getting Started

Here are three easy steps to familiarize yourself with Nirmata:

  1. Setup a Cloud Provider and a Host Group (see Cloud Providers and Host Groups).
  2. Deploy a Kubernetes Cluster (Clusters).
  3. Run an Application Running Applications).

The following video provides a walkthrough of deploying clusters and managing applications with Nirmata:

Nirmata Overview Video