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:
- Elastic: cloud-native systems can automatically scale up or scale down.
- Resilient: cloud-native systems can automatically recover from common failures.
- Observable: cloud-native systems are designed to provide detailed health and status information.
- Operable: cloud-native systems leverage highly automated management workflows.
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.
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.
Nirmata provides the following features:
For IT Ops and Platform Teams
- Single management and control plane across multiple Kubernetes clusters and across cloud providers.
- Automated Kubernetes cluster installation, upgrades, and operations on any cloud. Nirmata can also discover existing Kubernetes clusters, for complete visibility and management.
- Integrations with all major public and private cloud providers, to allow composing clusters from heterogeneous resources, and to fully automate container host management.
- Elastic cluster sizing based on usage and custom metrics.
- Policy-based integrations for networking and storage.
- Security integrations for end-to-end control, governance, and compliance.
- Centralized Role Based Access Control (RBAC) with Single Sign On (SSO) integrations.
- Centralized policy engine to inspect and patch workloads based on environments.
- Flexible isolation policies across applications, environments, and clusters.
- Built-in and fully integrated monitoring, alarms, and automated remediation.
- Complete visibility and lifecycle management of applications and environments.
- Simplified Kubernetes YAML management with validation. Rapidly model traditional applications, or compose microservices-style applications from Helm charts or image repositories.
- Secure native access to Kubernetes APIs with full support of all workload constructs including Custom Resource Definitions (CRDs).
- Integrate with existing build tool and image registries to automate “commit-to-deploy” pipelines.
- Central and secure access to applications, logs, events, and more for rapid troubleshooting.
- Cloud shell to access any container, without requiring cumbersome VPN or host SSH access.
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.
Nirmata Cloud Services
- Highly-scalable and secure cloud services
- A fully managed service operated by Nirmata
Nirmata Managed Edition
- Runs in your public or private cloud
- Remotely managed by the Nirmata Ops team
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.
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:
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.
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.
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 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 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 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:
- Amazon Web Services (AWS)
- Microsoft Azure
- Google Compute Engine
- Oracle Cloud Services
- VMware vSphere
Direct Connect (any virtual or physical server)
Nirmata can securely manage both public and private clouds, without requiring any special network or firewall configuration.
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.
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.
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.
Here are three easy steps to familiarize yourself with Nirmata:
- Setup a Cloud Provider and a Host Group (see Cloud Providers and Host Groups).
- Deploy a Kubernetes Cluster (Clusters).
- Run an Application Running Applications).
The following video provides a walkthrough of deploying clusters and managing applications with Nirmata: