ivory-operator

module
v0.0.0-...-30d1bac Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 25, 2023 License: Apache-2.0

README

IVYO: The Ivory Operator from IvorySQL

Go Report Card

Introduction and Special Thanks

Ivory Operator is developed based on CrunchyData Postgres Operator. A new operator to support IvorySQL is needed. CrunchyData Postgres Operator does a great job, it has legible docs, clean codes, rigorous testing and active community. Therefore, for compatible with IvorySQL, we did some code changes, modify docs and correct yaml files in our first phase. Thanks for CrunchyData Postgres Operator especially.

Production Ivory Made Easy

IVYO, the Ivory Operator from IvorySQL, gives you a declarative Ivory solution that automatically manages your IvorySQL clusters.

Designed for your GitOps workflows, it is easy to get started with Ivory on Kubernetes with IVYO. Within a few moments, you can have a production-grade Ivory cluster complete with high availability, disaster recovery, and monitoring, all over secure TLS communications. Even better, IVYO lets you easily customize your Ivory cluster to tailor it to your workload!

With conveniences like cloning Ivory clusters to using rolling updates to roll out disruptive changes with minimal downtime, IVYO is ready to support your Ivory data at every stage of your release pipeline. Built for resiliency and uptime, IVYO will keep your Ivory cluster in its desired state, so you do not need to worry about it.

IVYO is developed with many years of production experience in automating Ivory management on Kubernetes, providing a seamless cloud native Ivory solution to keep your data always available.

Installation

We recommend following our Quickstart for how to install and get up and running with IVYO, the Ivory Operator from IvorySQL. However, if you can't wait to try it out, here are some instructions to get Ivory up and running on Kubernetes:

  1. Fork the Ivory Operator repository and clone it to your host machine. For example:
YOUR_GITHUB_UN="<your GitHub username>"
git clone --depth 1 "git@github.com:${YOUR_GITHUB_UN}/ivory-operator.git"
cd ivory-operator
  1. Run the following commands
kubectl apply -k examples/kustomize/install/namespace
kubectl apply --server-side -k examples/kustomize/install/default

For more information please read Tutorial.

Cloud Native Ivory for Kubernetes

IVYO, the Ivory Operator from IvorySQL, comes with all of the features you need for a complete cloud native Ivory experience on Kubernetes!

IvorySQL Cluster Provisioning

Create, Scale, & Delete IvorySQL clusters with ease, while fully customizing your Pods and IvorySQL configuration!

High Availability

Safe, automated failover backed by a distributed consensus high availability solution. Uses Pod Anti-Affinity to help resiliency; you can configure how aggressive this can be! Failed primaries automatically heal, allowing for faster recovery time.

Support for standby IvorySQL clusters that work both within and across multiple Kubernetes clusters.

Disaster Recovery

Backups and restores leverage the open source pgBackRest utility and includes support for full, incremental, and differential backups as well as efficient delta restores. Set how long you to retain your backups. Works great with very large databases!

Security and TLS

IVYO enforces that all connections are over TLS. You can also bring your own TLS infrastructure if you do not want to use the defaults provided by IVYO.

IVYO runs containers with locked-down settings and provides Ivory credentials in a secure, convenient way for connecting your applications to your data.

Advanced Replication Support

Choose between asynchronous and synchronous replication for workloads that are sensitive to losing transactions.

Clone

Create new clusters from your existing clusters or backups with efficient data cloning.

Pod Anti-Affinity, Node Affinity, Pod Tolerations

Have your IvorySQL clusters deployed to Kubernetes Nodes of your preference. Set your pod anti-affinity, node affinity, Pod tolerations, and more rules to customize your deployment topology!

Scheduled Backups

Choose the type of backup (full, incremental, differential) and how frequently you want it to occur on each IvorySQL cluster.

Full Customizability

IVYO makes it easy to fully customize your Ivory cluster to tailor to your workload:

Namespaces

Deploy IVYO to watch Ivory clusters in all of your namespaces, or [restrict which namespaces][single-namespace] you want IVYO to manage Ivory clusters in!

Included Components

IvorySQL containers deployed with the IvorySQL Operator include the following components:

In addition to the above, the geospatially enhanced IvorySQL + PostGIS container adds the following components:

IvorySQL Operator Monitoring uses the following components:

Supported Platforms

IVYO, the Ivory Operator from IvorySQL, is tested on the following platforms:

  • Kubernetes 1.22-1.25
  • OpenShift 4.8-4.11
  • Rancher
  • Google Kubernetes Engine (GKE), including Anthos
  • Amazon EKS
  • Microsoft AKS
  • VMware Tanzu

This list only includes the platforms that the Ivory Operator is specifically tested on as part of the release process: IVYO works on other Kubernetes distributions as well.

Documentation

For additional information regarding the design, configuration, and operation of the IvorySQL Operator, please follow this catalog:

Toturial
Architecture

Contributing to the Project

Want to contribute to the IvorySQL Operator project? Great! We've put together a set of contributing guidelines that you can review here:

Once you are ready to submit a Pull Request, please ensure you do the following:

  1. Reviewing the contributing guidelines and ensure your that you have followed the commit message format, added testing where appropriate, documented your changes, etc.
  2. Open up a pull request based upon the guidelines. If you are adding a new feature, please open up the pull request on the master branch.
  3. Please be as descriptive in your pull request as possible. If you are referencing an issue, please be sure to include the issue in your pull request

Directories

Path Synopsis
cmd
internal
initialize
Package initialize provides functions to initialize some common fields and types.
Package initialize provides functions to initialize some common fields and types.
ivory
Package ivory is a collection of resources that interact with IvorySQL or provide functionality that makes it easier for other resources to interact with IvorySQL.
Package ivory is a collection of resources that interact with IvorySQL or provide functionality that makes it easier for other resources to interact with IvorySQL.
naming
Package naming provides functions and constants for the ivory-operator naming and labeling scheme.
Package naming provides functions and constants for the ivory-operator naming and labeling scheme.
patroni
Package patroni provides clients, utilities and resources for configuring and interacting with Patroni inside of a IvorySQL cluster
Package patroni provides clients, utilities and resources for configuring and interacting with Patroni inside of a IvorySQL cluster
pki
Package pki provides types and functions to support the public key infrastructure of the Ivory Operator.
Package pki provides types and functions to support the public key infrastructure of the Ivory Operator.
pkg
apis/ivory-operator.ivorysql.org/v1beta1
Package v1beta1 contains API Schema definitions for the ivory-operator v1beta1 API group +kubebuilder:object:generate=true +groupName=ivory-operator.ivorysql.org
Package v1beta1 contains API Schema definitions for the ivory-operator v1beta1 API group +kubebuilder:object:generate=true +groupName=ivory-operator.ivorysql.org

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL