aptomi

module
v0.1.15 Latest Latest
Warning

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

Go to latest
Published: Jun 25, 2018 License: Apache-2.0

README

Tweet

Aptomi Logo

Release License Go Report Card Build Status Coverage Status Godoc GitHub last commit Slack Status

Aptomi is a platform for development teams that simplifies the roll-out and operation of container-based applications on Kubernetes. It introduces a service-centric abstraction, which allows users to compose applications from multiple connected components. Aptomi supports components packaged using Helm, ksonnet, k8s YAMLs, and any other Kubernetes-friendly way!

Aptomi's approach to application delivery becomes especially powerful in a multi-team setup, where components owned by different teams must be put together into a service. With ownership boundaries, Dev teams can specify multi-cluster and multi-env (e.g. dev, stage, prod) service behavior, as well as control the lifecycle and updates of their respective services.

Aptomi also provides contextual visibility into teams and services, allowing our users to visualize complex dependencies and accurately assess the impact of changes.

Overview

What is Aptomi

You can also read this blog post about the project.

Demos

Asciinema

Youtube

Table of contents

Why Aptomi?

Quickstart

Step #1: Installation

There are several ways to install Aptomi. The simplest one is Compact, but you may pick one that suits your needs:

Installation Mode Complexity Description
Compact Easy Aptomi will be installed on a local machine (binaries or in a single Docker container)
Kubernetes Medium Aptomi will be deployed on k8s via Helm chart

You can also install Aptomi in a stripped-down mode with a fake executor:

Installation Mode Complexity Description
Concepts Easy Use this only if you want get familiar with Aptomi's concepts, API and UI. App deployment to k8s is DISABLED

Step #2: Setting up k8s Cluster

You will need to have access to a k8s cluster to deploy apps from the provided examples.

Having a powerful k8s cluster with a good internet connection will definitely provide a better experience compared to a local, single-node k8s cluster. We consider GKE to be the best option if you don't have your own k8s cluster.

Kubernetes Cluster When to use How to run
Your own If you already have a k8s cluster set up Configure Aptomi to use an existing k8s cluster
Google Kubernetes Engine If you have a Google account and free credits Configure Aptomi to use GKE
k8s / Minikube Single-node, local machine with 16GB+ RAM Configure Aptomi to use Minikube
k8s / Docker For Mac Single-node, local machine with 16GB+ RAM Configure Aptomi to use Docker For Mac

Step #3: Running Examples

Once the Aptomi server is up and your k8s cluster is ready, you can get started by running the following examples:

Example Description
twitter-analytics Twitter Analytics Application, multiple services, multi-cloud, based on Helm
twitter-analytics-with-concourse-ci Twitter Analytics Application, integrated with Concourse CI/CD pipelines
guestbook K8S Guestbook Application, multi-cloud, based on K8S YAMLs

Step #4: Send us a note on Slack

Give us your feedback on #general in Slack Status. If you run into any issues, we are always happy to help you resolve them!

How It Works

Architecture

Aptomi Components

See artchitecture documentation

Language

Aptomi Language

See language documentation

How to contribute

The very least you can do is report a bug!

If you want to make a pull request for a bug fix or contribute a feature, see our Development Guide for how to develop, run and test your code.

We are always looking for feedback on how to make Aptomi better. Join our Slack to discuss Slack Status.

Roadmap

Feature Backlog, as well as weekly project milestones, are good places to look at the roadmap items.

If you have any questions, please contact us on Slack Status.

Directories

