Features
Containerized infrastructure framework
ModusKube is designed to be used as a framework for building custom infrastructure without starting from scratch. It runs as a container and contains all the tooling needed to build and manage Kubernetes clusters and environments. This includes standard tooling like kubectl and other utilities that are always ready to run inside the container.
Extensions let you customize cluster provisioning and create custom commands using the powerful ModusKube API. Start with ModusKube’s base features, then extend them to turn ModusKube into a powerful tool for building and managing your own custom infrastructure.
For ultimate customization and control you can create your own container image using ModusKube’s Docker image as a base. This gives you the flexibility to completely customize ModusKube including bundling all extensions into a single image.
Pure Kubernetes
ModusKube doesn’t attempt to abstract Kubernetes or provide a mandatory management layer. Node provisioning is based on the low level kubeadm tool which is part of Kubernetes itself. This ensures that Kubernetes is configured with best practices that evolve with each release.
Powerful CLI
ModusKube provides a full-featured, extensible CLI for building and managing clusters. Most CLI options can be set through environment variables, making it easy to supply common settings.
Interactive shell
When working extensively with ModusKube, you can use the built-in shell to boost your productivity. It provides full CLI command auto-completion for ModusKube itself and common utilities like kubectl and helm and lets you set common configuration options globally in the shell to eliminate long and repetitive command options.
Secure, custom network topology
Cluster nodes can run in a private subnet with no direct access to the Internet and no publicly exposed ports. In this configuration, the master load balancer provides the only ingress point into the cluster nodes. Granular security group and firewall rules provide strict isolation between network segments.
Secure secrets management
All secrets used by ModusKube such as SSH keys are stored in an encrypted vault with granular IAM rules to restrict access. Secrets are never passed directly to a user or persisted to local disk. As secrets are retrieved via API call only at the time they’re needed, they can be regularly and globally rotated without the need to ever manually update a secret.
Immutable infrastructure
Clusters provisioned by ModusKube are immutable. Rather than supporting risky operations like in-place upgrades of Kubernetes, changes to clusters are made by completely rebuilding each cluster from scratch. Deployment APIs in a ModusKube environment can automatically replace all clusters from scratch with zero downtime by automatically managing the master load balancer.
Automatic failure mitigation
A common mistake made by new Kubernetes adopters is to assume that a cluster — even one that’s configured for high availability — is truly fault tolerant. While Kubernetes solves fault tolerance at the application layer, the control plane is still highly vulnerable. A failed application deployment or poisoned etcd state can easily take down a “highly available” cluster. Furthermore, the dynamic nature of the cloud means that underlying cloud resources can also fail at any time, sometimes without notice.
ModusKube is designed to provision multiple, redundant clusters, managed as a set. Application deployments can be managed purely with standard Kubernetes tools like Helm or clusters can be removed from the load balancer during a deployment ensuring that a worst-case scenario involving one cluster has no impact on application availability.
Cluster validation test suite
After provisioning a cluster, ModusKube runs an extensive test suite that validates the viability of the cluster. This includes running test workloads and validating security requirements. The test suite can be extended to perform extensive compliance testing for things like PCI DSS or other security standards.
Modular design
ModusKube is designed with an MVC-style architecture. Cluster provisioning and management is handled through a well-defined internal API that supports multiple interfaces. This powers the ModusKube CLI and could easily support a REST API in the future.
Individual parts of ModusKube can be used independently to build infrastructure. For example, you could use some or all of ModusKube’s Terraform modules directly without needing to use ModusKube’s CLI or other tools.
Extensions
ModusKube is designed to be an extensible framework for building custom infrastructure and has multiple extension points for customization. See Extending ModusKube for more information on ModusKube extensions.