Metadata-Version: 1.1
Name: kpm
Version: 0.12.1
Summary: KPM cli
Home-page: https://github.com/ant31/kpm
Author: Antoine Legrand
Author-email: 2t.antoine@gmail.com
License: Apache License version 2
Description: [![Build Status](https://travis-ci.org/kubespray/kpm.svg?branch=master)](https://travis-ci.org/kubespray/kpm) [![Code Climate](https://codeclimate.com/github/kubespray/kpm/badges/gpa.svg)](https://codeclimate.com/github/kubespray/kpm) [![Coverage Status](https://coveralls.io/repos/github/kubespray/kpm/badge.svg?branch=master)](https://coveralls.io/github/kubespray/kpm?branch=master)
        
        
        # KPM
        
        KPM is a tool to deploy and manage applications stack on kubernetes.
        
        KPM provides the glue between kubernetes resources (ReplicatSet, DaemonSet, Secrets...). it defines a package has a composition of kubernetes resources and dependencies to other packages.
        
        ## Key concepts
        
        ### Simplicity
        
        Keep it simple for both users and packagers.
        
        ### Declarative and idempotent
        
        Declare what should be deployed and let the system apply only required changes.
        
        ### Reproducible deployment
        
        For production and QA, control of each components is fundamental.
        Both, dependency declaration and version control in KPM allows to have a predictable application stack deployment.
        
        ### Dependencies management
        
        To propose 'ready-to-deploy' applications, the 'packager' can set a dependency list.
        
        ### Patch/Paramaterization
        
        KPM encourages to use and reuse directly the 'upstream' package of a component and adapt it to its own requirement:
        - <b>Templates:</b> quickly replace values in a resource via jinja2 templates.
        - <b>Patch:</b>  While template is good, it's not enough. Sometime the value to be edited is not parametrized. In such case, KPM proposes to apply a 'patch' on the resource
        
        ### Packages Hub
        Quickly compose an application by searching and pick existing components from a registry.
        
        ## Quick start
        
        ### Deploy application
        
        In this example we will deploy [rocket.chat](https://github.com/RocketChat/Rocket.Chat) an opensource webchat platform:
        
        ```
        $ pip install kpm
        $ kpm deploy ant31/rocketchat --namespace rocket-chat
        -> Deploying ant31/rocketchat
         app               version type  name         namespace   status
        ------------------ ------- ---- ------------ ----------- --------
        ant31/mongodb       1.0.0   svc  mongodb      rktchat     changed
        ant31/mongodb       1.0.0   rc   mongodb      rktchat     changed
        ant31/rocketchat    1.2.0   svc  rocketchat   rktchat     changed
        ant31/rocketchat    1.2.0   rc   rocketchat   rktchat     changed
        ```
        
        ## Install kpm
        
        ##### From Pypi
        
        kpm is a python2 package and available on pypi
        ```
        $ sudo pip install kpm -U
        ````
        
        ##### From git
        
        ```
        git clone https://github.com/kubespray/kpm.git kpm-cli
        cd kpm-cli
        sudo make install
        ```
        
        ### Configuration
        
        KPM uses `kubectl` to communicate with the kubernetes cluster.
        Check if the cluster is accessible:
        ```bash
        $ kubectl version
        Client Version: version.Info{Major:"1", Minor:"1", GitVersion:"v1.1.4", GitCommit:"a5949fea3a91d6a50f40a5684e05879080a4c61d", GitTreeState:"clean"}
        Server Version: version.Info{Major:"1", Minor:"1", GitVersion:"v1.1.4", GitCommit:"a5949fea3a91d6a50f40a5684e05879080a4c61d", GitTreeState:"clean"}
        
        ```
        
        ### Customize an existing package
         1. Create a new package
         2. Edit manifest
         3. Change variables
         4. Patch custom metric
        5. Upload package
         6.  login
         7.  push
         8.Test
        
        ## Account registration
        ### Signup
        ### Login/Logout
        
        ## Search and deploy a package
        ### List a user package
        #### Show/Pull
        ### deploy
        
        ## Create a new package
        The quickest way to get started is to use the command `new`:
        
        ```
        kpm new namespace/packagename [--with-comments]
        ```
        It creates the directory namespace/packagename
        
        #### Directory structure
        A package is composed of a `templates` directory and a `manifest.yaml`.
        ```
        .
        ├── manifest.yaml
        └── templates
            ├── heapster-rc.yaml
            └── heapster-svc.yaml
        ```
        Optionaly, it's possible to add a `README.md` and a `LICENSE`.
        
        #### Templates
        The `templates` directory contains the kubernetes resources to deploy.
        It accepts every kind of resources (rc,secrets,pods,svc...).
        
        Resources can be templated with Jinja2.
        
        >  We recommend to parametrize only values that should be overrided.
        >  Having a very light templated resources improve readability and quickly point to users which values are
        >  important to look at and change. User can use 'patch' to add their custom values.
        
        You can declare the deploy order inside the `manifest.yaml`
        
        #### Manifest
        The `manifest.yaml` contains the following keys:
        
        - package: metadata around the package and the packager
        - variables: map jinja2 variables to default value
        - resources: the list of resources, `file` refers to a filename inside the 'template' directory
        - deploy: list the dependencies, a special keyword `$self` indicate to deploy current package.
        
        ```yaml
        package:
          name: ant31/heapster
          author: "Antoine Legrand <2t.antoine@gmail.com>"
          version: 0.18.2
          description: Kubernetes data
          license: MIT
        
        variables:
          namespace: kube-system
          replicas: 1
          image: "gcr.io/google_containers/heapster:v0.18.2"
          svc_type: "NodePort"
        
        resources:
          - file: heapster-svc.yaml
            name: heapster
            type: svc
        
          - file: heapster-rc.yaml
            name: heapster
            type: rc
        
        deploy:
          - name: $self
        ```
        #### Publish
        
        ## Compose a package
        ### Dependency
        #### Show manifest
        #### variables
        #### Patch
        #### Shards
        
        ## Clustered applications/Shards
        ### Introduction
        ### Sharded: yes
        ### Shard list
        
        
        =======
        History
        =======
        
        0.1.0 (2016-2-22)
        ------------------
        
        * First release on PyPI.
        
Keywords: kpm,kpmpy,kubernetes
Platform: UNKNOWN
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