Path Synopsis
cmd
aptomi
Package aptomi is an implementation of command-line interface for Aptomi server (pkg/server).
Package aptomi is an implementation of command-line interface for Aptomi server (pkg/server).
aptomictl
Package aptomictl is an implementation of command-line interface for Aptomi client (pkg/client).
Package aptomictl is an implementation of command-line interface for Aptomi client (pkg/client).
pkg
api
Package api implements REST API support for Aptomi, including user-level and admin-level calls.
Package api implements REST API support for Aptomi, including user-level and admin-level calls.
config
Package config provides support for Aptomi configuration - Server config, Client config, and their common sections (API config)
Package config provides support for Aptomi configuration - Server config, Client config, and their common sections (API config)
engine
Package engine implements core engine of Aptomi, which does policy resolution (resolve), diff calculation between states (diff), and state enforcement by applying actions (apply).
Package engine implements core engine of Aptomi, which does policy resolution (resolve), diff calculation between states (diff), and state enforcement by applying actions (apply).
engine/actual
Package actual defines a state updater, which reacts to changes in actual state done by engine applier.
Package actual defines a state updater, which reacts to changes in actual state done by engine applier.
engine/apply
Package apply implements state enforcer, which executes a list of actions to move from actual state to desired state, performing actual deployment of services and configuration of the underlying cloud components.
Package apply implements state enforcer, which executes a list of actions to move from actual state to desired state, performing actual deployment of services and configuration of the underlying cloud components.
engine/apply/action
Package action defines a base action (actions get born a result of policy diff calculation), as well as context which gets passed to all actions during apply phase.
Package action defines a base action (actions get born a result of policy diff calculation), as well as context which gets passed to all actions during apply phase.
engine/apply/action/component
Package component defines all component-specific actions, which get generated by the policy diff when component changes occur for specific component instances.
Package component defines all component-specific actions, which get generated by the policy diff when component changes occur for specific component instances.
engine/diff
Package diff allows Aptomi to determine the difference between actual state (running on the cloud) and desired state (that Aptomi wants to enforce), generating a list of actions to reconcile the difference.
Package diff allows Aptomi to determine the difference between actual state (running on the cloud) and desired state (that Aptomi wants to enforce), generating a list of actions to reconcile the difference.
engine/progress
Package progress implements progress indicators, which are used during state enforcement while running actions and plugins to estimate progress and show completion percentage to the user.
Package progress implements progress indicators, which are used during state enforcement while running actions and plugins to estimate progress and show completion percentage to the user.
engine/resolve
Package resolve is a heart of Aptomi that performs policy resolution, taking policy and consumption claims as input, producing a set of components to be instantiated in the cloud (desired state) as output, along with their discovery parameters, code parameters, and component instance graph.
Package resolve is a heart of Aptomi that performs policy resolution, taking policy and consumption claims as input, producing a set of components to be instantiated in the cloud (desired state) as output, along with their discovery parameters, code parameters, and component instance graph.
errors
Package errors defines custom errors which are widely used across Aptomi code base.
Package errors defines custom errors which are widely used across Aptomi code base.
event
Package event implements support for Aptomi Event Logs and saving them to console, memory, and external stores (BoltDB).
Package event implements support for Aptomi Event Logs and saving them to console, memory, and external stores (BoltDB).
external
Package external implements support for all pluggable data sources which are external to Aptomi, such as users and secrets.
Package external implements support for all pluggable data sources which are external to Aptomi, such as users and secrets.
external/secrets
Package secrets implements support for retrieving user Secrets from external sources (File).
Package secrets implements support for retrieving user Secrets from external sources (File).
external/users
Package users implements support for retrieving Users and their labels from external sources (LDAP, File).
Package users implements support for retrieving Users and their labels from external sources (LDAP, File).
lang
Package lang provides core constructs for describing Aptomi policy, as well as core structures for processing policy.
Package lang provides core constructs for describing Aptomi policy, as well as core structures for processing policy.
lang/builder
Package builder provides simple and easy-to-use way to construct Aptomi Policy in the source code, primarily for unit tests.
Package builder provides simple and easy-to-use way to construct Aptomi Policy in the source code, primarily for unit tests.
lang/expression
Package expression provides support for evaluating expressions in Aptomi, with support for caching compiled expressions.
Package expression provides support for evaluating expressions in Aptomi, with support for caching compiled expressions.
lang/template
Package template provides support for evaluating text templates in Aptomi, with support for caching compiled templates.
Package template provides support for evaluating text templates in Aptomi, with support for caching compiled templates.
lang/yaml
Package yaml provides support for marshalling YAML objects and loading/unmarshalling them from YAML files.
Package yaml provides support for marshalling YAML objects and loading/unmarshalling them from YAML files.
plugin
Package plugin introduces plugins for Aptomi engine such as cluster (kubernetes) and code (helm) plugins.
Package plugin introduces plugins for Aptomi engine such as cluster (kubernetes) and code (helm) plugins.
plugin/helm
Package helm implements support for Helm plugin, which can deploy Helm charts onto k8s clusters via Helm API.
Package helm implements support for Helm plugin, which can deploy Helm charts onto k8s clusters via Helm API.
runtime/store/core
Package core allows to persist Aptomi engine objects into the object store.
Package core allows to persist Aptomi engine objects into the object store.
server
Package server implements Aptomi server, which serves UI front-end, API calls, as well as does policy resolution & continuous state enforcement.
Package server implements Aptomi server, which serves UI front-end, API calls, as well as does policy resolution & continuous state enforcement.
util
Package util contains various utility methods for working with data (slice, map, nested map, string, time) as well as system-level primitives (files, exec).
Package util contains various utility methods for working with data (slice, map, nested map, string, time) as well as system-level primitives (files, exec).
version
Package version allows to capture and store information about Aptomi binary (version, commit, date) so that we know when and how it was built.
Package version allows to capture and store information about Aptomi binary (version, commit, date) so that we know when and how it was built.
visualization
Package visualization implements Aptomi policy & resolution data visualization using network-based diagrams for visjs
Package visualization implements Aptomi policy & resolution data visualization using network-based diagrams for visjs

Jump to

Keyboard shortcuts

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