kops/upup
Justin Santa Barbara 095bf95fc9 upup: simple command to delete (AWS) clusters
A relatively dumb retry strategy to work around dependencies, but it
works and it is difficult to do _much_ better.
2016-05-30 17:57:40 -04:00
..
cmd upup: simple command to delete (AWS) clusters 2016-05-30 17:57:40 -04:00
models Merge pull request #19 from justinsb/upup_keypair 2016-05-17 09:33:24 -07:00
pkg upup: simple command to delete (AWS) clusters 2016-05-30 17:57:40 -04:00
.gitignore Initial version of upup: cloudup & nodeup 2016-05-06 16:01:33 -04:00
DEVELOP.md Initial version of upup: cloudup & nodeup 2016-05-06 16:01:33 -04:00
Makefile Support for persistent disks, users & symlinks 2016-05-13 13:29:56 -04:00
README.md UpUp: AWS support 2016-05-09 13:08:27 -04:00
glide.lock Add glide dependency on cobra 2016-05-17 12:58:27 -04:00
glide.yaml Add glide dependency on cobra 2016-05-17 12:58:27 -04:00

README.md

UpUp - CloudUp & NodeUp

CloudUp and NodeUp are two tools that are aiming to replace kube-up: the easiest way to get a production Kubernetes up and running.

(Currently work in progress, but working. Some of these statements are forward-looking.)

Some of the more interesting features:

  • Written in go, so hopefully easier to maintain and extend, as complexity inevitably increases
  • Uses a state-sync model, so we get things like a dry-run mode and idempotency automatically
  • Based on a simple meta-model defined in a directory tree
  • Can produce configurations in other formats (currently Terraform & Cloud-Init), so that we can have working configurations for other tools also.

Bringing up a cluster

Build the code:

cd upup
make

For GCE: Set YOUR_GCE_PROJECT, then:

${GOPATH}/bin/cloudup --v=0 --logtostderr -cloud=gce -zone=us-central1-f -project=$YOUR_GCE_PROJECT -name=kubernetes -kubernetes-version=1.2.2

For AWS: Set AWS_PROFILE (if you need to select a profile for the AWS CLI to work), then:

${GOPATH}/bin/cloudup --v=0 --logtostderr -cloud=aws -zone=us-east-1c -name=kubernetes -kubernetes-version=1.2.2

If you have problems, please set --v=8 --logtostderr and open an issue, and ping justinsb on slack!

For now, we don't build a local kubectl file. So just ssh to the master, and run kubectl from there:

gcloud compute ssh kubernetes-master
...
kubectl get nodes
kubectl get pods --all-namespaces

Other interesting modes:

See changes that would be applied: ${GOPATH}/bin/cloudup --dryrun

Build a terrform model: ${GOPATH}/bin/cloudup $NORMAL_ARGS --target=terraform > tf/k8s.tf.json

How it works

Everything is driven by a local configuration directory tree, called the "model". The model represents the desired state of the world.

Each file in the tree describes a Task.

On the nodeup side, Tasks can manage files, systemd services, packages etc. On the cloudup side, Tasks manage cloud resources: instances, networks, disks etc.