Giter Club home page Giter Club logo

k8s-app-engine's Introduction

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

Engine 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. It supports components packaged using Helm, ksonnet, k8s YAMLs, and any other Kubernetes-friendly way!

This 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.

It 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

You can also read this blog post about the project.

Demos

Asciinema

Youtube

Table of contents

Why?

Quickstart

Step #1: Installation

The simplest installation mode is Compact, but you may pick one that suits your needs:

Installation Mode Complexity Description
Compact Easy Installation on local machine (binaries or in a single Docker container)
Kubernetes Medium Deployed to k8s via Helm chart

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

Installation Mode Complexity Description
Concepts Easy Use this only if you want get familiar with the key 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 on existing k8s cluster
Google Kubernetes Engine If you have a Google account and free credits Configure on GKE
k8s / Minikube Single-node, local machine with 16GB+ RAM Configure on Minikube
k8s / Docker For Mac Single-node, local machine with 16GB+ RAM Configure on Docker For Mac

Step #3: Running Examples

Once the 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

Components

See artchitecture documentation

Language

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 the project 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.

k8s-app-engine's People

Contributors

dinabelova avatar frostman avatar jeffertron avatar romangithub1024 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

k8s-app-engine's Issues

Refactor component keys

Have a way to define what constitutes a service key
4 standard fields + custom defined labels

Explicit:

  • service, context, allocation, ...

Implicit:

  • service (?) can define which params to include into the key

Implement global "rules of the land" scenarious

These are all global rules:

  1. Dev code never talks to Prod code

    • If you request a Dev instance of a service and it contains a reference to Prod instance of another service, it should not be allowed
  2. Dev code never gets deployed to Prod cluster

    • Will require introducing labels for k8s clusters
  3. Certain part of the organization is not allowed to deploy to certain k8s cluster

  4. Compromised user cannot access certain things (services, clusters, etc)

    • Note: this is at a global level, not at a context level
  5. Certain users and/or services always get deployed to certain k8s clusters

Delete is taking a long time (>3 minutes)

[aptomi] ./aptomi policy apply --debug 14:55:52 ☁ master ☂ ⚡
[Services]
Alice (ID=1)
[-] twitter-stats
[Components]
New instances: 0
Deleted instances: 19
Updated instances: 0
[Component Instances]
Use --verbose to see the list
[Applying changes]
[19/19] [====================================================================] 100% Time: 3m3s

Demo: make new slides

  1. new slide for the problem we are solving
    k8s adoption
    simplify
    visibility

  2. clarify our "insertion/integration point".
    If someone is willing to integrate Aptomi into their environment, where it's going to be inserted. E.g. in between Jenkins and k8s or where? Add a slide on this.

Crash when no context matched

F0526 17:43:50.694382 18272 policy.go:41] Cannot resolve usage: Cannot evaluate template {{ .Discovery.analytics_pipeline.kafka.kafka.url }}
exit status 255

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.