The Juju bundle for the Canonical Distribution of Kubernetes
Python Makefile
Latest commit 32dd222 Jan 30, 2017 @mbruzek mbruzek committed on GitHub Merge pull request #197 from juju-solutions/rye/document-manual-resou…
…rces

document manual resource installation
Permalink
Failed to load latest commit information.
fragments document manual resource installation Jan 30, 2017
tests merging master Jan 13, 2017
.gitignore
Makefile
README.md merge master Jan 13, 2017
bundle move bundler to root Jan 13, 2017

README.md

Bundle Builder for CDK

The bundle script will allow you to build CDK bundles out of bundle fragments (found in the fragments subdirectory). Here's what building the default bundle looks like:

./bundle -o ./bundles/cdk-flannel k8s/cdk cni/flannel

This will compose the fragments into a single bundle and version them according to the given channel, which by default is stable. Additionally, a bundle README.md will be generated by concatenating all the fragment README.md's in the order given.

Options

Channel

You can select a channel using the --channel or -c option. Valid options are stable, unstable, edge, and local.

Example

./bundle -o ./bundles/core-flannel -c edge k8s/core cni/flannel

Note: for this to work, the fragment charms must be public for the given channel.

The local channel can be used to generate a bundle wherein all the charms are referenced locally. The --localpath or -l option can be used to set the path for the location of all the charms. All the charms must be located in the same path for the local channel to work. By default, --localpath is set to /home/ubuntu/builds.

Output directory

You can set the location for the resulting bundle.yaml and README.md with the --outputdir or -o flag.

Example

./bundle -o foo k8s/core cni/flannel

Note: bundle will not overwrite existing bundle.yaml and README.md files. If you provide a location that contains these files, bundle will abort.

Building all the bundles

This repo includes a makefile that will produce all known bundles. The bundles will be placed in the bundles directory of the root of this repo.

make

Fragments

The fragments directory is laid out so:

fragments
├── cni
│   └── flannel
│       ├── bundle.yaml
│       └── README.md
├── k8s
│   ├── cdk
│   │   ├── bundle.yaml
│   │   └── README.md
│   └── core
│       ├── bundle.yaml
│       └── README.md
└── monitor
    └── elastic
        ├── bundle.yaml
        └── README.md

When the user adds the k8s/cdk fragment, they're grabbing the bundle.yaml and README.md from fragments/k8s/cdk.

Each fragment is simply a bundle with two constraints:

  • It needs to interoperate with a k8s fragment by setting up relations.
  • It must not define versions for charms.

Here's a simple example from the flannel fragment:

series: xenial
services:
  "flannel":
    charm: "cs:~containers/flannel"
relations:
  - - "flannel:etcd"
    - "etcd:db"
  - - "flannel:cni"
    - "kubernetes-master:cni"
  - - "flannel:cni"
    - "kubernetes-worker:cni"