Skip to content

furyctl is the KFD (Kubernetes Fury Distribution) lifecycle manager

License

Notifications You must be signed in to change notification settings

sighupio/furyctl

Repository files navigation

Furyctl

Furyctl is package manager for Fury distribution. It’s simple to use and reads a single Furyfile to download packages you need. Fury distribution offers three types of packages:

  • Bases : Sets of Kustomize bases to deploy basic components in Kubernetes
  • Modules: Terraform modules to deploy kubernetes infrastructure and it’s dependencies
  • Roles: Ansible roles for deploying, configuring and managing a Kubernetes infrastructure

Furyfile

Furyfile is a simple YAML formatted file where you list which packages(and versions) you want to have. You can omit a type if you don't need any of its packages. An example Furyfile with packages listed would be like following:

# all sections are optional

# map of prefixes and versions used to force a specific version for all the matching roles/modules/bases
versions:
  # e.g. will force version v1.15.4 if the name matches "aws*"
  aws: v1.15.4
  monitoring: master

roles:
  - name: aws/etcd
  - name: aws/kube-control-plane

modules:
  - name: aws/aws-vpc
  - name: aws/aws-kubernetes

bases:
  - name: monitoring
  - name: logging
  # versions can be overridden if needed by specifying them for each package
    version: master

You can get all packages in a group by using group name (like logging) or single packages under a group (like monitoring/prometheus-operator).

Install

Github Releases

You can find furyctl binaries on the Releases page.

Supported architectures are (64 bit):

  • linux
  • darwin

Download right binary for your architecture and add it to your PATH. Assuming it's downloaded in your ~/Downloads folder, you can run following commands (replacing {arch} with your architecture):

chmod +x  ~/Downloads/furyctl-{arch}-amd64 && mv ~/Downloads/furyctl-{arch}-amd64 /usr/local/bin/furyctl

Homebrew

If you are a macOS user:

$ brew tap sighupio/furyctl
$ brew install furyctl

Usage

  • Once you installed furyctl binary you can see available commands with furyctl --help:
$ furyctl --help

A command line tool to manage cluster deployment with kubernetes

Usage:
  furyctl [command]

Available Commands:
  help         Help about any command
  install      Download dependencies specified in Furyfile.yml
  printDefault Prints a basic Furyfile used to generate an INFRA project
  version      Prints the client version information

Flags:
  -h, --help     help for furyctl
  -t, --toggle   Help message for toggle

Use "furyctl [command] --help" for more information about a command.
  • To install packages, you can run furyctl install (within the same directory where your Furyfile is located):
$ furyctl install

2019/02/04 17:46:07 ----
2019/02/04 17:46:07 SRC:  [email protected]:sighup-io/fury-kubernetes-monitoring//katalog/prometheus-operator?ref=master
2019/02/04 17:46:07 DST:  vendor/katalog/monitoring/prometheus-operator
2019/02/04 17:46:07 ----
2019/02/04 17:46:07 SRC:  [email protected]:sighup-io/fury-kubernetes-monitoring//katalog/prometheus-operator?ref=master
2019/02/04 17:46:07 DST:  vendor/katalog/monitoring/prometheus-operator
...

You will find your packages under vendor/{roles,modules,katalog} directories created where you called furyctl.

  • You can get furyctl version with furyctl version:
$ furyctl version

Furyctl version  0.1.0
  • You can print a Furyfile example with furyctl printDefault:
$ furyctl printDefault

roles:
  - name: aws/kube-node-common
    version: v1.0.0

bases:
  - name: monitoring/prometheus-operated
    version: v1.0.0
  - name: monitoring/prometheus-operator
    version: v1.0.0