MCPcopy Index your code
hub / github.com/Aptomi/k8s-app-engine

github.com/Aptomi/k8s-app-engine @v0.1.15

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.1.15 ↗ · + Follow
1,314 symbols 4,438 edges 294 files 690 documented · 53% updated 7y agov0.1.15 · 2018-06-25★ 16456 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
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

  • Aptomi: installation - https://asciinema.org/a/163250
  • Aptomi: point to Kubernetes cluster - https://asciinema.org/a/163252
  • Aptomi: defining & running applications - https://asciinema.org/a/163258
  • Aptomi: updating a service instance - https://asciinema.org/a/163262
  • Aptomi: deleting service instances - https://asciinema.org/a/163269

Youtube

  • Detailed Demo - http://www.youtube.com/watch?v=HL4RwoBnuTc
  • OpenDev CI/CD 2018 (Vancouver) - https://www.youtube.com/watch?v=GVB3kKocKi4

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.

Extension points exported contracts — how you extend this code

ClusterPlugin (Interface)
ClusterPlugin is a definition of cluster plugin which takes care of cluster operations such as validation in the cloud. [6 …
pkg/plugin/interfaces.go
Interface (Interface)
Interface interface for all actions which perform actual state updates [6 implementers]
pkg/engine/apply/action/action.go
Object (Interface)
Object represents minimal object that could be operated in runtime with only Kind being mandatory characteristic [6 implementers]
pkg/runtime/object.go
Claim (Interface)
Claim is the interface for managing Claim [5 implementers]
pkg/client/core.go
UserLoader (Interface)
UserLoader is an interface which allows aptomi to load user data from different sources (e.g. file, LDAP, AD, etc) [5 …
pkg/external/users/user_loader.go
Base (Interface)
Base interface represents unified base object that could be part of the policy
pkg/lang/base.go
Base (Interface)
Base is the interface for all configs used in Aptomi (e.g. client config, server config)
pkg/config/base.go
CodePlugin (Interface)
CodePlugin is a definition of deployment plugin which takes care of creating, updating and destroying component instance [4 …
pkg/plugin/interfaces.go

Core symbols most depended-on inside this repo

Equal
called by 143
pkg/lang/labelset.go
GetTypeKind
called by 69
pkg/runtime/info.go
GetKey
called by 62
pkg/engine/resolve/component_key.go
NewEntry
called by 57
pkg/event/event_log.go
New
called by 38
pkg/runtime/info.go
GetObject
called by 37
pkg/lang/policy.go
GetKind
called by 37
pkg/runtime/object.go
CriteriaTrue
called by 35
pkg/lang/builder/policy_builder.go

Shape

Method 673
Function 411
Struct 171
Interface 35
TypeAlias 18
FuncType 6

Languages

Go97%
TypeScript3%

Modules by API surface

pkg/engine/resolve/policy_resolver_node_events.go30 symbols
pkg/lang/validation.go29 symbols
pkg/visualization/graph_nodes.go26 symbols
pkg/lang/builder/policy_builder.go26 symbols
pkg/engine/apply/benchmark_test.go25 symbols
webui/src/lib/api.js23 symbols
pkg/client/core.go21 symbols
pkg/lang/validation_test.go20 symbols
pkg/runtime/store/core.go19 symbols
pkg/plugin/interfaces.go18 symbols
pkg/engine/apply/engine_apply_test.go18 symbols
pkg/engine/resolve/policy_resolver_node.go17 symbols

For agents

$ claude mcp add k8s-app-engine \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact