Home

Awesome

Conforms to README.lint Project Status: Initial Release GoDoc Go Report Card License: Apache-2.0 Version

Cosmos Operator is a Kubernetes Operator primarily for blockchains built with the Cosmos SDK. It also supports Penumbra and other chains which use CometBFT for consensus.

🌌 Why use Cosmos Operator?

Kubernetes ("K8") makes DevOps easier. Cosmos Operator makes Kubernetes easier for use in the Cosmos Ecosystem.

K8 provides a foundation for creating highly-available, scalable, fault-tolerant applications. It provides well-known DevOps patterns and abstractions (as opposed to traditional DevOps which often requires "re-inventing the wheel").

Furthermore, the Operator Pattern allows us to mix infrastructure with business logic, thus minimizing human intervention and human error.

🌌🌌 Who benefits from Cosmos Operator?

People who'd like to use the Operator Pattern to "configure it and forget it".

The operator pattern aims to capture the key aim of a human operator who is managing a service or set of services. Human operators who look after specific applications and services have deep knowledge of how the system ought to behave, how to deploy it, and how to react if there are problems.

People who run workloads on Kubernetes often like to use automation to take care of repeatable tasks. The operator pattern captures how you can write code to automate a task beyond what Kubernetes itself provides.

🌌🌌🌌 What does Cosmos Operator do?

Cosmos Operator is a Kubernetes Operator for blockchains built with the Cosmos SDK. Write your own Custom Resource Definition ("CRD") as a yaml file and deploy with ease!

🌌🌌🌌🌌 How do I use Cosmos Operator?

Quick Start

See the quick start guide.

CosmosFullNode CRD

CosmosFullNode is the flagship CRD. Its purpose is to deploy highly-available, fault-tolerant blockchain nodes.

The CosmosFullNode controller is like a StatefulSet for running Cosmos SDK blockchains.

A CosmosFullNode can be configured to run as an RPC node, a validator sentry, or a seed node. All configurations can be used as persistent peers.

As of this writing, Strangelove has been running CosmosFullNode in production for over a year.

Samples

Support CRDs

These CRDs are part of the operator and serve to support CosmosFullNodes.

Why not a StatefulSet?

Each pod requires different config, such as peer settings in config.toml and mounted node keys. Therefore, a blanket template as found in StatefulSet did not suffice.

Additionally, CosmosFullNode gives you more control over individual pod and pvc pairs vs. a StatefulSet to help the human operator debug and recover from situations such as a corrupted PVCs.

🌌🌌🌌🌌🌌 Extras

Disclaimers

Contributing

See the contributing guide.

Best Practices

See the best practices guide for CosmosFullNode.

Roadmap

Disclaimer: Strangelove has not committed to these enhancements and cannot estimate when they will be completed.

License

Copyright 2023 Strangelove Ventures LLC.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.