/epiphany

Cloud and on-premises automation for Kubernetes centered industrial grade solutions.

Primary LanguageJinjaApache License 2.0Apache-2.0

Epiphany Platform

GitHub release Github license Quality Gate Status Maintainability Rating Security Rating Bugs Vulnerabilities Code Smells

⚠️ Epiphany is no longer under active development, no new features or upgrades will be done by the core team. The core team however, will address critical defects and security issues during the LTS versions lifecycle. Finally the core team will continue the governance of external contributions and publish intermittent releases for LTS versions during their lifecycle.⚠️

As already announced, Docker is sunsetting Free Team organizations. That's why we decided to move to GitHub Packages, that remains free for public repositories. All the latest images are available here.

docker pull ghcr.io/hitachienergy/epicli:<tag>

Overview

Epiphany at its core is a full automation of Kubernetes and Docker plus additional builtin services/components like:

  • Kafka or RabbitMQ for high speed messaging/events
  • Prometheus and Alertmanager for monitoring with Graphana for visualization
  • OpenSearch for centralized logging
  • HAProxy for loadbalancing
  • Postgres and OpenSearch for data storage
  • KeyCloak for authentication
  • Helm as package manager for Kubernetes

The following target platforms are available: AWS, Azure and on-prem installation.

Epiphany can run on as few as one node (laptop, desktop, server) but the real value comes from running 3 or more nodes for scale and HA. Everything is data driven so simply changing the manifest data and running the automation will modify the environment. Kubernetes hosts (masters, nodes) and component VMs can be added depending on data in the initial manifest. More information here.

Please note that currently Epiphany supports only creating new masters and nodes and adding them to the Kubernetes cluster. It doesn't support downscale. To remove them from Kubernetes cluster you have to do it manually.

We currently use Terraform and Ansible for our automation orchestration. All automation is idempotent so you can run it as many times as you wish and it will maintain the same state unless you change the data. If someone makes a "snow flake" change to the environment (you should never do this) then simply running the automation again will put the environment back to the desired state.

Note about documentation

  • The documentation is a moving target. Always check the latest documentation on the develop branch. There is a big chance that whatever you are looking for is already added/updated or improved there.

Deprecation Note

At the link presented below you can find the information about deprecated components with plan of removal from Epiphany.
Deprecation Note

Quickstart

Epicli

Use the following command to see a full run-down of all epicli commands and flags:

epicli --help

Generate a new minimum cluster definition:

epicli init -p aws -n demo

This minimum file definition is fine to start with, however if you need more control over the infrastructure created you can also create a full definition:

epicli init -p aws -n demo --full

and this will create a cluster definition with all available in Epiphany components.

You will need to modify a few values (like your AWS secrets, directory path for SSH keys). Once you are done with demo.yml you can start cluster deployment by executing:

epicli apply -f demo.yml

You will be asked for a password that will be used for encryption of some of build artifacts. More information here.

Since version 0.7 epicli has an option to backup/recovery some of its components. More information here.

epicli backup -f <file.yml> -b <build_folder>
epicli recovery -f <file.yml> -b <build_folder>

To delete all deployed components following command should be used

epicli delete -b <build_folder>

Find more information using table of contents below - especially the How-to guides.

Documentation