GithubHelp home page GithubHelp logo

coreos / kpm Goto Github PK

View Code? Open in Web Editor NEW
124.0 10.0 29.0 462 KB

KPM is a tool to deploy and manage application stacks on Kubernetes.

License: Apache License 2.0

Makefile 1.62% Python 73.69% Shell 0.23% JavaScript 10.31% HTML 10.92% CSS 3.24%

kpm's People

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

kpm's Issues

Shard count

proposal :

shardcount: 5
shards:
   - name: {{i}}

another one would e to transform shards into a hash:, and name shard list

resources:
  - name: etcd
    file: etcd-rc.yaml
    sharded: [new, existing]

shards:
  new:  
     count: 0..3
     nodes: 
         -  name: node{i} 
  existing:
     count: 3..5
         - name: node{i}

namespace: please use DNS delegation

This project looks great! I really appreciate the new approach.

One thing that I ask is that we not repeat the same mistake that the docker hub made making a default namespace that seems to be rooted in a single namespace: hub.kubespray.io.

The approach we are taking with the OCI Image format, that was taken with the appc format, and in the Go language is to use a DNS federated namespace that can be delegated. It is too early to say exactly how the OCI delegation will work but you can read about the appc delegation here: https://github.com/appc/spec/blob/master/spec/discovery.md

Happy to discuss further, I think this is really important work y'all are doing.

Private Registry / Hub

This looks really interesting! I would be interested in testing it out, but I would like to do so with my own private hub / registry. Is the source for the registry / hub available at all? I can't see any instructions for running your own.

Thanks!

Handle exceptions

Currently exceptions are not rescue.

As a user I don't want to see a backtrace for an 'expected' error:

i.e logging failed or unauthorized access should print a 'nice' message to the user

Packages CI platform

Propose a platform or a method to automaticaly deploy packages on a cluster to validate them.

Set variables from commandline/API

command separated a=b or multiple -x

  • kpm deploy --variables a=b,c=d
  • kpm deploy -x a=b -x c=d

or json data

  • kpm deploy --variables '{"a": "b", "c": "d"}'

Encourage/force to upgrade kpm-cli

At somepoint the kpm-cli may not be compatible with a version of the API.
In such case users should be asked to perform an upgrade and eventually reject all commands to force the upgrade.

This can be done by verifiing a header ?

Package with different status

Package would have different status at least:

  • dev
  • released
  1. A package in dev is restricted to collaborators/users with read permission, it is not available to other users. A package in dev mode can be force push
  2. Once a package is released it can't be force-push and it's available to all users

who am I command

Check the current logged account

commands proposal:
kpm login --whoami
or
kpm login --info
kpm whoami

machine readable output

currently output is by default a human readable.
Add an option to format the ouput:

kpm deploy package-name --output json

Users permissions

3 permissions level:

  • owner
  • collaborator (r/w)
  • user (r)

Add command to manage permissions:
proposal:

  • set permissions
$ kpm set-perms --user targetuser --as collaborator package-name
-> Added targetuser as collbarator to package-name
  • check permissions
$ kpm perms package-name`
user           perm
--------       -----------
ant31          owner
smana          collaborator
abodelot       user

Lint/Validate packages

Package should failed early.

Currently a package can be submitted but may fail later (i.e bad variable resolution)

  • Validate a package on create/update
  • Fail with an explicit error message to help the packager to fix the package.

list pre-release and stable versions

by default kpm list display latest stable verions

add an options to list latest 'pre-release' versions (semver):

$ kpm list --pre
app                               version      downloads
--------------------------------  ---------  -----------
kube-system/kube-ui               0.5.0-RC.4              38
logstash/logstash                 2.2.0-beta.1               31

Reduce dependencies

Filters have introduced crypto and more dep.

Should we have a separate repo for those filters ?

pip install kpm
pip install kpm-filters

Use PATCH or apply to update resources

Currently kpm replace the resource (delete/create).
Performing a PATCH seems a better default.

To keep the previous behavior (replace) available add a key in the manifest:

resources:
  - name: kube-ui-rc.yaml
    type: rc
    strategy: replace  

- name: resource.yaml
  type: deployment
  strategy: update   # Default  behavior

Packages

  • k8s-elasticsearch/
  • k8s-etcd/
  • k8s-fabric8/
  • k8s-heapster/
  • k8s-influxdb/
  • k8s-kubedash/
  • k8s-kubedns/
  • k8s-kube-logstash/
  • k8s-kube-ui/
  • k8s-memcached/
  • k8s-pgbouncer/
  • k8s-postgres/
  • k8s-rabbitmq/
  • k8s-redis/
  • k8s-kibana
  • k8s-rabbitmq
  • k8s-kube-logstash

Initiate new registries etcd

On a fresh new registry:

 curl http://195.154.150.206:30958/api/v1/packages                                                                                    1 21:17:34
{
  "error": {
    "code": "package-not-found", 
    "details": {
      "package": "/kpm"
    }, 
    "message": "Package not found: /kpm"
  }
}%  

Private packages

A user may want to keep a package private and share it only with a list of users ( #19 )

command:
kpm config --privacy private package-name

question: private by default?

Deploy multiple applications natively

It would be nice to be able to use a file to define multiple applications and the associated command to use it.
Something similar to pip requirements files.

Offline mode

  • Package should be stored in some cache after being fetch.
  • kpm-backend can act as a registry mirror server side and take offline package by default
  • kpm-cli should allow to deploy from a package tarball: `kpm deploy --file package.tar

Inside the tarball there is a package.json that is the same received from API.

version command

Display current:
kpm version
kpm-api version

kpm versions

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.